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