This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new f480ab6b9 Modeler cleanup
f480ab6b9 is described below
commit f480ab6b903992ecab9493176cef56365c9b8b60
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sat May 2 18:13:11 2026 -0400
Modeler cleanup
PreferencesRepository
---
.../cayenne/modeler/pref/ClasspathPrefs.java | 2 +-
.../apache/cayenne/modeler/pref/GeneralPrefs.java | 18 ++---
.../modeler/pref/PreferencesRepository.java | 17 ++++-
.../cayenne/modeler/pref/RecentProjectsPrefs.java | 2 +-
...igration.java => _1_DbConnectorsMigration.java} | 4 +-
...rsMigration.java => _2_ClasspathMigration.java} | 36 +++++++---
...igration.java => _3_GeneralPrefsMigration.java} | 27 +++++---
...ration.java => _4_RecentProjectsMigration.java} | 20 +++---
...gration.java => _5_FrameGeometryMigration.java} | 34 +++++++---
...tion.java => _6_ProjectSplitPaneMigration.java} | 24 ++++---
.../migration/_7_EntityTablePrefsMigration.java | 78 ++++++++++++++++++++++
.../ui/confirmremove/ConfirmRemoveDialog.java | 8 +--
.../general/GeneralPreferencesController.java | 6 +-
13 files changed, 201 insertions(+), 75 deletions(-)
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ClasspathPrefs.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ClasspathPrefs.java
index 8541ba7be..d3421996e 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ClasspathPrefs.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ClasspathPrefs.java
@@ -32,7 +32,7 @@ public final class ClasspathPrefs implements
PreferenceAdapter {
private static final Logger LOGGER =
LoggerFactory.getLogger(ClasspathPrefs.class);
- static final String NODE = "classpath";
+ public static final String NODE = "classpath";
private final Preferences prefs;
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/GeneralPrefs.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/GeneralPrefs.java
index a02e7ca88..5d3683e45 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/GeneralPrefs.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/GeneralPrefs.java
@@ -23,12 +23,12 @@ import java.util.prefs.Preferences;
public final class GeneralPrefs implements PreferenceAdapter {
- static final String NODE = "general";
+ public static final String NODE = "general";
- static final String AUTO_LOAD_PROJECT = "autoLoadProject";
- static final String DELETE_PROMPT = "deletePrompt";
- static final String ENCODING = "encoding";
- static final String FAVOURITE_DATA_SOURCE = "favouriteDataSource";
+ public static final String AUTO_LOAD_PROJECT = "autoLoadProject";
+ public static final String NO_DELETE_PROMPT = "noDeletePrompt";
+ public static final String ENCODING = "encoding";
+ public static final String FAVOURITE_DATA_SOURCE = "favouriteDataSource";
public static GeneralPrefs of(PreferencesRepository repository) {
return new GeneralPrefs(repository.appPref(NODE));
@@ -49,12 +49,12 @@ public final class GeneralPrefs implements
PreferenceAdapter {
prefs.putBoolean(AUTO_LOAD_PROJECT, v);
}
- public boolean isDeletePrompt() {
- return prefs.getBoolean(DELETE_PROMPT, false);
+ public boolean isNoDeletePrompt() {
+ return prefs.getBoolean(NO_DELETE_PROMPT, false);
}
- public void setDeletePrompt(boolean v) {
- prefs.putBoolean(DELETE_PROMPT, v);
+ public void setNoDeletePrompt(boolean v) {
+ prefs.putBoolean(NO_DELETE_PROMPT, v);
}
public String getEncoding() {
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/PreferencesRepository.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/PreferencesRepository.java
index 516bd01cb..b2239237d 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/PreferencesRepository.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/PreferencesRepository.java
@@ -20,7 +20,13 @@ package org.apache.cayenne.modeler.pref;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.modeler.pref.migration.DbConnectorsMigration;
+import org.apache.cayenne.modeler.pref.migration._1_DbConnectorsMigration;
+import org.apache.cayenne.modeler.pref.migration._2_ClasspathMigration;
+import org.apache.cayenne.modeler.pref.migration._3_GeneralPrefsMigration;
+import org.apache.cayenne.modeler.pref.migration._4_RecentProjectsMigration;
+import org.apache.cayenne.modeler.pref.migration._5_FrameGeometryMigration;
+import org.apache.cayenne.modeler.pref.migration._6_ProjectSplitPaneMigration;
+import org.apache.cayenne.modeler.pref.migration._7_EntityTablePrefsMigration;
import org.apache.cayenne.project.Project;
import org.apache.cayenne.resource.Resource;
import org.slf4j.Logger;
@@ -66,7 +72,14 @@ public class PreferencesRepository {
private final List<PreferenceMigration> migrations;
private static List<PreferenceMigration> defaultMigrations() {
- return List.of(new DbConnectorsMigration());
+ return List.of(
+ new _1_DbConnectorsMigration(),
+ new _2_ClasspathMigration(),
+ new _3_GeneralPrefsMigration(),
+ new _4_RecentProjectsMigration(),
+ new _5_FrameGeometryMigration(),
+ new _6_ProjectSplitPaneMigration(),
+ new _7_EntityTablePrefsMigration());
}
public PreferencesRepository() {
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/RecentProjectsPrefs.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/RecentProjectsPrefs.java
index 0ff6b7cdf..771814950 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/RecentProjectsPrefs.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/RecentProjectsPrefs.java
@@ -34,7 +34,7 @@ public final class RecentProjectsPrefs implements
PreferenceAdapter {
public static final int MAX_SIZE = 12;
- static final String NODE = "lastProjects";
+ public static final String NODE = "lastProjects";
public static RecentProjectsPrefs of(PreferencesRepository repository) {
return new RecentProjectsPrefs(repository.appPref(NODE));
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_1_DbConnectorsMigration.java
similarity index 95%
copy from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
copy to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_1_DbConnectorsMigration.java
index 782d17349..edacbb5c8 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_1_DbConnectorsMigration.java
@@ -32,9 +32,9 @@ import java.util.prefs.Preferences;
* into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
* older Modeler installation on the same machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _1_DbConnectorsMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_1_DbConnectorsMigration.class);
private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_2_ClasspathMigration.java
similarity index 62%
copy from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
copy to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_2_ClasspathMigration.java
index 782d17349..cbd0f0962 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_2_ClasspathMigration.java
@@ -18,8 +18,8 @@
****************************************************************/
package org.apache.cayenne.modeler.pref.migration;
+import org.apache.cayenne.modeler.pref.ClasspathPrefs;
import org.apache.cayenne.modeler.pref.PreferenceMigration;
-import org.apache.cayenne.modeler.pref.PreferencesCopier;
import org.apache.cayenne.modeler.pref.PreferencesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,35 +28,49 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
- * Copies legacy DB connection profiles from {@code
org/apache/cayenne/dbConnectionInfo}
- * into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
- * older Modeler installation on the same machine still works.
+ * Copies legacy classpath entries from {@code
org/apache/cayenne/modeler/dialog/pref}
+ * into the new {@code app/classpath} layout. The legacy node was shared with
other
+ * dialogs, so only numeric keys (the format used by the old
ClasspathPreferences) are
+ * copied. Leaves the legacy node intact so an older Modeler installation on
the same
+ * machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _2_ClasspathMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_2_ClasspathMigration.class);
- private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
+ private static final String LEGACY_PATH =
"org/apache/cayenne/modeler/dialog/pref";
@Override
public int version() {
- return 1;
+ return 2;
}
@Override
public void apply(PreferencesRepository repo) {
Preferences legacy;
+ String[] legacyKeys;
try {
if (!Preferences.userRoot().nodeExists(LEGACY_PATH)) {
return;
}
legacy = Preferences.userRoot().node(LEGACY_PATH);
+ legacyKeys = legacy.keys();
} catch (BackingStoreException e) {
- LOGGER.warn("Error checking legacy dbConnectionInfo node", e);
+ LOGGER.warn("Error checking legacy classpath node", e);
return;
}
- Preferences target = repo.appPref("dbConnectors");
- PreferencesCopier.copy(legacy, target);
+ Preferences target = repo.appPref(ClasspathPrefs.NODE);
+ for (String key : legacyKeys) {
+ try {
+ Integer.parseInt(key);
+ } catch (NumberFormatException e) {
+ continue;
+ }
+ String value = legacy.get(key, "");
+ if (!value.isEmpty()) {
+ target.put(key, value);
+ }
+ }
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_3_GeneralPrefsMigration.java
similarity index 63%
copy from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
copy to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_3_GeneralPrefsMigration.java
index 782d17349..bff8e70bb 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_3_GeneralPrefsMigration.java
@@ -18,8 +18,8 @@
****************************************************************/
package org.apache.cayenne.modeler.pref.migration;
+import org.apache.cayenne.modeler.pref.GeneralPrefs;
import org.apache.cayenne.modeler.pref.PreferenceMigration;
-import org.apache.cayenne.modeler.pref.PreferencesCopier;
import org.apache.cayenne.modeler.pref.PreferencesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,19 +28,19 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
- * Copies legacy DB connection profiles from {@code
org/apache/cayenne/dbConnectionInfo}
- * into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
- * older Modeler installation on the same machine still works.
+ * Copies legacy general preferences from {@code
org/apache/cayenne/modeler/dialog/pref}
+ * into the new {@code app/general} layout. Leaves the legacy node intact so
an older
+ * Modeler installation on the same machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _3_GeneralPrefsMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_3_GeneralPrefsMigration.class);
- private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
+ private static final String LEGACY_PATH =
"org/apache/cayenne/modeler/dialog/pref";
@Override
public int version() {
- return 1;
+ return 3;
}
@Override
@@ -52,11 +52,16 @@ public class DbConnectorsMigration implements
PreferenceMigration {
}
legacy = Preferences.userRoot().node(LEGACY_PATH);
} catch (BackingStoreException e) {
- LOGGER.warn("Error checking legacy dbConnectionInfo node", e);
+ LOGGER.warn("Error checking legacy general prefs node", e);
return;
}
- Preferences target = repo.appPref("dbConnectors");
- PreferencesCopier.copy(legacy, target);
+ Preferences target = repo.appPref(GeneralPrefs.NODE);
+ target.putBoolean(GeneralPrefs.AUTO_LOAD_PROJECT,
legacy.getBoolean("autoLoadProject", false));
+ target.put(GeneralPrefs.ENCODING, legacy.get("encoding", ""));
+ target.put(GeneralPrefs.FAVOURITE_DATA_SOURCE,
legacy.get("favouriteDataSource", ""));
+
+ // legacy used the wrong name - "deletePrompt", for what was meant to
be "delete with no prompt"
+ target.putBoolean(GeneralPrefs.NO_DELETE_PROMPT,
legacy.getBoolean("deletePrompt", false));
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_4_RecentProjectsMigration.java
similarity index 75%
copy from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
copy to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_4_RecentProjectsMigration.java
index 782d17349..8e8ccd4f2 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_4_RecentProjectsMigration.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.pref.migration;
import org.apache.cayenne.modeler.pref.PreferenceMigration;
import org.apache.cayenne.modeler.pref.PreferencesCopier;
import org.apache.cayenne.modeler.pref.PreferencesRepository;
+import org.apache.cayenne.modeler.pref.RecentProjectsPrefs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,19 +29,20 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
- * Copies legacy DB connection profiles from {@code
org/apache/cayenne/dbConnectionInfo}
- * into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
- * older Modeler installation on the same machine still works.
+ * Copies the legacy "last opened projects" history from
+ * {@code org/apache/cayenne/editor/lastSeveralProjectFiles} into the new
+ * {@code app/lastProjects} layout. Leaves the legacy node intact so an older
+ * Modeler installation on the same machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _4_RecentProjectsMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_4_RecentProjectsMigration.class);
- private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
+ private static final String LEGACY_PATH =
"org/apache/cayenne/editor/lastSeveralProjectFiles";
@Override
public int version() {
- return 1;
+ return 4;
}
@Override
@@ -52,11 +54,11 @@ public class DbConnectorsMigration implements
PreferenceMigration {
}
legacy = Preferences.userRoot().node(LEGACY_PATH);
} catch (BackingStoreException e) {
- LOGGER.warn("Error checking legacy dbConnectionInfo node", e);
+ LOGGER.warn("Error checking legacy lastSeveralProjectFiles node",
e);
return;
}
- Preferences target = repo.appPref("dbConnectors");
+ Preferences target = repo.appPref(RecentProjectsPrefs.NODE);
PreferencesCopier.copy(legacy, target);
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_5_FrameGeometryMigration.java
similarity index 62%
copy from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
copy to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_5_FrameGeometryMigration.java
index 782d17349..8ed0e8dda 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_5_FrameGeometryMigration.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.modeler.pref.migration;
import org.apache.cayenne.modeler.pref.PreferenceMigration;
-import org.apache.cayenne.modeler.pref.PreferencesCopier;
import org.apache.cayenne.modeler.pref.PreferencesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,19 +27,22 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
- * Copies legacy DB connection profiles from {@code
org/apache/cayenne/dbConnectionInfo}
- * into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
- * older Modeler installation on the same machine still works.
+ * Copies legacy main-frame geometry (width / height / x / y) from
+ * {@code org/apache/cayenne/modeler} into the new {@code
app/ui/frame/geometry}
+ * layout. The legacy node is the {@code userNodeForPackage} of the modeler
+ * package and may hold unrelated keys, so only the four geometry keys are
+ * copied. Leaves the legacy node intact so an older Modeler installation on
the
+ * same machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _5_FrameGeometryMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_5_FrameGeometryMigration.class);
- private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
+ private static final String LEGACY_PATH = "org/apache/cayenne/modeler";
@Override
public int version() {
- return 1;
+ return 5;
}
@Override
@@ -52,11 +54,21 @@ public class DbConnectorsMigration implements
PreferenceMigration {
}
legacy = Preferences.userRoot().node(LEGACY_PATH);
} catch (BackingStoreException e) {
- LOGGER.warn("Error checking legacy dbConnectionInfo node", e);
+ LOGGER.warn("Error checking legacy frame geometry node", e);
return;
}
- Preferences target = repo.appPref("dbConnectors");
- PreferencesCopier.copy(legacy, target);
+ Preferences target = repo.uiPref("frame/geometry");
+ copyInt(legacy, target, "width");
+ copyInt(legacy, target, "height");
+ copyInt(legacy, target, "x");
+ copyInt(legacy, target, "y");
+ }
+
+ private static void copyInt(Preferences src, Preferences dst, String key) {
+ int value = src.getInt(key, Integer.MIN_VALUE);
+ if (value != Integer.MIN_VALUE) {
+ dst.putInt(key, value);
+ }
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_6_ProjectSplitPaneMigration.java
similarity index 70%
rename from
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
rename to
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_6_ProjectSplitPaneMigration.java
index 782d17349..753a2523e 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/DbConnectorsMigration.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_6_ProjectSplitPaneMigration.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.modeler.pref.migration;
import org.apache.cayenne.modeler.pref.PreferenceMigration;
-import org.apache.cayenne.modeler.pref.PreferencesCopier;
import org.apache.cayenne.modeler.pref.PreferencesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,19 +27,22 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
- * Copies legacy DB connection profiles from {@code
org/apache/cayenne/dbConnectionInfo}
- * into the new {@code app/dbConnectors} layout. Leaves the legacy node intact
so an
+ * Copies the legacy project tree / editor splitter position from
+ * {@code org/apache/cayenne/modeler/editor/splitPane/divider} into the new
+ * {@code app/ui/project/splitPane} layout. Leaves the legacy node intact so an
* older Modeler installation on the same machine still works.
*/
-public class DbConnectorsMigration implements PreferenceMigration {
+public class _6_ProjectSplitPaneMigration implements PreferenceMigration {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DbConnectorsMigration.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_6_ProjectSplitPaneMigration.class);
- private static final String LEGACY_PATH =
"org/apache/cayenne/dbConnectionInfo";
+ private static final String LEGACY_PATH =
"org/apache/cayenne/modeler/editor/splitPane/divider";
+
+ private static final String DIVIDER_LOCATION = "dividerLocation";
@Override
public int version() {
- return 1;
+ return 6;
}
@Override
@@ -52,11 +54,13 @@ public class DbConnectorsMigration implements
PreferenceMigration {
}
legacy = Preferences.userRoot().node(LEGACY_PATH);
} catch (BackingStoreException e) {
- LOGGER.warn("Error checking legacy dbConnectionInfo node", e);
+ LOGGER.warn("Error checking legacy project splitPane node", e);
return;
}
- Preferences target = repo.appPref("dbConnectors");
- PreferencesCopier.copy(legacy, target);
+ int dividerLocation = legacy.getInt(DIVIDER_LOCATION,
Integer.MIN_VALUE);
+ if (dividerLocation != Integer.MIN_VALUE) {
+ repo.uiPref("project/splitPane").putInt(DIVIDER_LOCATION,
dividerLocation);
+ }
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_7_EntityTablePrefsMigration.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_7_EntityTablePrefsMigration.java
new file mode 100644
index 000000000..d3cc6aea5
--- /dev/null
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/migration/_7_EntityTablePrefsMigration.java
@@ -0,0 +1,78 @@
+/*****************************************************************
+ * 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
+ *
+ * https://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.pref.migration;
+
+import org.apache.cayenne.modeler.pref.PreferenceMigration;
+import org.apache.cayenne.modeler.pref.PreferencesCopier;
+import org.apache.cayenne.modeler.pref.PreferencesRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
+
+/**
+ * Copies legacy column widths / order / sort prefs for the four primary entity
+ * tables (ObjAttribute, ObjRelationship, DbAttribute, DbRelationship) into the
+ * new {@code app/ui/...} layout. Legacy nodes were derived from
+ * {@code userNodeForPackage(<table-model class>).node(<sub-path>)}; the
+ * {@code width_*}, {@code order_*}, {@code sort_column}, and {@code
sort_order}
+ * key formats are identical to the new layout, so a recursive subtree copy
+ * suffices. Leaves the legacy nodes intact so an older Modeler installation on
+ * the same machine still works.
+ */
+public class _7_EntityTablePrefsMigration implements PreferenceMigration {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(_7_EntityTablePrefsMigration.class);
+
+ private static final String[][] PATHS = {
+ // {legacyAbsolutePath, newRelativeUiPath}
+ {"org/apache/cayenne/modeler/editor/objEntity/attributeTable",
"objEntity/attributeTable"},
+ {"org/apache/cayenne/modeler/editor/objEntity/relationshipTable",
"objEntity/relationshipTable"},
+ {"org/apache/cayenne/modeler/editor/dbentity/attributeTable",
"dbEntity/attributeTable"},
+ {"org/apache/cayenne/modeler/editor/dbentity/relationshipTable",
"dbEntity/relationshipTable"},
+ };
+
+ @Override
+ public int version() {
+ return 7;
+ }
+
+ @Override
+ public void apply(PreferencesRepository repo) {
+ for (String[] pair : PATHS) {
+ copyTable(repo, pair[0], pair[1]);
+ }
+ }
+
+ private static void copyTable(PreferencesRepository repo, String
legacyPath, String uiPath) {
+ Preferences legacy;
+ try {
+ if (!Preferences.userRoot().nodeExists(legacyPath)) {
+ return;
+ }
+ legacy = Preferences.userRoot().node(legacyPath);
+ } catch (BackingStoreException e) {
+ LOGGER.warn("Error checking legacy table prefs node '{}'",
legacyPath, e);
+ return;
+ }
+
+ PreferencesCopier.copy(legacy, repo.uiPref(uiPath));
+ }
+}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
index 2dedecd9d..240d3823f 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/confirmremove/ConfirmRemoveDialog.java
@@ -25,7 +25,7 @@ import javax.swing.*;
/**
* Used to confirm deleting items in the model.
- *
+ *
*/
public class ConfirmRemoveDialog {
@@ -54,7 +54,7 @@ public class ConfirmRemoveDialog {
};
JOptionPane pane = new JOptionPane(message,
JOptionPane.QUESTION_MESSAGE);
- pane.setOptions(new Object[]{ DELETE, "Cancel" });
+ pane.setOptions(new Object[]{DELETE, "Cancel"});
pane.setInitialValue(DELETE);
pane.createDialog(application.getFrameController().getView(), "Confirm
Delete").setVisible(true);
@@ -63,7 +63,7 @@ public class ConfirmRemoveDialog {
// If the user clicks "cancel" or window close button, we'll just
ignore whatever's in the checkbox because
// it's non-sensical.
if (shouldDelete) {
-
GeneralPrefs.of(application.getPreferencesRepository()).setDeletePrompt(!neverPromptAgainBox.isSelected());
+
GeneralPrefs.of(application.getPreferencesRepository()).setNoDeletePrompt(neverPromptAgainBox.isSelected());
}
}
@@ -72,7 +72,7 @@ public class ConfirmRemoveDialog {
}
public boolean shouldDelete(String name) {
- if (allowAsking &&
GeneralPrefs.of(application.getPreferencesRepository()).isDeletePrompt()) {
+ if (allowAsking &&
!GeneralPrefs.of(application.getPreferencesRepository()).isNoDeletePrompt()) {
showDialog(name);
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/general/GeneralPreferencesController.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/general/GeneralPreferencesController.java
index eb056ae84..9a04d035f 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/general/GeneralPreferencesController.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/general/GeneralPreferencesController.java
@@ -53,9 +53,7 @@ public class GeneralPreferencesController extends
ChildController<PreferenceDial
view.getEncodingChoices().setModel(new
DefaultComboBoxModel<>(supportedEncodings()));
selectEncoding(prefs.getEncoding());
view.getAutoLoadProject().setSelected(prefs.isAutoLoadProject());
-
- // Note how the meaning of the preference is the opposite of the
checkbox
- view.getNoDeletePrompt().setSelected(!prefs.isDeletePrompt());
+ view.getNoDeletePrompt().setSelected(prefs.isNoDeletePrompt());
}
@Override
@@ -71,7 +69,7 @@ public class GeneralPreferencesController extends
ChildController<PreferenceDial
prefs.setEncoding(encoding);
prefs.setAutoLoadProject(view.getAutoLoadProject().isSelected());
- prefs.setDeletePrompt(!view.getNoDeletePrompt().isSelected());
+ prefs.setNoDeletePrompt(view.getNoDeletePrompt().isSelected());
}
/**