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
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