Revision 9512 org.gvsig.online/trunk/org.gvsig.online/org.gvsig.online.lib/org.gvsig.online.lib.impl/src/main/java/org/gvsig/online/lib/impl/workspace/ChangesImpl.java

View differences:

ChangesImpl.java
27 27
import javax.swing.event.ChangeListener;
28 28
import org.gvsig.expressionevaluator.ExpressionBuilder;
29 29
import org.gvsig.expressionevaluator.ExpressionUtils;
30
import org.gvsig.fmap.dal.feature.EditableFeature;
30 31
import org.gvsig.fmap.dal.feature.Feature;
32
import org.gvsig.fmap.dal.feature.FeatureSet;
31 33
import org.gvsig.fmap.dal.feature.FeatureStore;
32 34
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper;
33 35
import org.gvsig.online.lib.api.workingcopy.OnlineChange;
......
43 45
import org.gvsig.tools.util.GetItemWithSize64;
44 46
import org.slf4j.Logger;
45 47
import org.slf4j.LoggerFactory;
46
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopyChanges;
48
import org.gvsig.online.lib.api.workingcopy.OnlineChanges;
47 49

  
48 50
/**
49 51
 *
......
51 53
 * @param <CHANGE>
52 54
 */
53 55
@SuppressWarnings("UseSpecificCatch")
54
public abstract class ChangesImpl<CHANGE extends OnlineChange> extends AbstractDisposable implements OnlineWorkingcopyChanges<CHANGE> {
56
public abstract class ChangesImpl<CHANGE extends OnlineChange> extends AbstractDisposable implements OnlineChanges<CHANGE> {
55 57
    
56 58
    private static final Logger LOGGER = LoggerFactory.getLogger(ChangesImpl.class);
57 59
    
......
73 75
    abstract protected void updateChange(FeatureStore store, CHANGE change);
74 76

  
75 77
    @Override
76
    public void addSelectionInterval(long start, long end) {
78
    public void addSelected(long selected) {
77 79
        try {
78 80
            FeatureStore store = this.changes.getFeatureStore();
79 81
            store.edit(FeatureStore.MODE_PASS_THROUGH);
80
            for (long i = start; i <= end; i++) {
81
                Feature feat = this.changes.getFeatureAt(i);
82
                CHANGE row = this.createChange(feat);
83
                row.setSelected(true);
84
                updateChange(store, row);
85
            }
82
            Feature feat = this.changes.getFeatureAt(selected);
83
            CHANGE row = this.createChange(feat);
84
            row.setSelected(true);
85
            updateChange(store, row);
86 86
            store.finishEditingQuietly();
87
            this.changes.reload();
87
            this.changes.reload(); //FIXME: modificar el paging helper para que no haga falta esto
88 88
            this.fireChanges();
89 89
        } catch (Exception ex) {
90 90
            LOGGER.warn("Can't add to selection.", ex);
......
92 92
    }
93 93

  
94 94
    @Override
95
    public void removeSelectionInterval(long start, long end) {
95
    public void removeSelected(long selected) {
96 96
        try {
97 97
            FeatureStore store = this.changes.getFeatureStore();
98 98
            store.edit(FeatureStore.MODE_PASS_THROUGH);
99
            for (long i = start; i <= end; i++) {
100
                Feature feat = this.changes.getFeatureAt(i);
101
                CHANGE row = this.createChange(feat);
102
                row.setSelected(false);
103
                updateChange(store, row);
104
            }
99
            Feature feat = this.changes.getFeatureAt(selected);
100
            CHANGE row = this.createChange(feat);
101
            row.setSelected(false);
102
            updateChange(store, row);
105 103
            store.finishEditingQuietly();
106
            this.changes.reload();
104
            this.changes.reload(); //FIXME: modificar el paging helper para que no haga falta esto
107 105
            this.fireChanges();
108 106
        } catch (Exception ex) {
109 107
            LOGGER.warn("Can't add to selection.", ex);
......
111 109
    }
112 110

  
113 111
    @Override
114
    public void setSelectionInterval(long start, long end) {
115
        SimpleTaskStatus status = ToolsLocator.getTaskStatusManager()
116
                .createDefaultSimpleTaskStatus("_Select_interval_changes");
117
        status.setAutoremove(true);
118
        status.add();
112
    public void setSelected(long selected) {
119 113
        try {
120
            status.setRangeOfValues(start, end);
121
            status.message("_Updating_selection");
122 114
            FeatureStore store = this.changes.getFeatureStore();
123 115
            store.edit(FeatureStore.MODE_PASS_THROUGH);
124 116
            store.update(this.selectedFieldName, false);
125
            
126
            for (long i = start; i <= end; i++) {
127
                Feature feat = this.changes.getFeatureAt(i);
128
                CHANGE row = this.createChange(feat);
129
                row.setSelected(true);
130
                updateChange(store, row);
131
                status.setCurValue(i);
132
            }
133
            
134
            status.message("_Finising_process");
117

  
118
            Feature sourceFeat = this.changes.getFeatureAt(selected);
119
            CHANGE row = this.createChange(sourceFeat);
120
            row.setSelected(true);
121
            updateChange(store, row);
122

  
123
            //TODO: Para quitar el reload de abajo
124
//            EditableFeature targetFeat = change.createFeature(store);
125
//            targetFeat.setUpdatable(true);
126
//            this.changes.update(targetFeature);
127

  
135 128
            store.finishEditingQuietly();
136
            status.message("_Reloading_changes");
137
            this.changes.reload();
138
            status.message("_Refresing");
129
            this.changes.reload(); //FIXME: modificar el paging helper para que no haga falta esto
139 130
            this.fireChanges();
140
            status.terminate();
141 131
        } catch (Exception ex) {
142 132
            LOGGER.warn("Can't process.", ex);
143
            status.message("Can't process changes ("+ex.getMessage()+")");
144
            status.abort();
145 133
        }
146 134
    }
147 135

  
......
158 146
            store.edit(FeatureStore.MODE_PASS_THROUGH);
159 147
            store.update(this.selectedFieldName, false);
160 148
            status.message("_Finising_process");
161
            store.finishEditingQuietly();
149
            store.finishEditing();
162 150
            status.message("_Reloading_changes");
163 151
            this.changes.reload();
164 152
            status.message("_Refresing");
......
207 195
            status.setRangeOfValues(0, this.size64());
208 196
            status.message("_Processing");
209 197
            FeatureStore store = this.changes.getFeatureStore();
198
            FeatureSet set = this.changes.getFeatureSet();
210 199
            store.edit(FeatureStore.MODE_PASS_THROUGH);
211
            
212 200
            while(rows.hasNext()){
213 201
                Long row = rows.next();
214
                Feature feat = this.changes.getFeatureAt(row);
215
                CHANGE change = this.createChange(feat);
202
                Feature sourceFeat = this.changes.getFeatureAt(row);
203
                CHANGE change = this.createChange(sourceFeat);
216 204
                if(action.test(change)){
217
                    updateChange(store, change);
205
                    EditableFeature targetFeat = change.createFeature(store);
206
                    targetFeat.setUpdatable(true);
207
                    set.update(targetFeat);
208
//                    updateChange(store, change);
218 209
                }
219 210
                status.incrementCurrentValue();
220 211
            }

Also available in: Unified diff