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
commit feb1b89f9d3578950310d400746c26980d2056aa Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Thu Sep 29 17:35:28 2022 +0300 CAY-2761 Modeler: Editor for the cgen templates - minor code cleanup --- .../modeler/dialog/pref/TemplatePreferences.java | 19 +++----- .../PreviewClassGenerationFactory.java | 2 +- .../templateeditor/TemplateEditorController.java | 57 ++++++++++------------ .../dialog/templateeditor/TemplateEditorView.java | 4 +- 4 files changed, 38 insertions(+), 44 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java index 520a5cf59..f18886ebe 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java @@ -72,7 +72,7 @@ public class TemplatePreferences extends CayenneController { initBindings(); } - public Component getView() { + public TemplatePreferencesView getView() { return view; } @@ -127,7 +127,10 @@ public class TemplatePreferences extends CayenneController { @SuppressWarnings("unused") public void templateEditorAction() { - new TemplateEditorController(this).startupAction(); + int selectedRow = view.getTable().getSelectedRow(); + if(selectedRow != -1) { + new TemplateEditorController(this).startupAction(); + } } @SuppressWarnings("unused") @@ -161,9 +164,7 @@ public class TemplatePreferences extends CayenneController { if (path != null) { int len = templateEntries.size(); templateEntries.add(path); - ((AbstractTableModel) view.getTable().getModel()).fireTableRowsInserted( - len, - len); + ((AbstractTableModel) view.getTable().getModel()).fireTableRowsInserted(len, len); } } @@ -174,16 +175,12 @@ public class TemplatePreferences extends CayenneController { return; } - Object key = ((AbstractTableModel) view.getTable().getModel()).getValueAt( - selected, - 0); + Object key = view.getTable().getModel().getValueAt(selected, 0); editor.getRemovedNode().add(getTemplatePreferences().node((String) key)); templateEntries.remove(selected); - ((AbstractTableModel) view.getTable().getModel()).fireTableRowsDeleted( - selected, - selected); + ((AbstractTableModel) view.getTable().getModel()).fireTableRowsDeleted(selected, selected); } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/PreviewClassGenerationFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/PreviewClassGenerationFactory.java index f8bba275b..e9d4c5631 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/PreviewClassGenerationFactory.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/PreviewClassGenerationFactory.java @@ -40,7 +40,7 @@ public class PreviewClassGenerationFactory implements ClassGenerationActionFacto @Inject private MetadataUtils metadataUtils; - @Inject + @Inject(TemplateEditorController.TEMPLATE_EDITOR_WRITER) private StringWriter writer; @Override diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorController.java index 8c20aac4b..ade5f1340 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorController.java @@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.dialog.templateeditor; import org.apache.cayenne.configuration.xml.DataChannelMetaData; import org.apache.cayenne.di.Injector; +import org.apache.cayenne.di.Key; import org.apache.cayenne.gen.CgenConfiguration; import org.apache.cayenne.gen.ClassGenerationAction; import org.apache.cayenne.gen.ClassGenerationActionFactory; @@ -40,31 +41,34 @@ import javax.swing.text.BadLocationException; import java.awt.Component; import java.io.File; import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * since 4.3 */ public class TemplateEditorController extends CayenneController { + public static final String TEMPLATE_EDITOR_REPO = "templateEditorRepo"; + public static final String TEMPLATE_EDITOR_WRITER = "tplEditorWriter"; + private static final String EDITED_TEMPLATE = "editedTemplate"; + private static final Key<StringWriter> TPL_EDITOR_WRITER = Key.get(StringWriter.class, TEMPLATE_EDITOR_WRITER); + + private final Map<String, String> customTemplates; + private final DataMap currentDataMap; + protected TemplatePreferencesView preferencesView; protected TemplateEditorView view; protected boolean canceled; - private final Map<String, String> customTemplates; - private static final String EDITED_TEMPLATE = "editedTemplate"; - public static final String TEMPLATE_EDITOR_REPO = "templateEditorRepo"; - private final DataMap currentDataMap; public TemplateEditorController(TemplatePreferences preferences) { super(preferences); - this.preferencesView = (TemplatePreferencesView) preferences.getView(); + this.preferencesView = preferences.getView(); this.customTemplates = application.getCodeTemplateManager().getCustomTemplates(); this.currentDataMap = application.getFrameController().getProjectController().getCurrentDataMap(); - this.view = new TemplateEditorView( getEntityNames()); + this.view = new TemplateEditorView(getEntityNames()); initBindings(); } @@ -117,18 +121,18 @@ public class TemplateEditorController extends CayenneController { public void generateAction() throws Exception { putTemplateTextInRepository(); Injector injector = getInjector(); - ClassGenerationAction action = injector + ClassGenerationAction action = injector .getInstance(ClassGenerationActionFactory.class) .createAction(getCgenConfiguration()); - StringWriter writer = injector.getInstance(StringWriter.class); - action.addEntities(Collections.singleton(getSelectedEntity())); + StringWriter writer = injector.getInstance(TPL_EDITOR_WRITER); + action.addEntities(Collections.singleton(getSelectedEntity())); int caretPosition = view.getEditingTemplatePane().getCaretPosition(); try { action.execute(); + } catch (ParseErrorException pe) { + caretPosition = getErrorCaretPosition(pe); + writer.write(pe.getMessage()); } catch (Exception e) { - if (e instanceof ParseErrorException) { - caretPosition = getErrorCaretPosition((ParseErrorException) e); - } writer.write(e.getMessage()); } view.getEditingTemplatePane().setCaretPosition(caretPosition); @@ -147,7 +151,7 @@ public class TemplateEditorController extends CayenneController { return new ToolsInjectorBuilder() .addModule(binder -> binder.bind(DataChannelMetaData.class).toInstance(metaData)) .addModule(binder -> binder.bind(ClassGenerationActionFactory.class).to(PreviewClassGenerationFactory.class)) - .addModule(binder -> binder.bind(StringWriter.class).to(StringWriter.class)) + .addModule(binder -> binder.bind(TPL_EDITOR_WRITER).to(StringWriter.class)) .create(); } @@ -176,26 +180,19 @@ public class TemplateEditorController extends CayenneController { private ObjEntity getSelectedEntity() { String selectedEntityName = view.getSelectedEntityName(); - ObjEntity selectedObject = null; - Collection<ObjEntity> objEntities = currentDataMap.getObjEntities(); - for (ObjEntity object : objEntities) { - if (selectedEntityName.equals(object.getName())) { - selectedObject = object; - } + if(currentDataMap == null) { + return null; } - return selectedObject; + return currentDataMap.getObjEntity(selectedEntityName); } private List<String> getEntityNames() { - ArrayList<String> names = new ArrayList<>(); - if (currentDataMap != null) { - Object[] objEntities = currentDataMap.getObjEntities().toArray(); - for (Object objEntity : objEntities) { - ObjEntity s = (ObjEntity) objEntity; - names.add(s.getName()); - } + if(currentDataMap == null) { + return Collections.emptyList(); } - return names; + return currentDataMap.getObjEntities().stream() + .map(ObjEntity::getName) + .collect(Collectors.toList()); } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorView.java index 4580dbd34..a167cfd8f 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorView.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/templateeditor/TemplateEditorView.java @@ -54,7 +54,7 @@ public class TemplateEditorView extends JDialog { protected JButton saveButton; protected JButton findButton; protected JButton findAndReplaceButton; - protected JComboBox<Object> entityComboBox; + protected JComboBox<String> entityComboBox; private JSplitPane split; private JToolBar toolBar; private JPanel topPanel; @@ -80,7 +80,7 @@ public class TemplateEditorView extends JDialog { this.findAndReplaceButton.setToolTipText("Find and replace"); this.previewButton = new JButton(ModelerUtil.buildIcon("icon-edit.png")); this.previewButton.setToolTipText("Generate preview"); - this.entityComboBox = new JComboBox<>(entityNames.toArray()); + this.entityComboBox = new JComboBox<>(entityNames.toArray(new String[0])); this.entityComboBox.setToolTipText("Select an entity for the test"); }