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);
}