Revision 36366 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/FeatureManager.java

View differences:

FeatureManager.java
69 69
    private ArrayList deleted = new ArrayList();//<FeatureID>
70 70
    private int deltaSize=0;
71 71
	private Map added = new LinkedHashMap();
72
	private Map addedAndDeleted = new LinkedHashMap();
72 73
	private HashMap modifiedFromOriginal=new HashMap();
73
    public FeatureManager(ExpansionAdapter expansionAdapter){
74
    
75
	public FeatureManager(ExpansionAdapter expansionAdapter){
74 76
    	this.expansionAdapter=expansionAdapter;
75 77
    }
76 78

  
77

  
78 79
    public Feature delete(FeatureReference id) {
79 80
        deleted.add(id);
80 81
		Integer num = (Integer) added.remove(id);
......
83 84
        	feature = (Feature)modifiedFromOriginal.remove(id);
84 85
		}else{
85 86
			feature = (Feature) expansionAdapter.getObject(num.intValue());
87
			addedAndDeleted.put(id, num);
86 88
		}
87 89
        deltaSize--;
88 90
        return feature;
......
150 152
    	//        Si no existe feature con ese id... ? retorna null ?
151 153
    	//        en EditedDefaultIterator se hace uso de ese comportamiento.
152 154
    	//
153
    	Integer intNum =((Integer) added.get(id));
155
    	Integer intNum = ((Integer) added.get(id));
154 156
    	if (intNum == null){
155 157
    		intNum =((Integer) modifiedFromOriginal.get(id));
156
        	if (intNum == null){
157
        		return null;
158
        	if (intNum == null){        		
159
        	    //If the feature has been added and deleted
160
        	    intNum = (Integer)addedAndDeleted.get(id);
161
        	    if (intNum == null){
162
        	        return null;
163
        	    }
158 164
        	}
159 165
    	}
160 166
        int num = intNum.intValue();
......
246 252
		modifiedFromOriginal.clear();
247 253
	    expansionAdapter.close();
248 254
	    deleted.clear();//<FeatureID>
255
	    addedAndDeleted.clear();
249 256
	    deltaSize=0;
250 257
	}
251 258

  
......
254 261
		return added.size()>0 || modifiedFromOriginal.size() > 0 || deleted.size() > 0;
255 262
	}
256 263

  
257

  
258
//	public Iterator newsFeaturesIterator(long index) {
259
//		if (index==0)
260
//			return newsFeaturesIterator();
261
//
262
//		return Arrays.asList(added.values()).listIterator((int)index);
263
//	}
264
//
265
//	public Iterator newsFeaturesIterator() {
266
//		return added.values().iterator();
267
//	}
268 264
	public Iterator getDeleted() {
269 265
		return new DeletedIterator();
270 266

  

Also available in: Unified diff