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 fc020cdc5 CAY-2786 OutputDir incorrect work fix
new 8725b2658 Merge pull request #551 from
Ivan-nikitko/CAY-2786_outputDir_fix
fc020cdc5 is described below
commit fc020cdc5d6afceecd60acb3b362f99060684746
Author: Ivan Nikitka <[email protected]>
AuthorDate: Sun Dec 11 12:25:01 2022 +0100
CAY-2786 OutputDir incorrect work fix
---
.../cayenne/modeler/editor/cgen/ClassesTabController.java | 4 ++--
.../modeler/editor/cgen/CodeGeneratorController.java | 5 +++--
.../cayenne/modeler/editor/cgen/GeneratorController.java | 1 +
.../modeler/editor/cgen/GeneratorControllerPanel.java | 14 +++++++++++++-
.../apache/cayenne/modeler/editor/cgen/SelectionModel.java | 4 ++++
.../java/org/apache/cayenne/modeler/util/TextAdapter.java | 5 +++++
6 files changed, 28 insertions(+), 5 deletions(-)
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
index 78d7414bc..656c7db20 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
@@ -122,7 +122,7 @@ public class ClassesTabController extends CayenneController
{
+ (getParentController().isDataMapSelected() ? 1 : 0);
int totalClasses = getParentController().getClasses().size();
checkBoxHeader.setSelected(selectedCount >= totalClasses);
- getParentController().enableGenerateButton(selectedCount != 0);
+ getParentController().updateGenerateButton();
getParentController().updateSelectedEntities();
getParentController().getStandardModeController().updateTemplateEditorButtons();
view.repaint();
@@ -138,7 +138,7 @@ public class ClassesTabController extends CayenneController
{
if (getParentController().updateSelection(checkBoxHeader.isSelected()
? o -> true : o -> false)) {
tableBinding.updateView();
getParentController().updateSelectedEntities();
-
getParentController().enableGenerateButton(checkBoxHeader.isSelected());
+ getParentController().updateGenerateButton();
getParentController().getStandardModeController().updateTemplateEditorButtons();
}
}
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 9eab1bfe1..fa50c6685 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
@@ -262,8 +262,9 @@ public class CodeGeneratorController extends
CayenneController implements ObjEnt
}
}
- public void enableGenerateButton(boolean enable) {
- view.getGenerateButton().setEnabled(enable);
+ public void updateGenerateButton(){
+ boolean isOutputPathValid =
standardModeController.getView().getOutputFolder().isDataValid();
+ view.getGenerateButton().setEnabled(!selectionModel.isModelEmpty()&&
isOutputPathValid);
}
private void prepareClasses(DataMap dataMap) {
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
index af69dcee2..f750de744 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
@@ -70,6 +70,7 @@ public abstract class GeneratorController extends
CayenneController {
getParentController().setCurrentClass(cgenConfiguration.getDataMap());
getParentController().setSelected(true);
}
+ getView().getOutputFolder().updateModel();
}
public abstract void updateConfiguration(CgenConfiguration
cgenConfiguration);
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
index 794643e2c..715b459bb 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
@@ -27,6 +27,7 @@ import org.apache.cayenne.validation.ValidationException;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
+import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -49,11 +50,22 @@ public class GeneratorControllerPanel extends JPanel {
protected void updateModel(String text) throws ValidationException
{
CgenConfiguration cgenByDataMap = getCgenConfig();
if (cgenByDataMap != null) {
- Path path = Paths.get(text);
+ Path path;
+ try {
+ path = Paths.get(text);
+ } catch (InvalidPathException e) {
+ isDataValid = false;
+ codeGeneratorController.updateGenerateButton();
+ throw new ValidationException("An invalid path has
been detected. It cannot be saved or used until it is corrected.");
+ }
if (cgenByDataMap.getRootPath() == null &&
!path.isAbsolute()) {
+ isDataValid =false;
+ codeGeneratorController.updateGenerateButton();
throw new ValidationException("You should save project
to use relative path as an output directory.");
}
cgenByDataMap.updateOutputPath(path);
+ isDataValid = true;
+ codeGeneratorController.updateGenerateButton();
checkConfigDirty();
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
index c558e1438..0104c1c4d 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/SelectionModel.java
@@ -105,6 +105,10 @@ class SelectionModel {
return modified;
}
+ boolean isModelEmpty() {
+ return (getSelectedEntitiesCount() == 0 &&
getSelecetedEmbeddablesCount() == 0 && getSelectedDataMapsCount() == 0);
+ }
+
List<Embeddable> getSelectedEmbeddables(Collection<ConfigurationNode>
classes) {
List<Embeddable> selected = new
ArrayList<>(selectedEmbeddables.size());
for (Object classObj : classes) {
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
index f96f419b3..a22a7713c 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
@@ -51,6 +51,7 @@ public abstract class TextAdapter {
protected UndoableEditListener undoableListener;
protected JTextComponent textComponent;
+ protected boolean isDataValid;
public TextAdapter(JTextField textField) {
this(textField, true, false, true);
@@ -176,4 +177,8 @@ public abstract class TextAdapter {
textComponent.setBackground(defaultBGColor);
textComponent.setToolTipText(defaultToolTip);
}
+
+ public boolean isDataValid() {
+ return isDataValid;
+ }
}