Revision 2694 org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/client/ChangesImpl.java

View differences:

ChangesImpl.java
31 31
import org.gvsig.tools.swing.api.ChangeListenerHelper;
32 32
import org.gvsig.tools.swing.api.ToolsSwingLocator;
33 33
import org.gvsig.tools.util.GetItemWithSize64;
34
import org.gvsig.vcsgis.client.tables.LocalChangesTable.LocalChangeRow;
35
import static org.gvsig.vcsgis.client.tables.LocalChangesTable.SELECTED;
36 34
import org.gvsig.vcsgis.lib.client.VCSGisWorkspace.Change;
37 35
import org.gvsig.vcsgis.lib.client.VCSGisWorkspace.Changes;
38 36
import org.slf4j.Logger;
......
41 39
/**
42 40
 *
43 41
 * @author gvSIG Team
42
 * @param <<error>>
44 43
 * @param <CHANGE>
45 44
 */
46 45
@SuppressWarnings("UseSpecificCatch")
47
public abstract class ChangesImpl<CHANGE> implements Changes<CHANGE> {
46
public abstract class ChangesImpl<CHANGE extends Change> implements Changes<CHANGE> {
48 47
    
49 48
    private static final Logger LOGGER = LoggerFactory.getLogger(ChangesImpl.class);
50 49
    
51 50
    final FeaturePagingHelper changes;
52 51
    ChangeListenerHelper changeListernerHelper; 
52
    private final String selectedFieldName;
53 53

  
54
    public ChangesImpl(GetItemWithSize64<Feature> changes) {
54
    public ChangesImpl(GetItemWithSize64<Feature> changes, String selectedFieldName) {
55 55
        this.changes = (FeaturePagingHelper) changes;
56 56
        this.changeListernerHelper = ToolsSwingLocator.getToolsSwingManager().createChangeListenerHelper();
57
        this.selectedFieldName = selectedFieldName;
57 58
        
58 59
    }
59 60

  
60
    abstract protected Change createChange(Feature f);
61
    
61
    abstract protected CHANGE createChange(Feature f);
62

  
63
    abstract protected void updateChange(FeatureStore store, CHANGE change);
64

  
62 65
    @Override
63 66
    public void addSelectionInterval(long start, long end) {
64 67
        try {
......
66 69
            store.edit(FeatureStore.MODE_PASS_THROUGH);
67 70
            for (long i = start; i <= end; i++) {
68 71
                Feature feat = this.changes.getFeatureAt(i);
69
                LocalChangeRow row = (LocalChangeRow) this.createChange(feat);
72
                CHANGE row = this.createChange(feat);
70 73
                row.setSelected(true);
71
                row.update(store);
74
                updateChange(store, row);
72 75
            }
73 76
            store.finishEditingQuietly();
74 77
            this.changes.reload();
......
85 88
            store.edit(FeatureStore.MODE_PASS_THROUGH);
86 89
            for (long i = start; i <= end; i++) {
87 90
                Feature feat = this.changes.getFeatureAt(i);
88
                LocalChangeRow row = (LocalChangeRow) this.createChange(feat);
91
                CHANGE row = this.createChange(feat);
89 92
                row.setSelected(false);
90
                row.update(store);
93
                updateChange(store, row);
91 94
            }
92 95
            store.finishEditingQuietly();
93 96
            this.changes.reload();
......
102 105
        try {
103 106
            FeatureStore store = this.changes.getFeatureStore();
104 107
            store.edit(FeatureStore.MODE_PASS_THROUGH);
105
            store.update(SELECTED, false);
108
            store.update(this.selectedFieldName, false);
106 109
            
107 110
            for (long i = start; i <= end; i++) {
108 111
                Feature feat = this.changes.getFeatureAt(i);
109
                LocalChangeRow row = (LocalChangeRow) this.createChange(feat);
112
                CHANGE row = this.createChange(feat);
110 113
                row.setSelected(true);
111
                row.update(store);
114
                updateChange(store, row);
112 115
            }
113 116
            
114 117
            store.finishEditingQuietly();
......
124 127
        try {
125 128
            FeatureStore store = this.changes.getFeatureStore();
126 129
            store.edit(FeatureStore.MODE_PASS_THROUGH);
127
            store.update(SELECTED, false);
130
            store.update(this.selectedFieldName, false);
128 131
            store.finishEditingQuietly();
129 132
            this.changes.reload();
130 133
            this.fireChanges();
......
138 141
        try {
139 142
            FeatureStore store = this.changes.getFeatureStore();
140 143
            store.edit(FeatureStore.MODE_PASS_THROUGH);
141
            store.update(SELECTED, true);
144
            store.update(this.selectedFieldName, true);
142 145
            store.finishEditingQuietly();
143 146
            this.changes.reload();
144 147
            this.fireChanges();
......
156 159
            while(rows.hasNext()){
157 160
                Long row = rows.next();
158 161
                Feature feat = this.changes.getFeatureAt(row);
159
                LocalChangeRow change = (LocalChangeRow) this.createChange(feat);
160
                if(action.test((CHANGE) change)){
161
                    change.update(store);
162
                CHANGE change = this.createChange(feat);
163
                if(action.test(change)){
164
                    updateChange(store, change);
162 165
                }
163 166
            }
164 167
            store.finishEditingQuietly();
......
174 177
    public boolean isSelectedIndex(long index) {
175 178
        try {
176 179
            Feature feat = this.changes.getFeatureAt(index);
177
            return feat.getBoolean(SELECTED);
180
            return feat.getBoolean(this.selectedFieldName);
178 181
        } catch (BaseException ex) {
179 182
            LOGGER.warn("Can't check if is selected.", ex);
180 183
            throw new RuntimeException("Can't check if is selected.", ex);
......
185 188
    public boolean isSelectionEmpty() {
186 189
        try {
187 190
            FeatureStore store = this.changes.getFeatureStore();
188
            Feature foundFeat = store.findFirst("\""+SELECTED+"\"");
191
            Feature foundFeat = store.findFirst("\""+this.selectedFieldName+"\"");
189 192
            return foundFeat == null;
190 193
        } catch (BaseException ex) {
191 194
            LOGGER.warn("Can't check if is empty selection.", ex);

Also available in: Unified diff