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

Reply via email to