Revision 388

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/DynStruct.java
30 30

  
31 31

  
32 32
/**
33
 * @author <a href="mailto:jjdelcerro@gvsig.org">Joaqu?n Jos? del Cerro</a>
34
 * @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a>
33
 * @author <a href="mailto:jjdelcerro@gvsig.org">Joaqu�n Jos� del Cerro</a>
34
 * @author <a href="mailto:cordin@disid.com">C�sar Ordi�ana</a>
35 35
 */
36 36
public interface DynStruct {
37 37

  
......
157 157

  
158 158
    void extend(String structName);
159 159

  
160
    /**
161
     * 
162
     * Removes a given dynStruct from the current superDynClasses of this dynClass. If it is not contained, does nothing.
163
     *  
164
     * @param dynStruct the dynStruct to be removed.
165
     */
166
    void remove(DynStruct superDynStruct);
167

  
168

  
160 169
    DynStruct[] getSuperDynStructs();
161 170

  
162 171
    boolean isInstance(DynObject dynObject);
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DefaultDynClass.java
173 173
    public void consolide() {
174 174
        // Use classes and decalredFieldsMap to update all.
175 175

  
176
        // Actualize superClasses array
176
        // Updates superClasses array
177 177
        this.superClasses =
178 178
            (DefaultDynClass[]) buildSuperDynClassSet().toArray(
179 179
                new DefaultDynClass[] {});
180 180

  
181
        // Actualize declaredFields array
181
        // Updates declaredFields array
182 182
        this.declaredFields =
183 183
            (DynField[]) this.declaredFieldsMap.values().toArray(
184 184
                new DynField[] {});
185 185

  
186
        // Actualize declaredMethods array
186
        // Updates declaredMethods array
187 187
        this.declaredMethods =
188 188
            (DynMethod[]) this.declaredMethodsMap.values().toArray(
189 189
                new DynMethod[] {});
190 190

  
191
        // Actualize fieldsMap
191
        // Updates fieldsMap
192 192
        this.fieldsMap = new LinkedHashMap();
193 193
        int index = 0;
194 194
        for (int i = 0; i < this.declaredFields.length; i++) {
......
207 207
            }
208 208
        }
209 209

  
210
        // Actualize methodsMap
210
        // Updates methodsMap
211 211
        this.methodsMap = new LinkedHashMap();
212 212
        index = 0;
213 213
        for (int i = 0; i < this.declaredMethods.length; i++) {
......
226 226
            }
227 227
        }
228 228

  
229
        // Actualize fields array
229
        // Updates fields array
230 230
        this.fields = new DynField[this.fieldsMap.size()];
231 231
        int i = 0;
232 232
        Iterator it = this.fieldsMap.values().iterator();
......
236 236
            fields[i++] = field;
237 237
        }
238 238

  
239
        // Actualize methods array
239
        // Updates methods array
240 240
        this.methods = new DynMethod[this.methodsMap.size()];
241 241
        i = 0;
242 242
        it = this.methodsMap.values().iterator();
......
246 246
            methods[i++] = method;
247 247
        }
248 248

  
249
        // Actualize superClassesMap
249
        // Updates superClassesMap
250 250
        this.superClassesMap = new HashMap();
251 251
        for (i = 0; i < this.superClasses.length; i++) {
252 252
            this.superClassesMap.put(this.superClasses[i].getFullName(),
......
310 310
		return extended;
311 311
	}
312 312

  
313
	public void extendAll(String[] structNames){
314
		if (structNames == null)
315
			return;
313 316

  
317
		for (int i=0;i<structNames.length;i++){
318
			 DynStruct dynStruct = manager.get(structNames[i]);
319
			 if (dynStruct == null) {
320
				 throw new DynClassNotFoundException(structNames[i]);
321
			 }
322
			 if (this.classes.containsKey(dynStruct.getFullName())) {
323
				 continue;
324
			 }
325
			 this.classes.put(dynStruct.getFullName(), dynStruct);	 
326
		}
327
		
328
		this.forceConsolide();
329
	}
330

  
314 331
    public void extend(DynStruct dynStruct) {
315 332
        if (this.classes.containsKey(dynStruct.getFullName())) {
316 333
            return;
......
319 336
        this.forceConsolide();
320 337
    }
321 338

  
322
    public void extend(String structame) {
323
        DynClass dynClass = manager.get(structame);
339
    public void extend(String structName) {
340
        DynClass dynClass = manager.get(structName);
324 341
        if (dynClass == null) {
325
            throw new DynClassNotFoundException(structame);
342
            throw new DynClassNotFoundException(structName);
326 343
        }
327 344
        extend(dynClass);
328 345
    }
......
497 514

  
498 515
    public void removeDynMethod(String name) {
499 516
        // TODO Auto-generated method stub
500

  
501 517
    }
502 518

  
503 519
    public void validate(DynObject object) throws DynObjectValidateException {
......
730 746
        Set superClassesSet = buildSuperDynClassSet();
731 747
        return isExtendable(superClassesSet, dynStruct);
732 748
    }
749

  
750
	private void removeDynStruct(DynStruct superDynStruct) {
751
		if (!this.classes.containsKey(superDynStruct.getFullName())) {
752
			this.classes.remove(superDynStruct.getFullName());
753
        }
754
	}
755

  
756
	public void remove(DynStruct superDynStruct) {
757
		if (superDynStruct!=null){
758
			this.removeDynStruct(superDynStruct);
759
			this.consolide();
760
		}
761
	}
762
	
763
	public void removeAll(DynStruct[] superDynStruct){
764
		if (superDynStruct!=null){
765
			for (int i=0; i<superDynStruct.length;i++){
766
				removeDynStruct(superDynStruct[i]);
767
			}
768
			this.consolide();			
769
		}
770
	}
771

  
772
	public void extend(DynStruct[] structs) {
773
		if (structs!=null){
774
			for (int i=0; i<structs.length;i++){
775
				extend(structs[i]);
776
			}
777
			this.consolide();			
778
		}
779
	}
733 780
}

Also available in: Unified diff