This is an automated email from the ASF dual-hosted git repository. ntimofeev 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 94cfc16 Solution for issue with missed custom templates. new bfb848e Merge pull request #497 from Ivan-nikitko/Master_Modeler's_template_issue 94cfc16 is described below commit 94cfc16d26619f6bae35bcf57b426abc54be6f8f Author: ivannikitka <nikitko.i...@gmail.com> AuthorDate: Fri Feb 4 14:38:32 2022 +0300 Solution for issue with missed custom templates. --- .../cayenne/modeler/CodeTemplateManager.java | 219 ++++++++++++--------- .../modeler/dialog/pref/TemplateCreator.java | 35 ++-- .../modeler/editor/cgen/CustomModeController.java | 119 ++++------- 3 files changed, 177 insertions(+), 196 deletions(-) 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 09ea39a..ca1484a 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 @@ -59,63 +59,68 @@ public class CodeTemplateManager { public static final String NODE_NAME = "codeTemplateManager"; - private List<String> standardSubclassTemplates; - private List<String> standardSuperclassTemplates; - private List<String> standardClientSubclassTemplates; - private List<String> standardClientSuperclassTemplates; + private List<String> defaultSubclassTemplates; + private List<String> defaultSuperclassTemplates; + private List<String> defaultClientSubclassTemplates; + private List<String> defaultClientSuperclassTemplates; private Map<String, String> customTemplates; private Map<String, String> reverseCustomTemplate; - private Map<String, String> standardTemplates; + private Map<String, String> defaultTemplates; - private List<String> standardEmbeddableTemplates; - private List<String> standardEmbeddableSuperclassTemplates; + private List<String> defaultEmbeddableTemplates; + private List<String> defaultEmbeddableSuperclassTemplates; - private List<String> standardServerDataMapTemplates; - private List<String> standardServerDataMapSuperclassTemplates; - private List<String> standardClientDataMapTemplates; - private List<String> standardClientDataMapSuperclassTemplates; + private List<String> defaultServerDataMapTemplates; + private List<String> defaultServerDataMapSuperclassTemplates; + private List<String> defaultClientDataMapTemplates; + private List<String> defaultClientDataMapSuperclassTemplates; - private Map<String, String> reverseStandartTemplates; + private Map<String, String> reverseDefaultsTemplates; - private static Logger logger = LoggerFactory.getLogger(CodeTemplateManager.class); + private final Application application; + private final Preferences templatePreferences; + + private static final Logger logger = LoggerFactory.getLogger(CodeTemplateManager.class); public Preferences getTemplatePreferences(Application application) { return application.getPreferencesNode(this.getClass(), NODE_NAME); } public CodeTemplateManager(Application application) { - standardSuperclassTemplates = new ArrayList<>(2); - standardSuperclassTemplates.add(STANDARD_SERVER_SUPERCLASS); + this.application = application; + this.templatePreferences = getTemplatePreferences(application); + defaultSuperclassTemplates = new ArrayList<>(2); + defaultSuperclassTemplates.add(STANDARD_SERVER_SUPERCLASS); - standardClientSuperclassTemplates = new ArrayList<>(); - standardClientSuperclassTemplates.add(STANDARD_CLIENT_SUPERCLASS); + defaultClientSuperclassTemplates = new ArrayList<>(); + defaultClientSuperclassTemplates.add(STANDARD_CLIENT_SUPERCLASS); - standardSubclassTemplates = new ArrayList<>(2); - standardSubclassTemplates.add(SINGLE_SERVER_CLASS); - standardSubclassTemplates.add(STANDARD_SERVER_SUBCLASS); + defaultSubclassTemplates = new ArrayList<>(2); + defaultSubclassTemplates.add(SINGLE_SERVER_CLASS); + defaultSubclassTemplates.add(STANDARD_SERVER_SUBCLASS); - standardClientSubclassTemplates = new ArrayList<>(); - standardClientSubclassTemplates.add(STANDARD_CLIENT_SUBCLASS); + defaultClientSubclassTemplates = new ArrayList<>(); + defaultClientSubclassTemplates.add(STANDARD_CLIENT_SUBCLASS); - standardEmbeddableTemplates = new ArrayList<>(); - standardEmbeddableTemplates.add(STANDARD_EMBEDDABLE_SUBCLASS); - standardEmbeddableTemplates.add(SINGLE_EMBEDDABLE_CLASS); + defaultEmbeddableTemplates = new ArrayList<>(); + defaultEmbeddableTemplates.add(STANDARD_EMBEDDABLE_SUBCLASS); + defaultEmbeddableTemplates.add(SINGLE_EMBEDDABLE_CLASS); - standardEmbeddableSuperclassTemplates = new ArrayList<>(); - standardEmbeddableSuperclassTemplates.add(STANDARD_EMBEDDABLE_SUPERCLASS); + defaultEmbeddableSuperclassTemplates = new ArrayList<>(); + defaultEmbeddableSuperclassTemplates.add(STANDARD_EMBEDDABLE_SUPERCLASS); - standardServerDataMapTemplates = new ArrayList<>(); - standardServerDataMapTemplates.add(STANDARD_SERVER_DATAMAP_SUBCLASS); - standardServerDataMapTemplates.add(SINGLE_DATAMAP_CLASS); + defaultServerDataMapTemplates = new ArrayList<>(); + defaultServerDataMapTemplates.add(STANDARD_SERVER_DATAMAP_SUBCLASS); + defaultServerDataMapTemplates.add(SINGLE_DATAMAP_CLASS); - standardServerDataMapSuperclassTemplates = new ArrayList<>(); - standardServerDataMapSuperclassTemplates.add(STANDARD_SERVER_DATAMAP_SUPERCLASS); + defaultServerDataMapSuperclassTemplates = new ArrayList<>(); + defaultServerDataMapSuperclassTemplates.add(STANDARD_SERVER_DATAMAP_SUPERCLASS); - standardClientDataMapTemplates = new ArrayList<>(); - standardClientDataMapTemplates.add(STANDARD_CLIENT_DATAMAP_SUBCLASS); + defaultClientDataMapTemplates = new ArrayList<>(); + defaultClientDataMapTemplates.add(STANDARD_CLIENT_DATAMAP_SUBCLASS); - standardClientDataMapSuperclassTemplates = new ArrayList<>(); - standardClientDataMapSuperclassTemplates.add(STANDARD_CLIENT_DATAMAP_SUPERCLASS); + defaultClientDataMapSuperclassTemplates = new ArrayList<>(); + defaultClientDataMapSuperclassTemplates.add(STANDARD_CLIENT_DATAMAP_SUPERCLASS); updateCustomTemplates(getTemplatePreferences(application)); reverseCustomTemplate = new HashMap<>(); @@ -123,39 +128,27 @@ public class CodeTemplateManager { reverseCustomTemplate.put(entry.getValue(), entry.getKey()); } - standardTemplates = new HashMap<>(); - standardTemplates.put(STANDARD_SERVER_SUPERCLASS, ClassGenerationAction.SUPERCLASS_TEMPLATE); - standardTemplates.put(STANDARD_CLIENT_SUPERCLASS, ClientClassGenerationAction.SUPERCLASS_TEMPLATE); - standardTemplates.put(STANDARD_SERVER_SUBCLASS, ClassGenerationAction.SUBCLASS_TEMPLATE); - standardTemplates.put(STANDARD_CLIENT_SUBCLASS, ClientClassGenerationAction.SUBCLASS_TEMPLATE); - standardTemplates.put(SINGLE_SERVER_CLASS, ClassGenerationAction.SINGLE_CLASS_TEMPLATE); - - standardTemplates.put(STANDARD_EMBEDDABLE_SUPERCLASS, ClassGenerationAction.EMBEDDABLE_SUPERCLASS_TEMPLATE); - standardTemplates.put(STANDARD_EMBEDDABLE_SUBCLASS, ClassGenerationAction.EMBEDDABLE_SUBCLASS_TEMPLATE); - standardTemplates.put(SINGLE_EMBEDDABLE_CLASS, ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE); - - standardTemplates.put(STANDARD_SERVER_DATAMAP_SUBCLASS, ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE); - standardTemplates.put(STANDARD_CLIENT_DATAMAP_SUBCLASS, ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE); - standardTemplates.put(SINGLE_DATAMAP_CLASS, ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE); - standardTemplates.put(STANDARD_SERVER_DATAMAP_SUPERCLASS, ClassGenerationAction.DATAMAP_SUPERCLASS_TEMPLATE); - standardTemplates.put(STANDARD_CLIENT_DATAMAP_SUPERCLASS, ClientClassGenerationAction.DMAP_SUPERCLASS_TEMPLATE); - - reverseStandartTemplates = new HashMap<>(); - reverseStandartTemplates.put(ClassGenerationAction.SUBCLASS_TEMPLATE, STANDARD_SERVER_SUBCLASS); - reverseStandartTemplates.put(ClientClassGenerationAction.SUBCLASS_TEMPLATE, STANDARD_CLIENT_SUBCLASS); - reverseStandartTemplates.put(ClassGenerationAction.SINGLE_CLASS_TEMPLATE, SINGLE_SERVER_CLASS); - reverseStandartTemplates.put(ClientClassGenerationAction.SUPERCLASS_TEMPLATE, STANDARD_CLIENT_SUPERCLASS); - reverseStandartTemplates.put(ClassGenerationAction.SUPERCLASS_TEMPLATE, STANDARD_SERVER_SUPERCLASS); - - reverseStandartTemplates.put(ClassGenerationAction.EMBEDDABLE_SUPERCLASS_TEMPLATE, STANDARD_EMBEDDABLE_SUPERCLASS); - reverseStandartTemplates.put(ClassGenerationAction.EMBEDDABLE_SUBCLASS_TEMPLATE, STANDARD_EMBEDDABLE_SUBCLASS); - reverseStandartTemplates.put(ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE, SINGLE_EMBEDDABLE_CLASS); - - reverseStandartTemplates.put(ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE, STANDARD_SERVER_DATAMAP_SUBCLASS); - reverseStandartTemplates.put(ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE, STANDARD_CLIENT_DATAMAP_SUBCLASS); - reverseStandartTemplates.put(ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE, SINGLE_DATAMAP_CLASS); - reverseStandartTemplates.put(ClassGenerationAction.DATAMAP_SUPERCLASS_TEMPLATE, STANDARD_SERVER_DATAMAP_SUPERCLASS); - reverseStandartTemplates.put(ClientClassGenerationAction.DMAP_SUPERCLASS_TEMPLATE, STANDARD_CLIENT_DATAMAP_SUPERCLASS); + defaultTemplates = new HashMap<>(); + defaultTemplates.put(STANDARD_SERVER_SUPERCLASS, ClassGenerationAction.SUPERCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_CLIENT_SUPERCLASS, ClientClassGenerationAction.SUPERCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_SERVER_SUBCLASS, ClassGenerationAction.SUBCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_CLIENT_SUBCLASS, ClientClassGenerationAction.SUBCLASS_TEMPLATE); + defaultTemplates.put(SINGLE_SERVER_CLASS, ClassGenerationAction.SINGLE_CLASS_TEMPLATE); + + defaultTemplates.put(STANDARD_EMBEDDABLE_SUPERCLASS, ClassGenerationAction.EMBEDDABLE_SUPERCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_EMBEDDABLE_SUBCLASS, ClassGenerationAction.EMBEDDABLE_SUBCLASS_TEMPLATE); + defaultTemplates.put(SINGLE_EMBEDDABLE_CLASS, ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE); + + defaultTemplates.put(STANDARD_SERVER_DATAMAP_SUBCLASS, ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_CLIENT_DATAMAP_SUBCLASS, ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE); + defaultTemplates.put(SINGLE_DATAMAP_CLASS, ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE); + defaultTemplates.put(STANDARD_SERVER_DATAMAP_SUPERCLASS, ClassGenerationAction.DATAMAP_SUPERCLASS_TEMPLATE); + defaultTemplates.put(STANDARD_CLIENT_DATAMAP_SUPERCLASS, ClientClassGenerationAction.DMAP_SUPERCLASS_TEMPLATE); + + reverseDefaultsTemplates = new HashMap<>(); + for(Map.Entry<String, String> entry : defaultTemplates.entrySet()){ + reverseDefaultsTemplates.put(entry.getValue(), entry.getKey()); + } } /** @@ -191,61 +184,97 @@ public class CodeTemplateManager { logger.warn("Path for template named '{}' could not be resolved", name); } } - value = standardTemplates.get(name); + value = defaultTemplates.get(name); return value != null ? value.toString() : null; } public String getNameByPath(String name, Path rootPath) { - String fullPath = rootPath.resolve(Paths.get(name)).normalize().toString(); - if(reverseCustomTemplate.containsKey(fullPath)){ - return reverseCustomTemplate.get(fullPath); + Path path = Paths.get(name); + String normalizedPath = (rootPath == null) ? + path.normalize().toString() : + rootPath.resolve(path).normalize().toString(); + if (reverseCustomTemplate.containsKey(normalizedPath)) { + return reverseCustomTemplate.get(normalizedPath); } else { - Object value = reverseStandartTemplates.get(name); - return value != null ? value.toString() : null; + Object value = reverseDefaultsTemplates.get(name); + if (value != null) { + return value.toString(); + } else { + String preparedName = prepareName(Paths.get(normalizedPath), templatePreferences); + return addTemplate(normalizedPath, preparedName).getKey(); + } + } + } + + public FSPath addTemplate(String path, String name) { + Preferences newNode = templatePreferences.node(name); + FSPath fsPath = (FSPath) application + .getCayenneProjectPreferences() + .getProjectDetailObject(FSPath.class, newNode); + fsPath.setPath(path); + return fsPath; + } + + /** + * Prepares template name from the path. First, remove the extension and add "_0" to the name. + * Next step is check for unique. If the same name is exist, increases number at the end to the next one. + */ + private String prepareName(Path path, Preferences templatePreferences) { + String preparedName = path.getFileName().toString().replaceAll(".vm$", ""); + preparedName += "_0"; + int j = 1; + try { + while (templatePreferences.nodeExists(preparedName)) { + preparedName = preparedName.replaceAll("_.*[0-9]", "_" + j); + j++; + } + } catch (BackingStoreException e) { + logger.warn("Error reading preferences"); } + return preparedName; } public Map<String, String> getCustomTemplates() { return customTemplates; } - public List<String> getStandardSubclassTemplates() { - return standardSubclassTemplates; + public List<String> getDefaultSubclassTemplates() { + return defaultSubclassTemplates; } - public List<String> getStandardClientSubclassTemplates() { - return standardClientSubclassTemplates; + public List<String> getDefaultClientSubclassTemplates() { + return defaultClientSubclassTemplates; } - public List<String> getStandardSuperclassTemplates() { - return standardSuperclassTemplates; + public List<String> getDefaultSuperclassTemplates() { + return defaultSuperclassTemplates; } - public List<String> getStandardClientSuperclassTemplates() { - return standardClientSuperclassTemplates; + public List<String> getDefaultClientSuperclassTemplates() { + return defaultClientSuperclassTemplates; } - public List<String> getStandartEmbeddableTemplates() { - return standardEmbeddableTemplates; + public List<String> getDefaultEmbeddableTemplates() { + return defaultEmbeddableTemplates; } - public List<String> getStandartEmbeddableSuperclassTemplates() { - return standardEmbeddableSuperclassTemplates; + public List<String> getDefaultEmbeddableSuperclassTemplates() { + return defaultEmbeddableSuperclassTemplates; } - public List<String> getStandartDataMapTemplates() { - return standardServerDataMapTemplates; + public List<String> getDefaultDataMapTemplates() { + return defaultServerDataMapTemplates; } - public List<String> getStandartDataMapSuperclassTemplates() { - return standardServerDataMapSuperclassTemplates; + public List<String> getDefaultDataMapSuperclassTemplates() { + return defaultServerDataMapSuperclassTemplates; } - public List<String> getStandardClientDataMapTemplates() { - return standardClientDataMapTemplates; + public List<String> getDefaultClientDataMapTemplates() { + return defaultClientDataMapTemplates; } - public List<String> getStandardClientDataMapSuperclassTemplates() { - return standardClientDataMapSuperclassTemplates; + public List<String> getDefaultClientDataMapSuperclassTemplates() { + return defaultClientDataMapSuperclassTemplates; } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java index 5a19458..7b213fa 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java @@ -20,8 +20,6 @@ package org.apache.cayenne.modeler.dialog.pref; import java.awt.Component; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.io.File; import java.util.HashSet; import java.util.Set; @@ -47,6 +45,7 @@ public class TemplateCreator extends CayenneController { protected Set<String> existingNames; protected CayennePreferenceEditor editor; protected Preferences preferences; + private static final String ERROR = "Error"; public TemplateCreator(TemplatePreferences parent) { super(parent); @@ -98,12 +97,9 @@ public class TemplateCreator extends CayenneController { view.getTemplateChooser().setCurrentDirectory(path.getExistingDirectory(false)); view.getTemplateChooser().addPropertyChangeListener( FileChooser.CURRENT_DIRECTORY_PROPERTY, - new PropertyChangeListener() { - - public void propertyChange(PropertyChangeEvent evt) { - File directory = view.getTemplateChooser().getCurrentDirectory(); - path.setDirectory(directory); - } + evt -> { + File directory = view.getTemplateChooser().getCurrentDirectory(); + path.setDirectory(directory); }); } @@ -114,22 +110,21 @@ public class TemplateCreator extends CayenneController { JOptionPane.showMessageDialog( view, "Enter Template Name", - "Error", + ERROR, JOptionPane.WARNING_MESSAGE); } else if (existingNames.contains(templateName)) { JOptionPane.showMessageDialog( view, "'" + templateName + "' is already taken, enter a different name", - "Error", + ERROR, JOptionPane.WARNING_MESSAGE); } else if (view.getTemplateChooser().getFile() == null) { JOptionPane.showMessageDialog( view, "Must select an existing template file", - "Error", + ERROR, JOptionPane.WARNING_MESSAGE); - } - else { + } else { canceled = false; view.dispose(); } @@ -161,15 +156,11 @@ public class TemplateCreator extends CayenneController { if (canceled) { return null; } - - String key = view.getTemplateName().getText(); + String name = view.getTemplateName().getText(); File file = view.getTemplateChooser().getFile(); - Preferences newNode = preferences.node(key); - FSPath path = (FSPath) application - .getCayenneProjectPreferences() - .getProjectDetailObject(FSPath.class, newNode); - editor.getAddedNode().add(newNode); - path.setPath(file != null ? file.getAbsolutePath() : null); - return path; + String path = file != null ? file.getAbsolutePath() : null; + FSPath fsPath = application.getCodeTemplateManager().addTemplate(path, name); + editor.getAddedNode().add(fsPath.getCurrentPreference()); + return fsPath; } } 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 b6d7651..ab1e14a 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 @@ -19,7 +19,6 @@ package org.apache.cayenne.modeler.editor.cgen; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -30,7 +29,6 @@ import org.apache.cayenne.gen.CgenConfiguration; import org.apache.cayenne.gen.ClassGenerationAction; import org.apache.cayenne.gen.ClientClassGenerationAction; import org.apache.cayenne.modeler.CodeTemplateManager; -import org.apache.cayenne.modeler.dialog.cgen.TemplateDialog; import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog; import org.apache.cayenne.swing.BindingBuilder; @@ -71,36 +69,36 @@ public class CustomModeController extends GeneratorController { Collections.sort(customTemplates); List<String> superTemplates = isClient ? - new ArrayList<>(templateManager.getStandardClientSuperclassTemplates()) : - new ArrayList<>(templateManager.getStandardSuperclassTemplates()); + new ArrayList<>(templateManager.getDefaultClientSuperclassTemplates()) : + new ArrayList<>(templateManager.getDefaultSuperclassTemplates()); Collections.sort(superTemplates); superTemplates.addAll(customTemplates); List<String> subTemplates = isClient ? - new ArrayList<>(templateManager.getStandardClientSubclassTemplates()) : - new ArrayList<>(templateManager.getStandardSubclassTemplates()); + new ArrayList<>(templateManager.getDefaultClientSubclassTemplates()) : + new ArrayList<>(templateManager.getDefaultSubclassTemplates()); Collections.sort(subTemplates); subTemplates.addAll(customTemplates); List<String> querySuperTemplates = isClient ? - new ArrayList<>(templateManager.getStandardClientDataMapSuperclassTemplates()) : - new ArrayList<>(templateManager.getStandartDataMapSuperclassTemplates()); + new ArrayList<>(templateManager.getDefaultClientDataMapSuperclassTemplates()) : + new ArrayList<>(templateManager.getDefaultDataMapSuperclassTemplates()); Collections.sort(querySuperTemplates); querySuperTemplates.addAll(customTemplates); List<String> queryTemplates = isClient ? - new ArrayList<>(templateManager.getStandardClientDataMapTemplates()) : - new ArrayList<>(templateManager.getStandartDataMapTemplates()); + new ArrayList<>(templateManager.getDefaultClientDataMapTemplates()) : + new ArrayList<>(templateManager.getDefaultDataMapTemplates()); Collections.sort(queryTemplates); queryTemplates.addAll(customTemplates); - List<String> embeddableSuperTemplates = new ArrayList<>(templateManager.getStandartEmbeddableSuperclassTemplates()); - Collections.sort(embeddableSuperTemplates); - embeddableSuperTemplates.addAll(customTemplates); + List<String> embeddableSuperTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableSuperclassTemplates()); + Collections.sort(embeddableSuperTemplates); + embeddableSuperTemplates.addAll(customTemplates); - List<String> embeddableTemplates = new ArrayList<>(templateManager.getStandartEmbeddableTemplates()); - Collections.sort(embeddableTemplates); - embeddableTemplates.addAll(customTemplates); + List<String> embeddableTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableTemplates()); + Collections.sort(embeddableTemplates); + embeddableTemplates.addAll(customTemplates); this.view.getSubclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(subTemplates.toArray(new String[0]))); this.view.getSuperclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(superTemplates.toArray(new String[0]))); @@ -110,11 +108,6 @@ public class CustomModeController extends GeneratorController { this.view.getEmbeddableSuperTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(embeddableSuperTemplates.toArray(new String[0]))); } - public void missTemplateDialog(CgenConfiguration cgenConfiguration, String template, String superTemplate) { - new TemplateDialog(this, cgenConfiguration, template, superTemplate).startupAction(); - updateComboBoxes(); - } - public void popPreferencesAction() { new PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY); updateTemplates(); @@ -132,63 +125,30 @@ public class CustomModeController extends GeneratorController { String superTemplateName = getApplication().getCodeTemplateManager().getNameByPath( cgenConfiguration.getSuperTemplate(), cgenConfiguration.getRootPath()); String embeddableTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getEmbeddableTemplate(), cgenConfiguration.getRootPath()); + cgenConfiguration.getEmbeddableTemplate(), cgenConfiguration.getRootPath()); String embeddableSuperTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getEmbeddableSuperTemplate(), cgenConfiguration.getRootPath()); + cgenConfiguration.getEmbeddableSuperTemplate(), cgenConfiguration.getRootPath()); String queryTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getQueryTemplate(), cgenConfiguration.getRootPath()); + cgenConfiguration.getQueryTemplate(), cgenConfiguration.getRootPath()); String querySuperTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getQuerySuperTemplate(), cgenConfiguration.getRootPath()); - - String path = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getTemplate())).normalize().toString(); - String superPath = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getSuperTemplate())).normalize().toString(); - String embeddableTemplatePath = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getEmbeddableTemplate())).normalize().toString(); - String embeddableSuperTemplatePath = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getEmbeddableSuperTemplate())).normalize().toString(); - String queryTemplatePath = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getQueryTemplate())).normalize().toString(); - String querySuperTemplatePath = cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getQuerySuperTemplate())).normalize().toString(); - - if(templateName == null && superTemplateName == null) { - view.getSubclassTemplate().setItem(null); - view.getSuperclassTemplate().setItem(null); - missTemplateDialog(cgenConfiguration, path, superPath); - } else if(templateName == null) { - view.getSubclassTemplate().setItem(null); - missTemplateDialog(cgenConfiguration, path, null); - } else if(superTemplateName == null) { - view.getSuperclassTemplate().setItem(null); - missTemplateDialog(cgenConfiguration, null, superPath); - } else { - view.getSubclassTemplate().setItem(templateName); - view.getSuperclassTemplate().setItem(superTemplateName); - } - - if(embeddableTemplateName == null && embeddableSuperTemplateName == null) { - missTemplateDialog(cgenConfiguration, embeddableTemplatePath, embeddableSuperTemplatePath); - } else if(embeddableTemplateName == null) { - missTemplateDialog(cgenConfiguration, embeddableTemplatePath, null); - } else if(embeddableSuperTemplateName == null) { - missTemplateDialog(cgenConfiguration, null, embeddableSuperTemplatePath); - } - view.getEmbeddableTemplate().setItem(embeddableTemplateName); - view.getEmbeddableSuperTemplate().setItem(embeddableSuperTemplateName); - - if(queryTemplateName == null && querySuperTemplateName == null) { - missTemplateDialog(cgenConfiguration, queryTemplatePath, querySuperTemplatePath); - } else if(queryTemplateName == null) { - missTemplateDialog(cgenConfiguration, queryTemplatePath, null); - } else if(querySuperTemplateName == null) { - missTemplateDialog(cgenConfiguration, null, querySuperTemplatePath); - } - view.getQueryTemplate().setItem(queryTemplateName); - view.getQuerySuperTemplate().setItem(querySuperTemplateName); + cgenConfiguration.getQuerySuperTemplate(), cgenConfiguration.getRootPath()); + + view.getSubclassTemplate().setItem(templateName); + view.getSuperclassTemplate().setItem(superTemplateName); + + view.getEmbeddableTemplate().setItem(embeddableTemplateName); + view.getEmbeddableSuperTemplate().setItem(embeddableSuperTemplateName); + + view.getQueryTemplate().setItem(queryTemplateName); + view.getQuerySuperTemplate().setItem(querySuperTemplateName); view.setDisableSuperComboBoxes(view.getPairs().isSelected()); } - private void initListeners(){ + private void initListeners() { view.getPairs().addActionListener(val -> { cgenConfiguration.setMakePairs(view.getPairs().isSelected()); - if(!view.getPairs().isSelected()) { + if (!view.getPairs().isSelected()) { cgenConfiguration.setTemplate(ClassGenerationAction.SINGLE_CLASS_TEMPLATE); cgenConfiguration.setEmbeddableTemplate(ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE); cgenConfiguration.setQueryTemplate(ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE); @@ -224,7 +184,7 @@ public class CustomModeController extends GeneratorController { view.getClientMode().addActionListener(val -> { boolean isSelected = view.getClientMode().isSelected(); cgenConfiguration.setClient(isSelected); - if(isSelected) { + if (isSelected) { cgenConfiguration.setTemplate(ClientClassGenerationAction.SUBCLASS_TEMPLATE); cgenConfiguration.setSuperTemplate(ClientClassGenerationAction.SUPERCLASS_TEMPLATE); cgenConfiguration.setQueryTemplate(ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE); @@ -247,15 +207,15 @@ public class CustomModeController extends GeneratorController { ClassGenerationAction.SUBCLASS_TEMPLATE, cgenConfiguration.getRootPath()); String queryTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - isSelected ? - ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE : - ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE, - cgenConfiguration.getRootPath()); + isSelected ? + ClientClassGenerationAction.DMAP_SUBCLASS_TEMPLATE : + ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE, + cgenConfiguration.getRootPath()); String querySuperTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - isSelected ? - ClientClassGenerationAction.DMAP_SUPERCLASS_TEMPLATE : - ClassGenerationAction.DATAMAP_SUPERCLASS_TEMPLATE, - cgenConfiguration.getRootPath()); + isSelected ? + ClientClassGenerationAction.DMAP_SUPERCLASS_TEMPLATE : + ClassGenerationAction.DATAMAP_SUPERCLASS_TEMPLATE, + cgenConfiguration.getRootPath()); view.getSubclassTemplate().setItem(templateName); view.getSuperclassTemplate().setItem(superTemplateName); view.getQueryTemplate().setItem(queryTemplateName); @@ -264,7 +224,8 @@ public class CustomModeController extends GeneratorController { }); } - public void initForm(CgenConfiguration cgenConfiguration){ + @Override + public void initForm(CgenConfiguration cgenConfiguration) { super.initForm(cgenConfiguration); view.getClientMode().setSelected(cgenConfiguration.isClient()); updateTemplates();