You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/11/14 14:27:56 UTC

[25/32] cayenne git commit: Add saver of advance mode. Relativize custom template's path

Add saver of advance mode. Relativize custom template's path


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/c813e767
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/c813e767
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/c813e767

Branch: refs/heads/master
Commit: c813e7679de1b4d1f65758dee2faa2b52eaaf583
Parents: ac6819f
Author: Arseni Bulatski <an...@gmail.com>
Authored: Mon Nov 12 17:41:56 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Mon Nov 12 17:41:56 2018 +0300

----------------------------------------------------------------------
 .../cayenne/gen/xml/CgenConfigHandler.java      |  2 +-
 .../cayenne/modeler/CodeTemplateManager.java    |  9 +++++++--
 .../editor/cgen/CodeGeneratorController.java    | 12 ++++++++++-
 .../editor/cgen/CustomModeController.java       | 16 +++++++++++----
 .../modeler/editor/cgen/CustomModePanel.java    | 21 ++++++++++++--------
 .../editor/cgen/GeneratorTabController.java     |  4 ++++
 6 files changed, 48 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
index 2384f10..c73e24b 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
@@ -40,7 +40,7 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
     private static final String OUTPUT_DIRECTORY_TAG = "destDir";
     private static final String GENERATION_MODE_TAG = "mode";
     private static final String SUBCLASS_TEMPLATE_TAG = "template";
-    private static final String SUPERCLASS_TEMPLATE_TAG = "superclassTemplate";
+    private static final String SUPERCLASS_TEMPLATE_TAG = "superTemplate";
     private static final String OUTPUT_PATTERN_TAG = "outputPattern";
     private static final String MAKE_PAIRS_TAG = "makePairs";
     private static final String USE_PKG_PATH_TAG = "usePkgPath";

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
index 98f0dc9..ccb4980 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
@@ -56,6 +56,7 @@ public class CodeTemplateManager {
 	private List<String> standardSubclassTemplates;
 	private List<String> standardSuperclassTemplates;
 	private Map<String, String> customTemplates;
+	private Map<String, String> reverseCustomTemplate;
 	private Map<String, String> standardTemplates;
 
 	private List<String> standartEmbeddableTemplates;
@@ -98,6 +99,10 @@ public class CodeTemplateManager {
 		standartDataMapSuperclassTemplates.add(STANDART_DATAMAP_SUPERCLASS);
 
 		updateCustomTemplates(getTemplatePreferences(application));
+		reverseCustomTemplate = new HashMap<>();
+		for(Map.Entry<String, String> entry : customTemplates.entrySet()){
+			reverseCustomTemplate.put(entry.getValue(), entry.getKey());
+		}
 
 		standardTemplates = new HashMap<>();
 		standardTemplates.put(STANDARD_SERVER_SUPERCLASS, ClassGenerationAction.SUPERCLASS_TEMPLATE);
@@ -161,8 +166,8 @@ public class CodeTemplateManager {
 	}
 
 	public String getNameByPath(String name) {
-		if(customTemplates.containsKey(name)){
-			return customTemplates.get(name).toString();
+		if(reverseCustomTemplate.containsKey(name)){
+			return reverseCustomTemplate.get(name);
 		} else {
 			Object value = reverseStandartTemplates.get(name);
 			return value != null ? value.toString() : null;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index 1244178..0785820 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -68,13 +68,23 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase {
         classesSelectedAction();
         CgenConfiguration cgenConfiguration = createConfiguration();
         GeneratorController modeController = prevGeneratorController.get(dataMap) != null ? prevGeneratorController.get(dataMap) : cgenConfiguration.isClient() ?
-                generatorSelector.getClientGeneratorController() : generatorSelector.getStandartController();
+                generatorSelector.getClientGeneratorController() : isDefaultConfig(cgenConfiguration) ?
+                generatorSelector.getStandartController() : generatorSelector.getCustomModeController();
         prevGeneratorController.put(dataMap, modeController);
         generatorSelector.setSelectedController(modeController);
         classesSelector.startup();
         initFromModel = false;
     }
 
+    private boolean isDefaultConfig(CgenConfiguration cgenConfiguration) {
+        return cgenConfiguration.isMakePairs() && cgenConfiguration.isUsePkgPath() && !cgenConfiguration.isOverwrite() &&
+                !cgenConfiguration.isCreatePKProperties() && !cgenConfiguration.isCreatePropertyNames() &&
+                cgenConfiguration.getOutputPattern().equals("*.java") &&
+                cgenConfiguration.getTemplate().equals(ClassGenerationAction.SUBCLASS_TEMPLATE) &&
+                cgenConfiguration.getSuperTemplate().equals(ClassGenerationAction.SUPERCLASS_TEMPLATE);
+
+    }
+
     private void initListeners(){
         projectController.addObjEntityDisplayListener(e -> super.addToSelectedEntities(e.getEntity().getDataMap(), Collections.singleton(e.getEntity().getName())));
         projectController.addEmbeddableDisplayListener(e -> super.addToSelectedEmbeddables(e.getEmbeddable().getDataMap(), Collections.singleton(e.getEmbeddable().getClassName())));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
index 4a23e6b..c591584 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
@@ -25,8 +25,10 @@ import org.apache.cayenne.modeler.CodeTemplateManager;
 import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog;
 import org.apache.cayenne.swing.BindingBuilder;
 
-import javax.swing.DefaultComboBoxModel;
-import java.awt.Component;
+import javax.swing.*;
+import java.awt.*;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -87,11 +89,17 @@ public class CustomModeController extends GeneratorController {
     }
 
     private void updateComboBoxes() {
-        view.getSubclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(cgenConfiguration.getTemplate()));
-        view.getSuperclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(cgenConfiguration.getSuperTemplate()));
+        view.getSubclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(
+                getAbsoluteTemplatePath(cgenConfiguration.getTemplate(), cgenConfiguration.getRootPath())));
+        view.getSuperclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(
+                getAbsoluteTemplatePath(cgenConfiguration.getSuperTemplate(), cgenConfiguration.getRootPath())));
         view.setDisableSuperComboBoxes(view.getPairs().isSelected());
     }
 
+    private String getAbsoluteTemplatePath(String relTemplatePath, Path rootPath) {
+        return rootPath.resolve(Paths.get(relTemplatePath)).toString();
+    }
+
     private void initListeners(){
         view.getPairs().addActionListener(val -> {
             cgenConfiguration.setMakePairs(view.getPairs().isSelected());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
index 8b1d2a3..16c8edf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.editor.cgen;
 
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.ComboBoxAdapter;
@@ -29,12 +30,10 @@ import org.apache.cayenne.swing.components.JCayenneCheckBox;
 import org.apache.cayenne.swing.control.ActionLink;
 import org.apache.cayenne.validation.ValidationException;
 
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
+import javax.swing.*;
+import java.awt.*;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 /**
  * @since 4.1
@@ -58,7 +57,8 @@ public class CustomModePanel extends GeneratorControllerPanel {
         this.superclassTemplate = new ComboBoxAdapter<String>(superclassField) {
             @Override
             protected void updateModel(String item) throws ValidationException {
-                getCgenByDataMap().setSuperTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(String.valueOf(item)));
+                CgenConfiguration cgenConfiguration = getCgenByDataMap();
+                cgenConfiguration.setSuperTemplate(getTemplatePath(cgenConfiguration.getRootPath(), item));
                 if(!codeGeneratorControllerBase.isInitFromModel()) {
                     projectController.setDirty(true);
                 }
@@ -69,7 +69,8 @@ public class CustomModePanel extends GeneratorControllerPanel {
         this.subclassTemplate = new ComboBoxAdapter<String>(subclassField) {
             @Override
             protected void updateModel(String item) throws ValidationException {
-                getCgenByDataMap().setTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(String.valueOf(item)));
+                CgenConfiguration cgenConfiguration = getCgenByDataMap();
+                cgenConfiguration.setTemplate(getTemplatePath(cgenConfiguration.getRootPath(), item));
                 if(!codeGeneratorControllerBase.isInitFromModel()) {
                     projectController.setDirty(true);
                 }
@@ -143,6 +144,10 @@ public class CustomModePanel extends GeneratorControllerPanel {
         add(builder.getPanel(), BorderLayout.CENTER);
     }
 
+    private String getTemplatePath(Path rootPath, String templatePath) {
+        return rootPath.relativize(Paths.get(Application.getInstance().getCodeTemplateManager().getTemplatePath(String.valueOf(templatePath)))).toString();
+    }
+
     public void setDisableSuperComboBoxes(boolean val){
         superclassTemplate.getComboBox().setEnabled(val);
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c813e767/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
index 77a71b8..0956cc3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
@@ -103,6 +103,10 @@ public class GeneratorTabController extends CayenneController {
         return controllers.get(STANDARD_OBJECTS_MODE);
     }
 
+    GeneratorController getCustomModeController() {
+        return controllers.get(ADVANCED_MODE);
+    }
+
     GeneratorController getClientGeneratorController() {
         return controllers.get(CLIENT_OBJECTS_MODE);
     }