diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index 5537ac9428..3b098c84a8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@ -18,26 +18,12 @@
****************************************************************/
package org.apache.cayenne.access;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
import org.apache.cayenne.access.loader.ManyToManyCandidateEntity;
+import org.apache.cayenne.access.loader.filters.DbPath;
import org.apache.cayenne.access.loader.filters.EntityFilters;
import org.apache.cayenne.access.loader.filters.Filter;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
-import org.apache.cayenne.access.loader.filters.DbPath;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DataMap;
@@ -59,7 +45,23 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.*;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
+import static org.apache.cayenne.access.loader.filters.FilterFactory.TRUE;
+import static org.apache.cayenne.access.loader.filters.FilterFactory.include;
/**
* Utility class that does reverse engineering of the database. It can create
@@ -95,7 +97,7 @@ public DbLoader(Connection connection, DbAdapter adapter, DbLoaderDelegate deleg
/**
* Creates new DbLoader with specified naming strategy.
- *
+ *
* @since 3.0
*/
public DbLoader(Connection connection, DbAdapter adapter, DbLoaderDelegate delegate, ObjectNameGenerator strategy) {
@@ -135,7 +137,7 @@ public boolean isCreatingMeaningfulPK() {
/**
* Returns database connection used by this DbLoader.
- *
+ *
* @since 3.0
*/
public Connection getConnection() {
@@ -144,7 +146,7 @@ public Connection getConnection() {
/**
* Returns DbAdapter associated with this DbLoader.
- *
+ *
* @since 1.1
*/
public DbAdapter getAdapter() {
@@ -153,7 +155,7 @@ public DbAdapter getAdapter() {
/**
* Retrieves catalogs for the database associated with this DbLoader.
- *
+ *
* @return List with the catalog names, empty Array if none found.
*/
public List getCatalogs() throws SQLException {
@@ -162,7 +164,7 @@ public List getCatalogs() throws SQLException {
/**
* Retrieves the schemas for the database.
- *
+ *
* @return List with the schema names, empty Array if none found.
*/
public List getSchemas() throws SQLException {
@@ -184,9 +186,9 @@ private static List getStrings(ResultSet rs) throws SQLException {
/**
* Returns all the table types for the given database. Types may be such as
* Typical types are "TABLE",
- * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
- * "LOCAL TEMPORARY", "ALIAS", "SYNONYM"., etc.
- *
+ * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
+ * "LOCAL TEMPORARY", "ALIAS", "SYNONYM"., etc.
+ *
* @return List of Strings, empty array if nothing found.
*/
public List getTableTypes() throws SQLException {
@@ -206,12 +208,9 @@ public List getTableTypes() throws SQLException {
/**
* Returns all tables for given combination of the criteria. Tables returned
* as DbEntities without any attributes or relationships.
- *
*
* @param config
- *
- * @param types
- * The types of table names to retrieve, null returns all types.
+ * @param types The types of table names to retrieve, null returns all types.
* @return
* @since 3.2
*/
@@ -231,12 +230,10 @@ public Map> getTables(DbLoaderConfiguration config
}
/**
- *
* @param filters
* @param dbPath
* @param types
* @return Map
- *
* @throws SQLException
*/
private Map getDbEntities(FiltersConfig filters, DbPath dbPath, String[] types) throws SQLException {
@@ -280,13 +277,11 @@ private Map getDbEntities(FiltersConfig filters, DbPath dbPath
/**
* Loads dbEntities for the specified tables.
- *
- * @param map
- * DataMap to be populated with DbEntities.
+ *
+ * @param map DataMap to be populated with DbEntities.
* @param config
- * @param tables
- * The list of org.apache.cayenne.ashwood.dbutil.Table objects
- * for which DbEntities must be created. @return false if loading must be immediately aborted.
+ * @param tables The list of org.apache.cayenne.ashwood.dbutil.Table objects
+ * for which DbEntities must be created. @return false if loading must be immediately aborted.
*/
public List loadDbEntities(DataMap map, DbLoaderConfiguration config, Map> tables) throws SQLException {
/** List of db entities to process. */
@@ -299,8 +294,20 @@ public List loadDbEntities(DataMap map, DbLoaderConfiguration config,
// if so, consult the delegate what to do
DbEntity oldEnt = map.getDbEntity(dbEntity.getName());
if (oldEnt != null) {
+ Collection oldObjEnt = map.getMappedEntities(oldEnt);
+ if (!oldObjEnt.isEmpty()) {
+ for (ObjEntity objEntity : oldObjEnt) {
+ LOGGER.debug("Delete ObjEntity: " + objEntity.getName());
+ map.removeObjEntity(objEntity.getName(), true);
+ delegate.objEntityRemoved(objEntity);
+ }
+ }
+
+ LOGGER.debug("Overwrite DbEntity: " + oldEnt.getName());
map.removeDbEntity(oldEnt.getName(), true);
+ delegate.dbEntityRemoved(oldEnt);
}
+
map.addDbEntity(dbEntity);
// notify delegate
@@ -432,9 +439,9 @@ private DbAttribute loadDbAttribute(ResultSet rs) throws SQLException {
* Creates an ObjEntity for each DbEntity in the map. ObjEntities are
* created empty without
*/
- protected void loadObjEntities(DataMap map, DbLoaderConfiguration config, Collection entities) {
+ protected Collection loadObjEntities(DataMap map, DbLoaderConfiguration config, Collection entities) {
if (entities.isEmpty()) {
- return;
+ return null;
}
Collection loadedEntities = new ArrayList(entities.size());
@@ -443,14 +450,14 @@ protected void loadObjEntities(DataMap map, DbLoaderConfiguration config, Collec
for (DbEntity dbEntity : entities) {
// check if there are existing entities
-
- // TODO: performance. This is an O(n^2) search and it shows on
- // YourKit profiles. Pre-cache mapped entities perhaps (?)
- Collection existing = map.getMappedEntities(dbEntity);
- if (!existing.isEmpty()) {
- loadedEntities.addAll(existing);
- continue;
- }
+
+ // TODO: performance. This is an O(n^2) search and it shows on
+ // YourKit profiles. Pre-cache mapped entities perhaps (?)
+ Collection existing = map.getMappedEntities(dbEntity);
+ if (!existing.isEmpty()) {
+ loadedEntities.addAll(existing);
+ continue;
+ }
String objEntityName = DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, map,
nameGenerator.createObjEntityName(dbEntity));
@@ -466,6 +473,8 @@ protected void loadObjEntities(DataMap map, DbLoaderConfiguration config, Collec
// update ObjEntity attributes and relationships
createEntityMerger(map).synchronizeWithDbEntities(loadedEntities);
+
+ return loadedEntities;
}
/**
@@ -625,7 +634,7 @@ protected void postProcessMasterDbRelationship(DbRelationship relationship, Expo
/**
* Flattens many-to-many relationships in the generated model.
*/
- private void flattenManyToManyRelationships(DataMap map) {
+ private void flattenManyToManyRelationships(DataMap map, Collection loadedObjEntities) {
Collection entitiesForDelete = new LinkedList();
for (ObjEntity curEntity : map.getObjEntities()) {
@@ -641,10 +650,11 @@ private void flattenManyToManyRelationships(DataMap map) {
for (ObjEntity curDeleteEntity : entitiesForDelete) {
map.removeObjEntity(curDeleteEntity.getName(), true);
}
+ loadedObjEntities.removeAll(entitiesForDelete);
}
- private void fireObjEntitiesAddedEvents(DataMap map) {
- for (ObjEntity curEntity : map.getObjEntities()) {
+ private void fireObjEntitiesAddedEvents(Collection loadedObjEntities) {
+ for (ObjEntity curEntity : loadedObjEntities) {
// notify delegate
if (delegate != null) {
delegate.objEntityAdded(curEntity);
@@ -678,31 +688,31 @@ public String[] getDefaultTableTypes() {
* Performs database reverse engineering and generates DataMap that contains
* default mapping of the tables and views. By default will include regular
* tables and views.
- *
+ *
* @since 1.0.7
* @deprecated since 4.0 use
- * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
- * method that supports catalogs.
+ * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
+ * method that supports catalogs.
*/
@Deprecated
- public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, DataMap dataMap) throws SQLException {
+ public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, DataMap dataMap) throws SQLException {
- DbLoaderConfiguration configuration = new DbLoaderConfiguration();
- configuration.setFiltersConfig(new FiltersConfig(new EntityFilters(new DbPath(null, schemaPattern),
- include(tablePattern), TRUE, NULL)));
+ DbLoaderConfiguration configuration = new DbLoaderConfiguration();
+ configuration.setFiltersConfig(new FiltersConfig(new EntityFilters(new DbPath(null, schemaPattern),
+ include(tablePattern), TRUE, NULL)));
- load(dataMap, configuration);
- return dataMap;
- }
+ load(dataMap, configuration);
+ return dataMap;
+ }
/**
* Performs database reverse engineering and generates DataMap object that
* contains default mapping of the tables and views. Allows to limit types
* of tables to read.
- *
+ *
* @deprecated since 4.0 use
- * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
- * method that supports catalogs.
+ * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
+ * method that supports catalogs.
*/
@Deprecated
public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, String[] tableTypes, DataMap dataMap)
@@ -729,7 +739,7 @@ private Filter transformPatternToFilter(String tablePattern) {
}
/**
- * Performs database reverse engineering based on the specified config
+ * Performs database reverse engineering based on the specified config
* and fills the specified
* DataMap object with DB and object mapping info.
*
@@ -742,10 +752,10 @@ public void load(DataMap dataMap, DbLoaderConfiguration config, String... tableT
if (entities != null) {
loadDbRelationships(config, tables);
+ Collection loadedObjEntities = loadObjEntities(dataMap, config, entities);
- loadObjEntities(dataMap, config, entities);
- flattenManyToManyRelationships(dataMap);
- fireObjEntitiesAddedEvents(dataMap);
+ flattenManyToManyRelationships(dataMap, loadedObjEntities);
+ fireObjEntitiesAddedEvents(loadedObjEntities);
}
}
@@ -773,7 +783,7 @@ public DataMap load(DbLoaderConfiguration config) throws SQLException {
* currently this method is NOT CALLED from "loadDataMapFromDB" and should
* be invoked explicitly by the user.
*
- *
+ *
* @since 1.1
* @deprecated since 4.0 use loadProcedures(DataMap, String, String, String) that supports "catalog" pattern.
*/
@@ -794,7 +804,7 @@ public void loadProceduresFromDB(String schemaPattern, String namePattern, DataM
* currently this method is NOT CALLED from "loadDataMapFromDB" and should
* be invoked explicitly by the user.
*
- *
+ *
* @since 4.0
*/
public Map loadProcedures(DataMap dataMap, DbLoaderConfiguration config)
@@ -822,7 +832,7 @@ private void loadProceduresColumns(DbLoaderConfiguration config, Map loadProcedures(FiltersConfig filters, DbPath dbPa
procedure.setSchema(rs.getString("PROCEDURE_SCHEM"));
if (filters.filter(new DbPath(procedure.getCatalog(), procedure.getSchema()))
- .procedureFilter().isInclude(procedure)) {
+ .procedureFilter().isInclude(procedure)) {
LOGGER.info("skipping Cayenne PK procedure: " + name);
continue;
}
@@ -951,7 +961,7 @@ private Map loadProcedures(FiltersConfig filters, DbPath dbPa
/**
* Sets new naming strategy for reverse engineering
- *
+ *
* @since 3.0
*/
public void setNameGenerator(ObjectNameGenerator strategy) {
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
index c1e457a644..1919c466f5 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.access;
-import org.apache.cayenne.CayenneException;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
@@ -30,13 +29,6 @@
*/
public interface DbLoaderDelegate {
- /**
- * Returns true to tell DbLoader that it is OK to overwrite DbEntity that
- * already exists in the model. If loading process should be stopped
- * immediately, an exception is thrown.
- */
- boolean overwriteDbEntity(DbEntity entity) throws CayenneException;
-
void dbEntityAdded(DbEntity entity);
void dbEntityRemoved(DbEntity entity);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
index bc91162d74..1e8a593aef 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
@@ -18,7 +18,6 @@
****************************************************************/
package org.apache.cayenne.access.loader;
-import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
@@ -28,11 +27,6 @@
*/
public class DefaultDbLoaderDelegate implements DbLoaderDelegate {
- @Override
- public boolean overwriteDbEntity(DbEntity entity) throws CayenneException {
- return false;
- }
-
@Override
public void dbEntityAdded(DbEntity entity) {
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/ManyToManyCandidateEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/ManyToManyCandidateEntity.java
index 792c8a8e95..ef8391d897 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/ManyToManyCandidateEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/ManyToManyCandidateEntity.java
@@ -18,9 +18,6 @@
****************************************************************/
package org.apache.cayenne.access.loader;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
@@ -31,6 +28,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Class represent ObjEntity that may be optimized using flattened relationships
* as many to many table
@@ -72,7 +72,7 @@ private ManyToManyCandidateEntity(ObjEntity entityValue, List r
*/
public static ManyToManyCandidateEntity build(ObjEntity joinEntity) {
ArrayList relationships = new ArrayList(joinEntity.getRelationships());
- if (relationships.size() != 2) {
+ if (relationships.size() != 2 || (relationships.get(0).getDbRelationships().isEmpty() || relationships.get(1).getDbRelationships().isEmpty())) {
return null;
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
index 2a56b88cfb..ec4550d75f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderPartialIT.java
@@ -54,13 +54,7 @@ public void setUp() throws Exception {
loader = new DbLoader(
dataSourceFactory.getSharedDataSource().getConnection(),
adapter,
- new DefaultDbLoaderDelegate() {
-
- public boolean overwriteDbEntity(DbEntity ent) throws CayenneException {
- return !(ent.getName().equalsIgnoreCase("ARTIST")
- || ent.getName().equalsIgnoreCase("PAINTING"));
- }
- });
+ new DefaultDbLoaderDelegate());
}
@After
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
index af1bf26eee..3ff918e876 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
@@ -19,15 +19,14 @@
package org.apache.cayenne.tools.dbimport;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
/**
* @since 4.0
*/
@@ -45,10 +44,6 @@ class DbImportDbLoaderDelegate implements DbLoaderDelegate {
removedObjEntities = new ArrayList();
}
- public boolean overwriteDbEntity(DbEntity ent) throws CayenneException {
- return false;
- }
-
public void dbEntityAdded(DbEntity ent) {
ent.getDataMap().addDbEntity(ent);
addedDbEntities.add(ent);
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegateTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegateTest.java
index 7614dbc1dc..52bae8a43d 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegateTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegateTest.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.tools.dbimport;
-import org.apache.cayenne.CayenneException;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
@@ -30,7 +29,6 @@
import java.util.List;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class DbImportDbLoaderDelegateTest {
@@ -52,11 +50,6 @@ public void setUp() {
objEntity.setDataMap(dataMap);
}
- @Test
- public void testOverwriteDbEntity() throws CayenneException {
- assertFalse(delegate.overwriteDbEntity(dbEntity));
- }
-
@Test
public void testDbEntityAdded() {
delegate.dbEntityAdded(dbEntity);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index f19e758151..201db31456 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.modeler.dialog.db;
-import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DbLoader;
import org.apache.cayenne.access.DbLoaderDelegate;
@@ -74,10 +73,6 @@ public class DbLoaderHelper {
// preferences...
private static final Collection EXCLUDED_TABLES = Arrays.asList("AUTO_PK_SUPPORT", "auto_pk_support");
- static DbLoaderMergeDialog mergeDialog;
-
- protected boolean overwritePreferenceSet;
- protected boolean overwritingEntities;
protected boolean stoppingReverseEngineering;
protected boolean existingMap;
@@ -99,14 +94,6 @@ public class DbLoaderHelper {
*/
protected List addedObjEntities;
- static DbLoaderMergeDialog getMergeDialogInstance() {
- if (mergeDialog == null) {
- mergeDialog = new DbLoaderMergeDialog(Application.getFrame());
- }
-
- return mergeDialog;
- }
-
public DbLoaderHelper(ProjectController mediator, Connection connection, DbAdapter adapter, String dbUserName) {
this.dbUserName = dbUserName;
this.mediator = mediator;
@@ -118,26 +105,10 @@ public DbLoaderHelper(ProjectController mediator, Connection connection, DbAdapt
this.loader = new DbLoader(connection, adapter, new LoaderDelegate());
}
- public void setOverwritingEntities(boolean overwritePreference) {
- this.overwritingEntities = overwritePreference;
- }
-
- public void setOverwritePreferenceSet(boolean overwritePreferenceSet) {
- this.overwritePreferenceSet = overwritePreferenceSet;
- }
-
public void setStoppingReverseEngineering(boolean stopReverseEngineering) {
this.stoppingReverseEngineering = stopReverseEngineering;
}
- public boolean isOverwritePreferenceSet() {
- return overwritePreferenceSet;
- }
-
- public boolean isOverwritingEntities() {
- return overwritingEntities;
- }
-
public boolean isStoppingReverseEngineering() {
return stoppingReverseEngineering;
}
@@ -228,24 +199,7 @@ protected void cleanup() {
final class LoaderDelegate implements DbLoaderDelegate {
- public boolean overwriteDbEntity(DbEntity ent) throws CayenneException {
- checkCanceled();
-
- if (!overwritePreferenceSet) {
- DbLoaderMergeDialog dialog = DbLoaderHelper.getMergeDialogInstance();
- dialog.initFromModel(DbLoaderHelper.this, ent.getName());
- dialog.centerWindow();
- dialog.setVisible(true);
- dialog.setVisible(false);
- }
-
- if (stoppingReverseEngineering) {
- throw new CayenneException("Should stop DB import.");
- }
-
- return overwritingEntities;
- }
-
+ @Override
public void dbEntityAdded(DbEntity entity) {
checkCanceled();
@@ -261,6 +215,7 @@ public void dbEntityAdded(DbEntity entity) {
}
}
+ @Override
public void objEntityAdded(ObjEntity entity) {
checkCanceled();
@@ -272,6 +227,7 @@ public void objEntityAdded(ObjEntity entity) {
}
}
+ @Override
public void dbEntityRemoved(DbEntity entity) {
checkCanceled();
@@ -280,6 +236,7 @@ public void dbEntityRemoved(DbEntity entity) {
}
}
+ @Override
public void objEntityRemoved(ObjEntity entity) {
checkCanceled();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderMergeDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderMergeDialog.java
deleted file mode 100644
index 2a335af849..0000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderMergeDialog.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.dialog.db;
-
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-import org.apache.cayenne.modeler.CayenneModelerFrame;
-import org.apache.cayenne.modeler.util.CayenneDialog;
-import org.apache.cayenne.modeler.util.PanelFactory;
-
-/**
- */
-public class DbLoaderMergeDialog extends CayenneDialog {
-
- protected DbLoaderHelper helper;
- protected JCheckBox rememberSelection;
- protected JLabel message;
- protected JButton overwriteButton;
- protected JButton skipButton;
- protected JButton stopButton;
-
- public DbLoaderMergeDialog(CayenneModelerFrame owner) {
- super(owner);
- init();
- initController();
- }
-
- private void init() {
- // create widgets
- this.rememberSelection = new JCheckBox("Remember my decision for other entities.");
- this.rememberSelection.setSelected(true);
-
- this.overwriteButton = new JButton("Overwrite");
- this.skipButton = new JButton("Skip");
- this.stopButton = new JButton("Stop");
- this.message = new JLabel("DataMap already contains this table. Overwrite?");
-
- // assemble
- JPanel messagePanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 20));
- messagePanel.add(message);
-
- JPanel checkPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 5));
- checkPanel.add(rememberSelection);
-
- JPanel buttons = PanelFactory.createButtonPanel(new JButton[] {
- skipButton, overwriteButton, stopButton
- });
-
- Container contentPane = getContentPane();
- contentPane.setLayout(new BorderLayout());
- contentPane.add(messagePanel, BorderLayout.NORTH);
- contentPane.add(checkPanel, BorderLayout.CENTER);
- contentPane.add(buttons, BorderLayout.SOUTH);
-
- setModal(true);
- setResizable(false);
- setSize(250, 150);
- setTitle("DbEntity Already Exists");
- setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
- }
-
- private void initController() {
- overwriteButton.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- updateModel(true, false);
- }
- });
-
- skipButton.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- updateModel(false, false);
- }
- });
-
- stopButton.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- updateModel(false, true);
- }
- });
- }
-
- private void updateModel(boolean overwrite, boolean stop) {
- if (helper != null) {
- helper.setOverwritePreferenceSet(rememberSelection.isSelected());
- helper.setOverwritingEntities(overwrite);
- helper.setStoppingReverseEngineering(stop);
- }
-
- this.setVisible(false);
- }
-
- public void initFromModel(DbLoaderHelper helper, String tableName) {
- this.helper = helper;
- this.message.setText("DataMap already contains table '"
- + tableName
- + "'. Overwrite?");
-
- validate();
- pack();
- }
-}