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

View differences:

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&nbsp;</a>  - gvSIG Team
53
 * @author 2010 - <a href="mailto:reinhold@uji.es">Cristian Mart?n&nbsp;</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