Revision: 5743 http://sourceforge.net/p/jump-pilot/code/5743 Author: michaudm Date: 2018-04-07 08:49:08 +0000 (Sat, 07 Apr 2018) Log Message: ----------- Now, WritableDataStoreDataSource can have their own TransactionManager
Modified Paths: -------------- core/trunk/src/org/openjump/OpenJumpConfiguration.java core/trunk/src/org/openjump/core/ui/plugin/datastore/AddWritableDataStoreLayerWizard.java core/trunk/src/org/openjump/core/ui/plugin/datastore/DataStoreDataSourceFactory.java core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStoreWizard.java core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java core/trunk/src/org/openjump/core/ui/plugin/datastore/h2/H2DataStoreDataSource.java core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManager.java core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManagerPlugIn.java core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/Evolution.java core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/TransactionManagerPanel.java core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java Modified: core/trunk/src/org/openjump/OpenJumpConfiguration.java =================================================================== --- core/trunk/src/org/openjump/OpenJumpConfiguration.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/OpenJumpConfiguration.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -29,6 +29,7 @@ import org.openjump.core.ui.io.file.FileLayerLoader; import org.openjump.core.ui.plugin.datastore.AddDataStoreLayerWizard; import org.openjump.core.ui.plugin.datastore.AddWritableDataStoreLayerWizard; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; import org.openjump.core.ui.plugin.file.DataSourceQueryChooserOpenWizard; import org.openjump.core.ui.plugin.file.OpenWizardPlugIn; import org.openjump.core.ui.plugin.layer.pirolraster.RasterImageContextMenu; @@ -145,8 +146,9 @@ OpenWizardPlugIn.addWizard(workbenchContext, addRasterImageLayerWizard); // [mmichaud 2013-11-08] add new AddWritableDataStoreLayerWizard - AddWritableDataStoreLayerWizard addWritableDataStoreLayerWizard = new AddWritableDataStoreLayerWizard( - workbenchContext); + AddWritableDataStoreLayerWizard addWritableDataStoreLayerWizard = + new AddWritableDataStoreLayerWizard( + workbenchContext, DataStoreTransactionManager.getTransactionManager()); OpenWizardPlugIn.addWizard(workbenchContext, addWritableDataStoreLayerWizard); // [mmichaud 2012-09-01] changed how RasterImageLayerRendererFactory is initialized to fix bug 3526653 Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/AddWritableDataStoreLayerWizard.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/AddWritableDataStoreLayerWizard.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/AddWritableDataStoreLayerWizard.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -3,7 +3,7 @@ import java.awt.Color; import java.util.Collection; -import javax.swing.SwingUtilities; +import javax.swing.*; import org.openjump.core.ccordsys.srid.SRIDStyle; import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; @@ -38,13 +38,32 @@ private AddWritableDataStoreLayerWizardPanel dataStoreWizardPanel; + private DataStoreTransactionManager txManager; + private WorkbenchContext workbenchContext; private ChooseProjectPanel chooseProjectPanel; - public AddWritableDataStoreLayerWizard(WorkbenchContext workbenchContext) { + public AddWritableDataStoreLayerWizard( + String name, + ImageIcon icon, + WorkbenchContext workbenchContext, + DataStoreTransactionManager txManager) { + super(name, icon, + AddWritableDataStoreLayerWizardPanel.class.getName()); + this.txManager = txManager; + this.workbenchContext = workbenchContext; + dataStoreWizardPanel = new AddWritableDataStoreLayerWizardPanel(workbenchContext); + addPanel(dataStoreWizardPanel); + chooseProjectPanel = new ChooseProjectPanel(workbenchContext, dataStoreWizardPanel.getID()); + addPanel(chooseProjectPanel); + } + + public AddWritableDataStoreLayerWizard(WorkbenchContext workbenchContext, + DataStoreTransactionManager txManager) { super(I18N.get(KEY), IconLoader.icon("database_writable_add.png"), AddWritableDataStoreLayerWizardPanel.class.getName()); + this.txManager = txManager; this.workbenchContext = workbenchContext; dataStoreWizardPanel = new AddWritableDataStoreLayerWizardPanel(workbenchContext); addPanel(dataStoreWizardPanel); @@ -118,7 +137,8 @@ WritableDataStoreDataSource ds = DataStoreDataSourceFactory.createWritableDataStoreDataSource( connectionDescriptor, datasetName, geometryAttributeName, - identifierAttributeName, true, workbenchContext); + identifierAttributeName, true, + txManager, workbenchContext); ds.setMaxFeature(limit); ds.setWhereClause(whereClause); ds.setLimitedToView(limitedToView); @@ -157,7 +177,7 @@ layerManager.setFiringEvents(true); // added by michaudm on 2009-04-05 } finally {layerManager.setFiringEvents(true);} - DataStoreTransactionManager.getTransactionManager().registerLayer(layer, workbenchContext.getTask()); + txManager.registerLayer(layer, workbenchContext.getTask()); return layer; } Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/DataStoreDataSourceFactory.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/DataStoreDataSourceFactory.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/DataStoreDataSourceFactory.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -5,6 +5,7 @@ import com.vividsolutions.jump.workbench.datastore.ConnectionDescriptor; import org.openjump.core.ui.plugin.datastore.h2.H2DataStoreDataSource; import org.openjump.core.ui.plugin.datastore.postgis2.PostGISDataStoreDataSource; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; /** * Factory to create WritableDataStoreDataSource fitting @@ -20,16 +21,19 @@ String geometryAttributeName, String externalPKName, boolean tableAlreadyCreated, + DataStoreTransactionManager txManager, WorkbenchContext context) throws Exception { WritableDataStoreDataSource source; String driverName = connectionDescriptor.getDataStoreDriverClassName(); if (driverName.equals(com.vividsolutions.jump.datastore.postgis.PostgisDataStoreDriver.class.getName())) { source = new PostGISDataStoreDataSource( - connectionDescriptor, datasetName, geometryAttributeName, externalPKName, context); + connectionDescriptor, datasetName, geometryAttributeName, externalPKName, + txManager, context); source.setTableAlreadyCreated(tableAlreadyCreated); } else if (driverName.equals(com.vividsolutions.jump.datastore.h2.H2DataStoreDriver.class.getName())) { source = new H2DataStoreDataSource( - connectionDescriptor, datasetName, geometryAttributeName, externalPKName, context); + connectionDescriptor, datasetName, geometryAttributeName, externalPKName, + txManager, context); source.setTableAlreadyCreated(tableAlreadyCreated); } else { throw new Exception(I18N.getMessage(KEY + ".no-writable-datastore-datasource", driverName)); Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStoreWizard.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStoreWizard.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStoreWizard.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -12,6 +12,7 @@ import com.vividsolutions.jump.workbench.ui.images.famfam.IconLoaderFamFam; import com.vividsolutions.jump.workbench.ui.wizard.WizardDialog; import org.openjump.core.ccordsys.srid.SRIDStyle; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; import org.openjump.core.ui.swing.wizard.AbstractWizardGroup; @@ -23,13 +24,16 @@ /** The key for the wizard. */ public static final String KEY = SaveToDataStoreWizard.class.getName(); + private DataStoreTransactionManager txManager; + /** The plugin context. */ private PlugInContext context; //private File file; - public SaveToDataStoreWizard(final PlugInContext context) { + public SaveToDataStoreWizard(final PlugInContext context, DataStoreTransactionManager txManager) { super(I18N.get(KEY), IconLoaderFamFam.icon("database_save.png"), SaveToDataStorePanel.KEY); + this.txManager = txManager; this.context = context; } @@ -64,6 +68,7 @@ geometryAttributeName, WritableDataStoreDataSource.DEFAULT_PK_NAME, false, + txManager, context.getWorkbenchContext()); writableDS.getProperties().put(WritableDataStoreDataSource.CONNECTION_DESCRIPTOR_KEY, Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -67,6 +67,8 @@ // Map is indexed by FID in order to merge successive evolutions of a feature efficiently final private LinkedHashMap<Integer,Evolution> evolutions = new LinkedHashMap<>(); + private DataStoreTransactionManager txManager; + // See setTableAlreadyCreated() private boolean tableAlreadyCreated = true; @@ -92,6 +94,7 @@ String datasetName, String geometryAttributeName, String externalPKName, + DataStoreTransactionManager txManager, WorkbenchContext context) { setProperties(CollectionUtil.createMap(new Object[]{ CONNECTION_DESCRIPTOR_KEY, connectionDescriptor, @@ -109,6 +112,7 @@ //getProperties().put(CREATE_TABLE, false); getProperties().put(CREATE_PK, false); getProperties().put(SRID_KEY, 0); + this.txManager = txManager; this.context = context; } @@ -580,8 +584,9 @@ selectedLayers[0].setFeatureCollection(conn.executeQuery(null, monitor)); // We connect to a new table : the transaction manager must listen to it if (!tableAlreadyCreated) { - DataStoreTransactionManager.getTransactionManager().registerLayer(selectedLayers[0], - JUMPWorkbench.getInstance().getContext().getTask()); + //DataStoreTransactionManager.getTransactionManager().registerLayer(selectedLayers[0], + txManager.registerLayer(selectedLayers[0], + JUMPWorkbench.getInstance().getContext().getTask()); tableAlreadyCreated = true; } } finally { Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/h2/H2DataStoreDataSource.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/h2/H2DataStoreDataSource.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/h2/H2DataStoreDataSource.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -16,6 +16,7 @@ import com.vividsolutions.jump.workbench.WorkbenchContext; import com.vividsolutions.jump.workbench.datastore.ConnectionDescriptor; import org.openjump.core.ui.plugin.datastore.WritableDataStoreDataSource; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -40,8 +41,11 @@ String datasetName, String geometryAttributeName, String identifierAttributeName, + DataStoreTransactionManager txManager, WorkbenchContext context) { - super(connectionDescriptor, datasetName, geometryAttributeName, identifierAttributeName, context); + super(connectionDescriptor, + datasetName, geometryAttributeName, identifierAttributeName, + txManager, context); } /** Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -21,6 +21,7 @@ import com.vividsolutions.jump.io.FeatureInputStream; import com.vividsolutions.jump.workbench.Logger; import com.vividsolutions.jump.workbench.datastore.ConnectionDescriptor; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; /** * A {@link WritableDataStoreDataSource} for PostGIS. @@ -42,8 +43,11 @@ String datasetName, String geometryAttributeName, String identifierAttributeName, + DataStoreTransactionManager txManager, WorkbenchContext context) { - super(connectionDescriptor, datasetName, geometryAttributeName, identifierAttributeName, context); + super(connectionDescriptor, + datasetName, geometryAttributeName, identifierAttributeName, + txManager, context); } /** Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManager.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManager.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManager.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -39,15 +39,24 @@ final String KEY = DataStoreTransactionManager.class.getName(); - private static DataStoreTransactionManager TXMANAGER = new DataStoreTransactionManager(); - private WeakHashMap<Layer,Task> registeredLayers = new WeakHashMap<Layer, Task>(); - private WeakHashMap<Task,LayerListener> registeredListeners = new WeakHashMap<Task, LayerListener>(); + private static DataStoreTransactionManager TXMANAGER; + private WeakHashMap<Layer,Task> registeredLayers = new WeakHashMap<>(); + private WeakHashMap<Task,LayerListener> registeredListeners = new WeakHashMap<>(); /** + * Don't use this constructor. Use getTransactionManager instead. + * The constructor is made protected to be able to sublass it. + */ + protected DataStoreTransactionManager() {} + + /** * Get the unique DataStoreTransactionManager. * @return JUMPWorkbench's DataStoreTransactionManager */ public static DataStoreTransactionManager getTransactionManager() { + if (TXMANAGER == null) { + TXMANAGER = new DataStoreTransactionManager(); + } return TXMANAGER; } @@ -68,9 +77,9 @@ Logger.info("Register layer '" + layer.getName() + "' (" + task.getName() + ") in the DataStoreTransactionManager"); } - private boolean containsLayerManager(Task task) { - return registeredLayers.containsValue(task); - } + //private boolean containsLayerManager(Task task) { + // return registeredLayers.containsValue(task); + //} private LayerListener getLayerListener() { return new LayerAdapter() { @@ -141,9 +150,9 @@ if (((Layer) e.getLayerable()).getDataSourceQuery().getDataSource() instanceof WritableDataStoreDataSource) { ((WritableDataStoreDataSource)((Layer) e.getLayerable()).getDataSourceQuery().getDataSource()).getUncommittedEvolutions().clear(); } + registeredLayers.remove(e.getLayerable()); + Logger.info("Unregister layer " + e.getLayerable().getName() + " from the DataStoreTransactionManager"); } - registeredLayers.remove(e.getLayerable()); - Logger.info("Unregister layer " + e.getLayerable().getName() + " from the DataStoreTransactionManager"); } } }; @@ -161,7 +170,7 @@ } public Collection<Layer> getLayers(Task task) { - Collection<Layer> layers = new ArrayList<Layer>(); + Collection<Layer> layers = new ArrayList<>(); for (Map.Entry<Layer,Task> entry : registeredLayers.entrySet()) { if (entry.getValue() == task) layers.add(entry.getKey()); } @@ -170,7 +179,7 @@ /** * Commit all edits performed on this layer since last commit. - * @param layer + * @param layer commit features from this layer */ private boolean commit(Layer layer) throws Exception { DataSource source = layer.getDataSourceQuery().getDataSource(); @@ -195,13 +204,13 @@ /** * Update this layer from the datasource - * @param layer + * @param layer Layer to be updated */ private int update(TaskFrame taskFrame, Layer layer) { DataSource source = layer.getDataSourceQuery().getDataSource(); if (source instanceof WritableDataStoreDataSource) { WritableDataStoreDataSource writableSource = (WritableDataStoreDataSource)source; - int conflicts = 0; + int conflicts; try { Logger.info("Update layer \"" + layer.getName() + "\""); FeatureCollection fc = writableSource.getConnection().executeQuery(null, new DummyTaskMonitor()); @@ -324,7 +333,7 @@ String pk = dataSource.getProperties().get(WritableDataStoreDataSource.EXTERNAL_PK_KEY).toString(); boolean manageConflicts = (Boolean)dataSource.getProperties().get(WritableDataStoreDataSource.MANAGE_CONFLICTS); int conflicts = 0; - Collection toBeDeleted = new ArrayList(); + Collection<Feature> toBeDeleted = new ArrayList<>(); for (Object feature : fc.getFeatures()) { // For each feature of fc, check if this feature is also in the table of current evolutions // If a feature just updated from the server is still in the evolution map, we may have Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManagerPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManagerPlugIn.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/DataStoreTransactionManagerPlugIn.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -39,14 +39,14 @@ private static final String KEY = DataStoreTransactionManagerPlugIn.class.getName(); private static final String INSTANCE_KEY = KEY + " - INSTANCE"; - TransactionManagerPanel transactionManagerPanel; - WorkbenchContext context; + private TransactionManagerPanel transactionManagerPanel; + private WorkbenchContext context; public DataStoreTransactionManagerPlugIn() { } - public static final DataStoreTransactionManagerPlugIn instance(Blackboard blackboard) { + public static DataStoreTransactionManagerPlugIn instance(Blackboard blackboard) { if (blackboard.get(INSTANCE_KEY) == null) { blackboard.put(INSTANCE_KEY, new DataStoreTransactionManagerPlugIn()); } @@ -72,7 +72,7 @@ java.util.List<Layer> layers = task.getLayerManager().getLayers(); for (Layer layer : layers) { if (layer.getDataSourceQuery().getDataSource() instanceof WritableDataStoreDataSource) { - DataStoreTransactionManager.getTransactionManager().registerLayer(layer, task); + getTransactionManager().registerLayer(layer, task); } } addListenerToTaskFrame(task); @@ -83,7 +83,7 @@ java.util.List<Layer> layers = taskEvent.getTask().getLayerManager().getLayers(); for (Layer layer : layers) { if (layer.getDataSourceQuery().getDataSource() instanceof WritableDataStoreDataSource) { - DataStoreTransactionManager.getTransactionManager().registerLayer(layer, task); + getTransactionManager().registerLayer(layer, task); } } addListenerToTaskFrame(task); @@ -91,9 +91,13 @@ }); } + protected DataStoreTransactionManager getTransactionManager() { + return DataStoreTransactionManager.getTransactionManager(); + } + protected void initializeToolbox(final ToolboxDialog toolbox) { - DataStoreTransactionManager txManager = DataStoreTransactionManager.getTransactionManager(); - transactionManagerPanel = new TransactionManagerPanel(txManager, + //DataStoreTransactionManager txManager = DataStoreTransactionManager.getTransactionManager(); + transactionManagerPanel = new TransactionManagerPanel(getTransactionManager(), toolbox.getContext().getErrorHandler(), toolbox.getContext()); //transactionManagerPanel.init(toolbox.getContext()); transactionManagerPanel.updateListener(toolbox.getContext().getTask()); @@ -128,7 +132,9 @@ public boolean execute(PlugInContext context) throws Exception { boolean b = super.execute(context); - if (transactionManagerPanel != null) transactionManagerPanel.updateTextArea(context.getTask()); + if (transactionManagerPanel != null) { + transactionManagerPanel.updateTextArea(context.getTask()); + } return b; } Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/Evolution.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/Evolution.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/Evolution.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -123,7 +123,7 @@ public String toString() { if (type == Type.CREATION) return "Creation: fid=" + newFeature.getID(); if (type == Type.SUPPRESSION) return "Suppression: fid=" + oldFeature.getID(); - else return "Change from: fid=" + oldFeature.getID() + "to: fid=" + newFeature.getID(); + else return "Change from: fid=" + oldFeature.getID() + " to: fid=" + newFeature.getID(); } } Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/TransactionManagerPanel.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/TransactionManagerPanel.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/transaction/TransactionManagerPanel.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -10,7 +10,6 @@ import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JInternalFrame; -import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; @@ -42,14 +41,12 @@ private static final String KEY = TransactionManagerPanel.class.getName(); + private final DataStoreTransactionManager transactionManager; + private final ErrorHandler errorHandler; + private final JTextArea textArea; + private LayerListener layerListener; + private WorkbenchContext context; - - final DataStoreTransactionManager transactionManager; - final ErrorHandler errorHandler; - final JTextArea textArea; - LayerListener layerListener; - WorkbenchContext context; - public TransactionManagerPanel(DataStoreTransactionManager transactionManager, ErrorHandler errorHandler, WorkbenchContext context) { this.transactionManager = transactionManager; @@ -58,7 +55,7 @@ init(context); } - private void init(WorkbenchContext context) { + protected void init(WorkbenchContext context) { this.context = context; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); textArea.setFont(textArea.getFont().deriveFont(11f)); Modified: core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java 2018-04-06 17:00:47 UTC (rev 5742) +++ core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java 2018-04-07 08:49:08 UTC (rev 5743) @@ -7,6 +7,7 @@ import org.openjump.core.ui.plugin.AbstractThreadedUiPlugIn; import org.openjump.core.ui.plugin.datastore.SaveToDataStoreWizard; +import org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager; import org.openjump.core.ui.plugin.file.save.SaveToFileWizard; import org.openjump.core.ui.swing.wizard.WizardGroup; import org.openjump.core.ui.swing.wizard.WizardGroupDialog; @@ -66,7 +67,9 @@ addWizard(context.getWorkbenchContext(), new SaveToFileWizard(context)); // datastores are experimental for now if (!JUMPVersion.getRelease().equalsIgnoreCase("release")) - addWizard(context.getWorkbenchContext(), new SaveToDataStoreWizard(context)); + addWizard(context.getWorkbenchContext(), + new SaveToDataStoreWizard(context, + DataStoreTransactionManager.getTransactionManager())); } public boolean execute(PlugInContext pluginContext) throws Exception { ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel