Edit Commands¶
Edit commands are commands that affect data within a transaction.
Example would be deleting or adding a feature or editing a feature. This is also a special case because the frame work ensures that a transaction has been started before edit commands are executed.
Transactions can be controlled using the Commit/Rollback functionality of uDig. By modifying data withing a Transaction you allow your users to “preview” any modifications made before application.
By supporting the concept of a Transaction at the application level, modification made via tools, opperations and wizards can all coexsist together. To follow up these ideas the application also supports a shared “Issues List”, so Tools, Opperations an wizards can request user intervention.
DeleteFeatureCommand.java
/**
* Deletes a feature from the provided layer.
*
* @author jeichar
* @since 0.6.0
* @see AbstractEditCommand
* @see UndoableCommand
*/
public class DeleteFeatureCommand extends AbstractEditCommand implements
UndoableCommand {
Feature feature;
private Layer sourceLayer;
protected boolean done;
/**
* Construct <code>DeleteFeatureCommand</code>.
*/
public DeleteFeatureCommand(Feature feature, Layer layer) {
this.feature = feature;
this.sourceLayer = layer;
}
/**
* @see org.locationtech.udig.project.command.Command#run()
*/
public void run() throws Exception {
sourceLayer.getResource(FeatureStore.class, null).removeFeatures(
FilterFactory.createFilterFactory().createFidFilter(
feature.getID()));
map.getEditManagerInternal().setEditFeature(null, null);
}
/**
* @see org.locationtech.udig.project.command.Command#copy()
*/
public Command copy() {
return new DeleteFeatureCommand(feature, sourceLayer);
}
/**
* @see org.locationtech.udig.project.command.Command#getName()
*/
public String getName() {
return Policy.bind("DeleteFeatureCommand.deleteFeature"); //$NON-NLS-1$
}
/**
* @see org.locationtech.udig.project.command.UndoableCommand#rollback()
*/
public void rollback() throws Exception {
map.getEditManagerInternal().setEditFeature(feature, sourceLayer);
map.getEditManagerInternal().addFeature(feature, sourceLayer);
}
}