Revision 298 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/valuefield/DynObjectValueField.java
DynObjectValueField.java | ||
---|---|---|
46 | 46 |
|
47 | 47 |
/** |
48 | 48 |
* |
49 |
* Default {@link ValueField} implementation for {@link DynObject}s and {@link DynField}s. |
|
49 |
* Default {@link ValueField} implementation for {@link DynObject}s and |
|
50 |
* {@link DynField}s. |
|
50 | 51 |
* |
51 | 52 |
* @author 2010 - <a href="cordinyana@gvsig.org">C?sar Ordi?ana</a> - gvSIG Team |
52 |
* @author 2010 - <a href="mailto:reinhold@uji.es">Cristian Mart?n </a> - gvSIG Team |
|
53 |
* @author 2010 - <a href="mailto:reinhold@uji.es">Cristian Mart?n </a> - |
|
54 |
* gvSIG Team |
|
53 | 55 |
* @version $Id$ |
54 |
* |
|
56 |
*
|
|
55 | 57 |
*/ |
56 | 58 |
public class DynObjectValueField implements ValueField { |
57 | 59 |
|
58 |
private static final Logger LOG = LoggerFactory.getLogger(DynObjectValueField.class); |
|
59 |
|
|
60 |
private static final Logger LOG = |
|
61 |
LoggerFactory.getLogger(DynObjectValueField.class); |
|
62 |
|
|
60 | 63 |
private final DynObject parent; |
61 | 64 |
private final String fieldName; |
62 | 65 |
private Boolean isDynObject; |
... | ... | |
66 | 69 |
* Constructor. |
67 | 70 |
* |
68 | 71 |
* @param dynObject |
69 |
* the current DynObject value. |
|
72 |
* the current DynObject value.
|
|
70 | 73 |
* @param fieldName |
71 |
* the field name of the DynField element. |
|
74 |
* the field name of the DynField element.
|
|
72 | 75 |
*/ |
73 | 76 |
public DynObjectValueField(DynObject dynObject, String fieldName) { |
74 | 77 |
parent = dynObject; |
75 | 78 |
this.fieldName = fieldName; |
76 | 79 |
} |
77 | 80 |
|
78 |
private boolean isDynObject() { |
|
79 |
if (this.isDynObject == null) |
|
80 |
this.isDynObject = (getDynField().getType() == DataTypes.DYNOBJECT); |
|
81 |
return this.isDynObject; |
|
82 |
} |
|
83 |
|
|
84 | 81 |
/* |
85 | 82 |
* (non-Javadoc) |
86 | 83 |
* |
... | ... | |
94 | 91 |
/* |
95 | 92 |
* (non-Javadoc) |
96 | 93 |
* |
97 |
* @see org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getValue()
|
|
94 |
* @see ValueField#getDynField()
|
|
98 | 95 |
*/ |
99 |
public Object getValue() { |
|
100 |
String name = getFieldName(); |
|
101 |
Object value = parent.getDynValue(name); |
|
102 |
DynObjectManager dynManager = ToolsLocator.getDynObjectManager(); |
|
103 |
if ((value == null) && (isDynObject())) |
|
104 |
return dynManager.createDynObject(dynManager.get(this.getDynField() |
|
105 |
.getName())); |
|
106 |
return value; |
|
96 |
public DynField getDynField() { |
|
97 |
return parent.getDynClass().getDynField(fieldName); |
|
107 | 98 |
} |
108 | 99 |
|
109 | 100 |
/** |
110 |
* Returns the service name to be called to get the correspondent |
|
111 |
* JDynFieldComponent. |
|
101 |
* Returns the service name to be called to get the correspondent |
|
102 |
* JDynFieldComponent. |
|
103 |
* |
|
112 | 104 |
* @return |
113 | 105 |
*/ |
114 | 106 |
private String getFieldName() { |
115 | 107 |
String name = this.fieldName; |
116 | 108 |
String suffix = "-List-item"; |
117 | 109 |
// We have to remove this suffix if exists. |
118 |
if (name.endsWith(suffix)) |
|
110 |
if (name.endsWith(suffix)) {
|
|
119 | 111 |
return name.replace(suffix, ""); |
112 |
} |
|
120 | 113 |
return name; |
121 | 114 |
} |
122 | 115 |
|
123 | 116 |
/* |
124 | 117 |
* (non-Javadoc) |
125 | 118 |
* |
126 |
* @see |
|
127 |
* org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#setValue(java |
|
128 |
* .lang.Object) |
|
119 |
* @see ValueField#getFieldValue() |
|
129 | 120 |
*/ |
130 |
public void setFieldValue(Object value) { |
|
131 |
try { |
|
132 |
getDynField().validate(value); |
|
133 |
parent.setDynValue(fieldName, value); |
|
134 |
} catch (DynFieldValidateException e) { |
|
135 |
LOG.warn("[Validation Error]: Field '{}' not valid with value '{}'", getDynField().getName(),value); |
|
136 |
} |
|
121 |
public Object getFieldValue() { |
|
122 |
return parent.getDynValue(fieldName); |
|
137 | 123 |
} |
138 | 124 |
|
139 | 125 |
/* |
140 | 126 |
* (non-Javadoc) |
141 | 127 |
* |
142 |
* @see ValueField#getDynField()
|
|
128 |
* @see org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getValue()
|
|
143 | 129 |
*/ |
144 |
public DynField getDynField() { |
|
145 |
return parent.getDynClass().getDynField(fieldName); |
|
130 |
public Object getValue() { |
|
131 |
String name = getFieldName(); |
|
132 |
Object value = parent.getDynValue(name); |
|
133 |
DynObjectManager dynManager = ToolsLocator.getDynObjectManager(); |
|
134 |
if ((value == null) && (isDynObject())) { |
|
135 |
return dynManager.createDynObject(dynManager.get(this.getDynField() |
|
136 |
.getName())); |
|
137 |
} |
|
138 |
return value; |
|
146 | 139 |
} |
147 |
|
|
140 |
|
|
141 |
private boolean isDynObject() { |
|
142 |
if (this.isDynObject == null) { |
|
143 |
this.isDynObject = (getDynField().getType() == DataTypes.DYNOBJECT); |
|
144 |
} |
|
145 |
return this.isDynObject; |
|
146 |
} |
|
147 |
|
|
148 | 148 |
/* |
149 | 149 |
* (non-Javadoc) |
150 | 150 |
* |
151 |
* @see ValueField#getFieldValue() |
|
151 |
* @see |
|
152 |
* org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#setValue(java |
|
153 |
* .lang.Object) |
|
152 | 154 |
*/ |
153 |
public Object getFieldValue() { |
|
154 |
return parent.getDynValue(fieldName); |
|
155 |
public void setFieldValue(Object value) { |
|
156 |
try { |
|
157 |
getDynField().validate(value); |
|
158 |
parent.setDynValue(fieldName, value); |
|
159 |
} catch (DynFieldValidateException e) { |
|
160 |
LOG.warn( |
|
161 |
"[Validation Error]: Field '{}' not valid with value '{}'", |
|
162 |
getDynField().getName(), value); |
|
163 |
} |
|
155 | 164 |
} |
156 |
|
|
157 | 165 |
|
158 | 166 |
/* |
159 | 167 |
* (non-Javadoc) |
... | ... | |
162 | 170 |
*/ |
163 | 171 |
public void setValue(Object value) { |
164 | 172 |
// do nothing |
165 |
}
|
|
173 |
} |
|
166 | 174 |
} |
Also available in: Unified diff