Revision 47784 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/updatetable/UpdateTableProcessImpl.java
UpdateTableProcessImpl.java | ||
---|---|---|
6 | 6 |
package org.gvsig.app.extension.updatetable; |
7 | 7 |
|
8 | 8 |
import java.util.List; |
9 |
import java.util.function.Predicate; |
|
9 | 10 |
import org.gvsig.app.extension.updatetable.UpdateTableProcessParameters.ProcessFieldParameters; |
10 | 11 |
import org.gvsig.expressionevaluator.Expression; |
11 | 12 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
... | ... | |
26 | 27 |
import org.slf4j.Logger; |
27 | 28 |
import org.slf4j.LoggerFactory; |
28 | 29 |
import org.gvsig.fmap.dal.DataTransaction; |
30 |
import org.gvsig.fmap.dal.feature.FeatureStoreNotification; |
|
31 |
import org.gvsig.tools.ToolsLocator; |
|
29 | 32 |
import org.gvsig.tools.dispose.DisposeUtils; |
33 |
import org.gvsig.tools.identitymanagement.IdentityUtils; |
|
30 | 34 |
|
31 | 35 |
/** |
32 | 36 |
* |
... | ... | |
75 | 79 |
try { |
76 | 80 |
DataManager dataManager = DALLocator.getDataManager(); |
77 | 81 |
|
82 |
FeatureStore store = this.parameters.getStore(); |
|
83 |
if( !IdentityUtils.isAuthorized( |
|
84 |
"tools-updatetable", store, store.getFullName()) ) { |
|
85 |
this.status.message("User not authotized to this action"); |
|
86 |
return; |
|
87 |
} |
|
88 |
|
|
78 | 89 |
this.transaction = dataManager.createTransaction(); |
79 | 90 |
this.transaction.begin(); |
80 | 91 |
|
81 |
FeatureStore store = this.parameters.getStore(); |
|
82 | 92 |
this.transaction.add(store, false); |
83 | 93 |
|
84 | 94 |
this.status.setTitle("Update table '" + store.getName() + "'"); |
... | ... | |
125 | 135 |
} |
126 | 136 |
|
127 | 137 |
public void update_editeds() throws DataException { |
138 |
Predicate<FeatureStoreNotification> saveNotificationsFilter = null; |
|
139 |
|
|
128 | 140 |
FeatureStore store = this.parameters.getStore(); |
129 |
Expression filter = this.parameters.getFilter(); |
|
130 |
List<FeatureReference> set = store.getEditedFeatures(); |
|
131 |
if( set.isEmpty() ) { |
|
132 |
return; |
|
133 |
} |
|
134 |
this.beginEditing(); |
|
135 |
long rows = set.size(); |
|
136 |
this.status.setRangeOfValues(0, rows); |
|
141 |
try { |
|
142 |
saveNotificationsFilter = store.setNotificationsFilter(new StoreNotificationsFilter()); |
|
137 | 143 |
|
138 |
for (FeatureReference featureReferfence : set) { |
|
139 |
this.status.incrementCurrentValue(); |
|
140 |
if (this.status.isCancellationRequested()) { |
|
141 |
this.status.cancel(); |
|
142 |
this.abortEditing(); |
|
144 |
Expression filter = this.parameters.getFilter(); |
|
145 |
List<FeatureReference> set = store.getEditedFeatures(); |
|
146 |
if( set.isEmpty() ) { |
|
143 | 147 |
return; |
144 | 148 |
} |
145 |
Feature feature = featureReferfence.getFeature(); |
|
146 |
this.featureSymbolTable.setFeature(feature); |
|
147 |
boolean sholdProcessFeature = DataTypeUtils.toBoolean(filter.execute(featureSymbolTable), false); |
|
148 |
if (!sholdProcessFeature) { |
|
149 |
continue; |
|
149 |
this.beginEditing(); |
|
150 |
long rows = set.size(); |
|
151 |
this.status.setRangeOfValues(0, rows); |
|
152 |
|
|
153 |
for (FeatureReference featureReferfence : set) { |
|
154 |
this.status.incrementCurrentValue(); |
|
155 |
if (this.status.isCancellationRequested()) { |
|
156 |
this.status.cancel(); |
|
157 |
this.abortEditing(); |
|
158 |
return; |
|
159 |
} |
|
160 |
Feature feature = featureReferfence.getFeature(); |
|
161 |
this.featureSymbolTable.setFeature(feature); |
|
162 |
boolean sholdProcessFeature = DataTypeUtils.toBoolean(filter.execute(featureSymbolTable), false); |
|
163 |
if (!sholdProcessFeature) { |
|
164 |
continue; |
|
165 |
} |
|
166 |
|
|
167 |
EditableFeature editable_feature = feature.getEditable(); |
|
168 |
process_feature(editable_feature); |
|
169 |
store.update(editable_feature); |
|
170 |
restart_editing(); |
|
150 | 171 |
} |
151 |
|
|
152 |
EditableFeature editable_feature = feature.getEditable(); |
|
153 |
process_feature(editable_feature); |
|
154 |
store.update(editable_feature); |
|
155 |
restart_editing(); |
|
172 |
this.endEditing(); |
|
173 |
} finally { |
|
174 |
store.setNotificationsFilter(saveNotificationsFilter); |
|
156 | 175 |
} |
157 |
this.endEditing(); |
|
158 | 176 |
} |
159 | 177 |
|
160 | 178 |
public void update_selection() throws DataException { |
179 |
Predicate<FeatureStoreNotification> saveNotificationsFilter = null; |
|
180 |
|
|
161 | 181 |
FeatureStore store = this.parameters.getStore(); |
162 |
Expression filter = this.parameters.getFilter(); |
|
163 |
FeatureSet set = store.getFeatureSelection(); |
|
164 |
this.beginEditing(); |
|
165 |
long rows = set.getSize(); |
|
166 |
this.status.setRangeOfValues(0, rows); |
|
182 |
try { |
|
183 |
saveNotificationsFilter = store.setNotificationsFilter(new StoreNotificationsFilter()); |
|
184 |
|
|
185 |
Expression filter = this.parameters.getFilter(); |
|
186 |
FeatureSet set = store.getFeatureSelection(); |
|
187 |
this.beginEditing(); |
|
188 |
long rows = set.getSize(); |
|
189 |
this.status.setRangeOfValues(0, rows); |
|
167 | 190 |
|
168 |
for (Feature feature : set) { |
|
169 |
this.status.incrementCurrentValue(); |
|
170 |
if (this.status.isCancellationRequested()) { |
|
171 |
this.status.cancel(); |
|
172 |
this.abortEditing(); |
|
173 |
return; |
|
174 |
} |
|
191 |
for (Feature feature : set) {
|
|
192 |
this.status.incrementCurrentValue();
|
|
193 |
if (this.status.isCancellationRequested()) {
|
|
194 |
this.status.cancel();
|
|
195 |
this.abortEditing();
|
|
196 |
return;
|
|
197 |
}
|
|
175 | 198 |
|
176 |
this.featureSymbolTable.setFeature(feature); |
|
177 |
if( filter!=null ) { |
|
178 |
boolean sholdProcessFeature = DataTypeUtils.toBoolean(filter.execute(featureSymbolTable), false); |
|
179 |
if (!sholdProcessFeature) { |
|
180 |
continue; |
|
199 |
this.featureSymbolTable.setFeature(feature); |
|
200 |
if( filter!=null ) { |
|
201 |
boolean sholdProcessFeature = DataTypeUtils.toBoolean(filter.execute(featureSymbolTable), false); |
|
202 |
if (!sholdProcessFeature) { |
|
203 |
continue; |
|
204 |
} |
|
181 | 205 |
} |
206 |
|
|
207 |
EditableFeature editable_feature = feature.getEditable(); |
|
208 |
process_feature(editable_feature); |
|
209 |
set.update(editable_feature); |
|
210 |
restart_editing(); |
|
182 | 211 |
} |
183 |
|
|
184 |
EditableFeature editable_feature = feature.getEditable(); |
|
185 |
process_feature(editable_feature); |
|
186 |
set.update(editable_feature); |
|
187 |
restart_editing(); |
|
212 |
this.endEditing(); |
|
213 |
} finally { |
|
214 |
store.setNotificationsFilter(saveNotificationsFilter); |
|
188 | 215 |
} |
189 |
this.endEditing(); |
|
190 | 216 |
} |
191 | 217 |
|
192 | 218 |
public void update_all() throws DataException { |
219 |
Predicate<FeatureStoreNotification> saveNotificationsFilter = null; |
|
220 |
|
|
193 | 221 |
FeatureStore store = this.parameters.getStore(); |
194 |
Expression filter = this.parameters.getFilter(); |
|
195 |
|
|
196 |
FeatureQuery query = store.createFeatureQuery(filter); |
|
197 |
FeatureSet set = store.getFeatureSet(query); |
|
198 |
this.transaction.add(set); |
|
199 |
|
|
200 |
this.beginEditing(); |
|
201 |
long rows = set.getSize(); |
|
202 |
this.status.setRangeOfValues(0, rows); |
|
222 |
try { |
|
223 |
saveNotificationsFilter = store.setNotificationsFilter(new StoreNotificationsFilter()); |
|
203 | 224 |
|
204 |
for (Feature feature : set) { |
|
205 |
this.status.incrementCurrentValue(); |
|
206 |
if (this.status.isCancellationRequested()) { |
|
207 |
this.status.cancel(); |
|
208 |
this.abortEditing(); |
|
209 |
return; |
|
225 |
Expression filter = this.parameters.getFilter(); |
|
226 |
|
|
227 |
FeatureQuery query = store.createFeatureQuery(filter); |
|
228 |
FeatureSet set = store.getFeatureSet(query); |
|
229 |
this.transaction.add(set); |
|
230 |
|
|
231 |
this.beginEditing(); |
|
232 |
long rows = set.getSize(); |
|
233 |
this.status.setRangeOfValues(0, rows); |
|
234 |
|
|
235 |
for (Feature feature : set) { |
|
236 |
this.status.incrementCurrentValue(); |
|
237 |
if (this.status.isCancellationRequested()) { |
|
238 |
this.status.cancel(); |
|
239 |
this.abortEditing(); |
|
240 |
return; |
|
241 |
} |
|
242 |
EditableFeature editable_feature = feature.getEditable(); |
|
243 |
process_feature(editable_feature); |
|
244 |
set.update(editable_feature); |
|
245 |
restart_editing(); |
|
210 | 246 |
} |
211 |
EditableFeature editable_feature = feature.getEditable(); |
|
212 |
process_feature(editable_feature); |
|
213 |
set.update(editable_feature); |
|
214 |
restart_editing(); |
|
247 |
this.endEditing(); |
|
248 |
} finally { |
|
249 |
store.setNotificationsFilter(saveNotificationsFilter); |
|
215 | 250 |
} |
216 |
this.endEditing(); |
|
251 |
|
|
217 | 252 |
} |
218 | 253 |
|
219 | 254 |
private void process_feature(EditableFeature feature) { |
... | ... | |
327 | 362 |
return this.out; |
328 | 363 |
} |
329 | 364 |
|
365 |
private class StoreNotificationsFilter implements Predicate<FeatureStoreNotification> { |
|
366 |
|
|
367 |
@Override |
|
368 |
public boolean test(FeatureStoreNotification t) { |
|
369 |
if( t!=null ) { |
|
370 |
switch(t.getType()) { |
|
371 |
case FeatureStoreNotification.AFTER_UPDATE: |
|
372 |
case FeatureStoreNotification.BEFORE_UPDATE: |
|
373 |
return true; |
|
374 |
} |
|
375 |
LOGGER.info(t.getType()); |
|
376 |
} |
|
377 |
return false; |
|
378 |
} |
|
379 |
|
|
380 |
} |
|
330 | 381 |
|
331 | 382 |
|
332 | 383 |
} |
Also available in: Unified diff