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 2022/09/29 14:35:55 UTC
[cayenne] 03/03: CAY-2761 Modeler: Editor for the cgen templates - minor code cleanup
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 <st...@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");
}