You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2010/02/08 16:49:03 UTC
svn commit: r907702 - in
/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler:
ProjectController.java ProjectTreeView.java action/OpenProjectAction.java
Author: oltka
Date: Mon Feb 8 15:49:02 2010
New Revision: 907702
URL: http://svn.apache.org/viewvc?rev=907702&view=rev
Log:
CAY-1339 Remove org.apache.cayenne.project package from runtime
* The Modeler attempts to read the project before checking whether an upgrade is needed. Not a good idea as the older or newer format may cause an exception, instead of an upgrade message. Right now it simply prints a few warnings in the logs, but still worth doing this right - check upgrade status before reading the project. It will work faster too.
* More on upgrades... There is a new UpgradeType that we didn't have before: INTERMEDIATE_UPGRADE_NEEDED. We need to check for it in the OpenProjectAction and display a special dialog. This is for the projects older than 3.0. We can't upgrade them correctly and will tell the users to download Modeler of {UpgradeMetadata.intermediateUpgradeVersion} first and do an intermediate upgrade before doing 3.1 upgrade.
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java?rev=907702&r1=907701&r2=907702&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java Mon Feb 8 15:49:02 2010
@@ -273,6 +273,7 @@
private EntityResolver entityResolver;
+
/**
* Project files watcher. When project file is changed, user will be asked to confirm
* loading the changes
@@ -294,6 +295,10 @@
public Project getProject() {
return project;
}
+
+ public EntityResolver getEntityResolver() {
+ return entityResolver;
+ }
public void setProject(Project currentProject) {
if (this.project != currentProject) // strange enough, this method is called twice
@@ -340,6 +345,17 @@
public Domain getApplicationPreferenceDomain() {
return getApplication().getPreferenceDomain();
}
+
+ public void updateEntityResolver() {
+ entityResolver.clearCache();
+ entityResolver.setDataMaps(((DataChannelDescriptor)project.getRootNode()).getDataMaps());
+
+ Iterator<DataMap> it = entityResolver.getDataMaps().iterator();
+ while (it.hasNext()) {
+ DataMap map = it.next();
+ map.setNamespace(entityResolver);
+ }
+ }
/**
* Returns top preferences Domain for the current project, throwing an exception if no
@@ -1655,9 +1671,6 @@
public void addDataMap(Object src, DataMap map, boolean makeCurrent) {
- entityResolver.addDataMap(map);
- map.setNamespace(entityResolver);
-
// new map was added.. link it to domain (and node if possible)
currentState.domain.getDataMaps().add(map);
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java?rev=907702&r1=907701&r2=907702&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java Mon Feb 8 15:49:02 2010
@@ -559,6 +559,7 @@
updateNode(path);
if (e.isNameChange()) {
+ mediator.updateEntityResolver();
positionNode(path, Comparators.getDataDomainChildrenComparator());
showNode(path);
}
@@ -572,6 +573,9 @@
DefaultMutableTreeNode newMapNode = ProjectTreeFactory.wrapProjectNode(e
.getDataMap());
+
+ mediator.getEntityResolver().addDataMap(e.getDataMap());
+
positionNode(domainNode, newMapNode, Comparators
.getDataDomainChildrenComparator());
showNode(newMapNode);
@@ -584,6 +588,8 @@
dataChannelDescriptor, map
});
+ mediator.getEntityResolver().removeDataMap(e.getDataMap());
+
// Clean up map from the nodes
for (DataNodeDescriptor dataNode : new ArrayList<DataNodeDescriptor>(dataChannelDescriptor.getNodeDescriptors())) {
removeNode(new Object[] {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java?rev=907702&r1=907701&r2=907702&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java Mon Feb 8 15:49:02 2010
@@ -141,9 +141,6 @@
UpgradeHandler handler = upgrader.getUpgradeHandler(rootSource);
UpgradeMetaData md = handler.getUpgradeMetaData();
- Project project = getApplication().getInjector().getInstance(
- ProjectLoader.class).loadProject(rootSource);
-
if (UpgradeType.DOWNGRADE_NEEDED == md.getUpgradeType()) {
JOptionPane
.showMessageDialog(
@@ -153,17 +150,24 @@
JOptionPane.OK_OPTION);
closeProject(false);
}
+ else if (UpgradeType.INTERMEDIATE_UPGRADE_NEEDED == md.getUpgradeType()) {
+ JOptionPane
+ .showMessageDialog(
+ Application.getFrame(),
+ "Can't upgrade project. Use the Modeller "+ md.getIntermediateUpgradeVersion() +
+ " and do an intermediate upgrade before doing 3.1 upgrade.",
+ "Can't Upgrade Project",
+ JOptionPane.OK_OPTION);
+ closeProject(false);
+ }
else if (UpgradeType.UPGRADE_NEEDED == md.getUpgradeType()) {
if (processUpgrades(md)) {
// perform upgrade
logObj.info("Will upgrade project "
- + project.getConfigurationResource().getURL().getPath());
+ + url.getPath());
Resource upgraded = handler.performUpgrade();
if (upgraded != null) {
- project = getApplication().getInjector().getInstance(
- ProjectLoader.class).loadProject(upgraded);
-
- controller.projectOpenedAction(project, config);
+ Project project = openProjectResourse(upgraded, config, controller);
getProjectController().getProjectWatcher().pauseWatching();
getProjectController().getProjectWatcher().reconfigure();
@@ -185,7 +189,7 @@
}
}
else {
- controller.projectOpenedAction(project, config);
+ openProjectResourse(rootSource, config, controller);
}
}
catch (Exception ex) {
@@ -193,6 +197,15 @@
ErrorDebugDialog.guiWarning(ex, "Error loading project");
}
}
+
+ private Project openProjectResourse(Resource resource, Configuration config, CayenneModelerController controller) {
+ Project project = getApplication().getInjector().getInstance(
+ ProjectLoader.class).loadProject(resource);
+
+ controller.projectOpenedAction(project, config);
+
+ return project;
+ }
protected boolean processUpgrades(UpgradeMetaData md) {
// need an upgrade