Add cgen tab.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6a43436a Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6a43436a Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6a43436a Branch: refs/heads/master Commit: 6a43436ab12017594762210c18dd508e2f2ded9d Parents: aa22c93 Author: Arseni Bulatski <ancars...@gmail.com> Authored: Wed Oct 31 10:51:32 2018 +0300 Committer: Arseni Bulatski <ancars...@gmail.com> Committed: Wed Oct 31 10:51:32 2018 +0300 ---------------------------------------------------------------------- .../cayenne/gen/ArtifactsGenerationMode.java | 2 +- .../cayenne/gen/ClassGenerationAction.java | 499 ++++++++++--------- .../gen/ClientClassGenerationAction.java | 7 +- .../cayenne/gen/xml/CgenConfigHandler.java | 117 ++--- .../cayenne/gen/xml/CgenSaverDelegate.java | 23 + .../cayenne/gen/xml/EmbeddableHandler.java | 70 --- .../cayenne/gen/xml/ObjEntityHandler.java | 69 --- .../cayenne/project/CompoundSaverDelegate.java | 28 +- .../cayenne/project/FileProjectSaver.java | 2 + .../project/extension/BaseSaverDelegate.java | 13 + .../project/extension/SaverDelegate.java | 4 + .../main/java/org/apache/cayenne/util/Util.java | 33 +- .../cayenne/tools/CayenneGeneratorMojo.java | 5 +- .../cayenne/modeler/CayenneModelerFrame.java | 81 +-- .../cayenne/modeler/action/CgenAction.java | 27 - .../modeler/action/DefaultActionManager.java | 5 +- .../dialog/codegen/ClassesTabController.java | 13 +- .../modeler/dialog/codegen/ClassesTabPanel.java | 15 +- .../dialog/codegen/ClientModeController.java | 2 +- .../dialog/codegen/CodeGeneratorController.java | 4 +- .../codegen/CodeGeneratorControllerBase.java | 18 +- .../dialog/codegen/CodeGeneratorDialog.java | 17 +- .../dialog/codegen/CustomModeController.java | 19 +- .../modeler/dialog/codegen/CustomModePanel.java | 9 +- .../dialog/codegen/GeneratorController.java | 26 +- .../codegen/GeneratorControllerPanel.java | 4 +- .../dialog/codegen/GeneratorTabController.java | 2 +- .../dialog/codegen/GeneratorTabPanel.java | 2 +- .../dialog/codegen/StandardModeController.java | 6 +- .../dialog/codegen/StandardModePanel.java | 2 +- .../dialog/codegen/StandardPanelComponent.java | 2 +- .../modeler/dialog/codegen/cgen/CgenDialog.java | 74 --- .../codegen/cgen/CgenGlobalController.java | 68 --- .../dialog/codegen/cgen/CgenGlobalPanel.java | 293 ----------- .../codegen/cgen/CgenGlobalPanelController.java | 306 ------------ .../modeler/editor/DataMapTabbedView.java | 25 +- .../editor/cgen/ClassesTabController.java | 13 +- .../modeler/editor/cgen/ClassesTabPanel.java | 12 +- .../editor/cgen/ClientModeController.java | 40 ++ .../editor/cgen/CodeGeneratorController.java | 48 +- .../cgen/CodeGeneratorControllerBase.java | 112 +++-- .../modeler/editor/cgen/CodeGeneratorPane.java | 45 +- .../editor/cgen/CustomModeController.java | 83 +-- .../modeler/editor/cgen/CustomModePanel.java | 137 +---- .../editor/cgen/GeneratorController.java | 157 +++--- .../editor/cgen/GeneratorControllerPanel.java | 30 +- .../editor/cgen/GeneratorTabController.java | 64 ++- .../modeler/editor/cgen/GeneratorTabPanel.java | 70 ++- .../editor/cgen/StandardModeController.java | 61 +++ .../modeler/editor/cgen/StandardModePanel.java | 42 ++ .../editor/cgen/StandardPanelComponent.java | 63 +++ 51 files changed, 1027 insertions(+), 1842 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ArtifactsGenerationMode.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ArtifactsGenerationMode.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ArtifactsGenerationMode.java index e76c172..98aca33 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ArtifactsGenerationMode.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ArtifactsGenerationMode.java @@ -26,7 +26,7 @@ package org.apache.cayenne.gen; public enum ArtifactsGenerationMode { // TODO: andrus 12/9/2007 - label names are old... need to call it something else... - DATAMAP("datamap"), ENTITY("entity"), ALL("all"); + ENTITY("entity"), ALL("all"); private String label; http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java index f74ca21..434421f 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java @@ -33,16 +33,12 @@ import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.slf4j.Logger; -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStreamWriter; -import java.io.Serializable; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.stream.Collectors; public class ClassGenerationAction implements Serializable, XMLSerializable { static final String TEMPLATES_DIR_NAME = "templates/v4_1/"; @@ -62,10 +58,11 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { public static final String SUPERCLASS_PREFIX = "_"; private static final String WILDCARD = "*"; - protected Collection<Artifact> artifacts; - + Collection<Artifact> artifacts; private Collection<String> entityArtifacts; + private Collection<String> excludeEntityArtifacts; private Collection<String> embeddableArtifacts; + private Collection<String> excludeEmbeddableArtifacts; protected String superPkg; protected DataMap dataMap; @@ -74,7 +71,10 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { protected boolean makePairs; protected Logger logger; - protected File destDir; + + protected Path rootPath; + protected Path relPath; + protected boolean overwrite; protected boolean usePkgPath; @@ -110,22 +110,20 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { this.artifacts = new ArrayList<>(); this.entityArtifacts = new ArrayList<>(); + this.excludeEntityArtifacts = new ArrayList<>(); this.embeddableArtifacts = new ArrayList<>(); + this.excludeEmbeddableArtifacts = new ArrayList<>(); this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY; this.overwrite = false; - } - - public void setDefaults() { - this.template = SUBCLASS_TEMPLATE; - this.superTemplate = SUPERCLASS_TEMPLATE; + this.template = SUBCLASS_TEMPLATE; + this.superTemplate = SUPERCLASS_TEMPLATE; + this.embeddableTemplate = EMBEDDABLE_SUBCLASS_TEMPLATE; + this.embeddableSuperTemplate = EMBEDDABLE_SUPERCLASS_TEMPLATE; - this.embeddableTemplate = EMBEDDABLE_SUBCLASS_TEMPLATE; - this.embeddableSuperTemplate = EMBEDDABLE_SUPERCLASS_TEMPLATE; - - this.queryTemplate = DATAMAP_SUBCLASS_TEMPLATE; - this.querySuperTemplate = DATAMAP_SUPERCLASS_TEMPLATE; - } + this.queryTemplate = DATAMAP_SUBCLASS_TEMPLATE; + this.querySuperTemplate = DATAMAP_SUPERCLASS_TEMPLATE; + } protected String defaultTemplateName(TemplateType type) { switch (type) { @@ -178,14 +176,6 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { } /** - * Returns a String used to prefix class name to create a generated - * superclass. Default value is "_". - */ - private String getSuperclassPrefix() { - return ClassGenerationAction.SUPERCLASS_PREFIX; - } - - /** * VelocityContext initialization method called once per artifact. */ private void resetContextForArtifact(Artifact artifact) { @@ -232,7 +222,7 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { } public void prepareArtifacts() { - resetArtifacts(); + this.artifacts.clear(); addAllEntities(); addAllEmbeddables(); addQueries(dataMap.getQueryDescriptors()); @@ -317,84 +307,21 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { * Called internally from "execute". */ private void validateAttributes() { - if (destDir == null) { - throw new CayenneRuntimeException("'destDir' attribute is missing."); + Path dir = buildPath(); + if (dir == null) { + throw new CayenneRuntimeException("'rootPath' attribute is missing."); } - if (!destDir.isDirectory()) { + if (!Files.isDirectory(dir)) { throw new CayenneRuntimeException("'destDir' is not a directory."); } - if (!destDir.canWrite()) { - throw new CayenneRuntimeException("Do not have write permissions for %s", destDir); + if (!Files.isWritable(dir)) { + throw new CayenneRuntimeException("Do not have write permissions for %s", dir); } } /** - * Sets the destDir. - */ - public void setDestDir(File destDir) { - this.destDir = destDir; - } - - /** - * Sets <code>overwrite</code> property. - */ - public void setOverwrite(boolean overwrite) { - this.overwrite = overwrite; - } - - /** - * Sets <code>makepairs</code> property. - */ - public void setMakePairs(boolean makePairs) { - this.makePairs = makePairs; - } - - /** - * Sets <code>template</code> property. - */ - public void setTemplate(String template) { - this.template = template; - } - - /** - * Sets <code>superTemplate</code> property. - */ - public void setSuperTemplate(String superTemplate) { - this.superTemplate = superTemplate; - } - - public void setQueryTemplate(String queryTemplate) { - this.queryTemplate = queryTemplate; - } - - public void setQuerySuperTemplate(String querySuperTemplate) { - this.querySuperTemplate = querySuperTemplate; - } - - /** - * Sets <code>usepkgpath</code> property. - */ - public void setUsePkgPath(boolean usePkgPath) { - this.usePkgPath = usePkgPath; - } - - /** - * Sets <code>outputPattern</code> property. - */ - public void setOutputPattern(String outputPattern) { - this.outputPattern = outputPattern; - } - - /** - * Sets <code>createPropertyNames</code> property. - */ - public void setCreatePropertyNames(boolean createPropertyNames) { - this.createPropertyNames = createPropertyNames; - } - - /** * Opens a Writer to write generated output. Returned Writer is mapped to a * filesystem file (although subclasses may override that). File location is * determined from the current state of VelocityContext and the TemplateType @@ -429,7 +356,7 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { String className = (String) context.get(Artifact.SUPER_CLASS_KEY); String filename = StringUtils.getInstance().replaceWildcardInStringWithString(WILDCARD, outputPattern, className); - File dest = new File(mkpath(destDir, packageName), filename); + File dest = new File(mkpath(new File(getDir()), packageName), filename); if (dest.exists() && !fileNeedUpdate(dest, superTemplate)) { return null; @@ -448,7 +375,7 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { String className = (String) context.get(Artifact.SUB_CLASS_KEY); String filename = StringUtils.getInstance().replaceWildcardInStringWithString(WILDCARD, outputPattern, className); - File dest = new File(mkpath(destDir, packageName), filename); + File dest = new File(mkpath(new File(Objects.requireNonNull(buildPath()).toString()), packageName), filename); if (dest.exists()) { // no overwrite of subclasses @@ -517,31 +444,6 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { return fullPath; } - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - - /** - * Sets file encoding. If set to null, default system encoding will be used. - */ - public void setEncoding(String encoding) { - this.encoding = encoding; - } - - /** - * Sets "superPkg" property value. - */ - public void setSuperPkg(String superPkg) { - this.superPkg = superPkg; - } - - /** - * @param dataMap The dataMap to set. - */ - public void setDataMap(DataMap dataMap) { - this.dataMap = dataMap; - } - /** * Adds entities to the internal entity list. * @param entities collection @@ -549,64 +451,50 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { * @since 4.0 throws exception */ public void addEntities(Collection<ObjEntity> entities) { - if (artifactsGenerationMode == ArtifactsGenerationMode.ENTITY - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { - if (entities != null) { - for (ObjEntity entity : entities) { - artifacts.add(new EntityArtifact(entity)); - } + if (entities != null) { + for (ObjEntity entity : entities) { + artifacts.add(new EntityArtifact(entity)); } } } public void addEmbeddables(Collection<Embeddable> embeddables) { - if (artifactsGenerationMode == ArtifactsGenerationMode.ENTITY - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { - if (embeddables != null) { - for (Embeddable embeddable : embeddables) { - artifacts.add(new EmbeddableArtifact(embeddable)); - } + if (embeddables != null) { + for (Embeddable embeddable : embeddables) { + artifacts.add(new EmbeddableArtifact(embeddable)); } } } public void addQueries(Collection<QueryDescriptor> queries) { - if (artifactsGenerationMode == ArtifactsGenerationMode.DATAMAP - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { - + if (artifactsGenerationMode == ArtifactsGenerationMode.ALL) { // TODO: andrus 10.12.2010 - why not also check for empty query list?? // Or create a better API for enabling DataMapArtifact if (queries != null) { Artifact artifact = new DataMapArtifact(dataMap, queries); if(!artifacts.contains(artifact)) { - artifacts.add(new DataMapArtifact(dataMap, queries)); + artifacts.add(artifact); } } } } private void addAllEntities() { - if(artifactsGenerationMode == ArtifactsGenerationMode.ENTITY - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { - entityArtifacts.forEach(val -> { - Artifact artifact = new EntityArtifact(dataMap.getObjEntity(val)); - if(!artifacts.contains(artifact)) { - artifacts.add(artifact); - } - }); - } + entityArtifacts.forEach(val -> { + Artifact artifact = new EntityArtifact(dataMap.getObjEntity(val)); + if(!artifacts.contains(artifact)) { + artifacts.add(artifact); + } + }); } private void addAllEmbeddables() { - if(artifactsGenerationMode == ArtifactsGenerationMode.ENTITY - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { - embeddableArtifacts.forEach(val -> { - Artifact artifact = new EmbeddableArtifact(dataMap.getEmbeddable(val)); - if(!artifacts.contains(artifact)) { - artifacts.add(artifact); - } - }); - } + embeddableArtifacts.forEach(val -> { + Artifact artifact = new EmbeddableArtifact(dataMap.getEmbeddable(val)); + if(!artifacts.contains(artifact)) { + artifacts.add(artifact); + } + }); } /** @@ -616,85 +504,91 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { entityArtifacts.add(name); } - /** - * @since 4.1 - */ + /** + * @since 4.1 + */ public void loadEmbeddable(String name) { embeddableArtifacts.add(name); } - /** - * Sets an optional shared VelocityContext. Useful with tools like VPP that - * can set custom values in the context, not known to Cayenne. - */ - public void setContext(VelocityContext context) { - this.context = context; + public void setArtifactsGenerationMode(String mode) { + if (ArtifactsGenerationMode.ENTITY.getLabel().equalsIgnoreCase(mode)) { + this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY; + } else { + this.artifactsGenerationMode = ArtifactsGenerationMode.ALL; + } } - /** - * Injects an optional logger that will be used to trace generated files at - * the info level. - */ - public void setLogger(Logger logger) { - this.logger = logger; + public Path buildPath() { + return rootPath != null ? relPath != null ? rootPath.resolve(relPath).toAbsolutePath().normalize() : rootPath : null; } - public void setEmbeddableTemplate(String embeddableTemplate) { - this.embeddableTemplate = embeddableTemplate; + public void loadEntities(String entities) { + excludeEntityArtifacts.addAll(Arrays.asList(entities.split(","))); } - public void setEmbeddableSuperTemplate(String embeddableSuperTemplate) { - this.embeddableSuperTemplate = embeddableSuperTemplate; + public void resolveExcludeEntities() { + entityArtifacts = dataMap.getObjEntities() + .stream() + .filter(entity -> !excludeEntityArtifacts.contains(entity.getName())) + .map(ObjEntity::getName) + .collect(Collectors.toList()); } - public void setArtifactsGenerationMode(String mode) { - if (ArtifactsGenerationMode.ENTITY.getLabel().equalsIgnoreCase(mode)) { - this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY; - } else if (ArtifactsGenerationMode.DATAMAP.getLabel().equalsIgnoreCase(mode)) { - this.artifactsGenerationMode = ArtifactsGenerationMode.DATAMAP; - } else { - this.artifactsGenerationMode = ArtifactsGenerationMode.ALL; - } + public void loadEmbeddables(String embeddables) { + excludeEmbeddableArtifacts.addAll(Arrays.asList(embeddables.split(","))); } - /** - * @since 4.1 - */ - public boolean isCreatePKProperties() { - return createPKProperties; - } + public void resolveExcludeEmbeddables() { + embeddableArtifacts = dataMap.getEmbeddables() + .stream() + .filter(embeddable -> !excludeEmbeddableArtifacts.contains(embeddable.getClassName())) + .map(Embeddable::getClassName) + .collect(Collectors.toList()); + } - /** - * @since 4.1 - */ - public void setCreatePKProperties(boolean createPKProperties) { - this.createPKProperties = createPKProperties; - } + public void resetCollections(){ + this.embeddableArtifacts.clear(); + this.entityArtifacts.clear(); + } - private Collection<EntityArtifact> getEntityArtifacts() { - resetArtifacts(); - addAllEntities(); - Collection<EntityArtifact> entityArtifacts = new ArrayList<>(); - for(Artifact artifact : artifacts){ - if(artifact instanceof EntityArtifact){ - entityArtifacts.add((EntityArtifact) artifact); - } - } - return entityArtifacts; + private String getExcludeEntites() { + Collection<String> excludeEntities = dataMap.getObjEntities() + .stream() + .filter(entity -> !entityArtifacts.contains(entity.getName())) + .map(ObjEntity::getName) + .collect(Collectors.toList()); + return org.apache.commons.lang3.StringUtils.join(excludeEntities, ","); } - private Collection<EmbeddableArtifact> getEmbeddableArtifacts() { - resetArtifacts(); - addAllEmbeddables(); - Collection<EmbeddableArtifact> embeddableArtifacts = new ArrayList<>(); - for(Artifact artifact : artifacts){ - if(artifact instanceof EmbeddableArtifact){ - embeddableArtifacts.add((EmbeddableArtifact) artifact); - } - } + private String getExcludeEmbeddables() { + Collection<String> excludeEmbeddable = dataMap.getEmbeddables() + .stream() + .filter(embeddable -> !embeddableArtifacts.contains(embeddable.getClassName())) + .map(Embeddable::getClassName) + .collect(Collectors.toList()); + return org.apache.commons.lang3.StringUtils.join(excludeEmbeddable, ","); + } + + /** + * Returns a String used to prefix class name to create a generated + * superclass. Default value is "_". + */ + private String getSuperclassPrefix() { + return ClassGenerationAction.SUPERCLASS_PREFIX; + } + + public Collection<String> getEmbeddables() { return embeddableArtifacts; } + /** + * @since 4.1 + */ + public boolean isCreatePKProperties() { + return createPKProperties; + } + public boolean isMakePairs() { return makePairs; } @@ -724,11 +618,9 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { } public String getDir(){ - return destDir != null ? destDir.getAbsolutePath() : null; + return rootPath != null ? relPath != null ? rootPath.resolve(relPath).toAbsolutePath().normalize().toString() : rootPath.toString() : null; } - public File getDestDir() { return destDir; } - public String getTemplate() { return template; } @@ -737,16 +629,15 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { return superPkg; } - private void resetArtifacts(){ - this.artifacts = new ArrayList<>(); - } - public Collection<String> getEntities() { return entityArtifacts; } - public Collection<String> getEmbeddables() { - return embeddableArtifacts; + public String getRelPath() { + if(relPath == null || relPath.toString().isEmpty()) { + return "."; + } + return relPath.toString(); } public String getArtifactsGenerationMode(){ @@ -774,39 +665,155 @@ public class ClassGenerationAction implements Serializable, XMLSerializable { } public String getQueryTemplate() { - return queryTemplate; - } + return queryTemplate; + } - public String getQuerySuperTemplate() { - return querySuperTemplate; - } + public String getQuerySuperTemplate() { + return querySuperTemplate; + } - public void resetCollections(){ - this.embeddableArtifacts = new ArrayList<>(); - this.entityArtifacts = new ArrayList<>(); + /** + * Sets an optional shared nVelocityContext. Useful with tools like VPP that + * can set custom values in the context, not known to Cayenne. + */ + public void setContext(VelocityContext context) { + this.context = context; + } + + /** + * Injects an optional logger that will be used to trace generated files at + * the info level. + */ + public void setLogger(Logger logger) { + this.logger = logger; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + /** + * Sets file encoding. If set to null, default system encoding will be used. + */ + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + /** + * Sets "superPkg" property value. + */ + public void setSuperPkg(String superPkg) { + this.superPkg = superPkg; + } + + /** + * @param dataMap The dataMap to set. + */ + public void setDataMap(DataMap dataMap) { + this.dataMap = dataMap; + } + + public void setEmbeddableTemplate(String embeddableTemplate) { + this.embeddableTemplate = embeddableTemplate; + } + + public void setEmbeddableSuperTemplate(String embeddableSuperTemplate) { + this.embeddableSuperTemplate = embeddableSuperTemplate; + } + + /** + * Sets <code>overwrite</code> property. + */ + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + /** + * Sets <code>makepairs</code> property. + */ + public void setMakePairs(boolean makePairs) { + this.makePairs = makePairs; + } + + /** + * Sets <code>template</code> property. + */ + public void setTemplate(String template) { + this.template = template; + } + + /** + * Sets <code>superTemplate</code> property. + */ + public void setSuperTemplate(String superTemplate) { + this.superTemplate = superTemplate; + } + + public void setQueryTemplate(String queryTemplate) { + this.queryTemplate = queryTemplate; + } + + public void setQuerySuperTemplate(String querySuperTemplate) { + this.querySuperTemplate = querySuperTemplate; + } + + /** + * Sets <code>usepkgpath</code> property. + */ + public void setUsePkgPath(boolean usePkgPath) { + this.usePkgPath = usePkgPath; + } + + /** + * Sets <code>outputPattern</code> property. + */ + public void setOutputPattern(String outputPattern) { + this.outputPattern = outputPattern; + } + + /** + * Sets <code>createPropertyNames</code> property. + */ + public void setCreatePropertyNames(boolean createPropertyNames) { + this.createPropertyNames = createPropertyNames; + } + + /** + * @since 4.1 + */ + public void setCreatePKProperties(boolean createPKProperties) { + this.createPKProperties = createPKProperties; + } + + public void setRootPath(Path rootPath) { + this.rootPath = rootPath; + } + + public void setRelPath(Path relPath) { + this.relPath = relPath; + } + + public void setRelPath(String path) { + this.relPath = rootPath.relativize(Paths.get(path)); } @Override public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate) { encoder.start("cgen") .attribute("xmlns", CgenExtension.NAMESPACE) - .nested(this.getEntityArtifacts(), delegate) - .nested(this.getEmbeddableArtifacts(), delegate) - .simpleTag("outputDirectory", this.destDir != null ? this.destDir.getAbsolutePath() : null) + .simpleTag("excludeEntities", getExcludeEntites()) + .simpleTag("excludeEmbeddables",getExcludeEmbeddables()) + .simpleTag("outputDirectory", getRelPath()) .simpleTag("generationMode", this.artifactsGenerationMode.getLabel()) - .simpleTag("dataMapTemplate", this.queryTemplate) - .simpleTag("dataMapSuperclassTemplate", this.querySuperTemplate) .simpleTag("subclassTemplate", this.template) .simpleTag("superclassTemplate", this.superTemplate) - .simpleTag("embeddableTemplate", this.embeddableTemplate) - .simpleTag("embeddableSuperclassTemplate", this.embeddableSuperTemplate) .simpleTag("outputPattern", this.outputPattern) .simpleTag("makePairs", Boolean.toString(this.makePairs)) .simpleTag("usePkgPath", Boolean.toString(this.usePkgPath)) .simpleTag("overwriteSubclasses", Boolean.toString(this.overwrite)) .simpleTag("createPropertyNames", Boolean.toString(this.createPropertyNames)) .simpleTag("superPkg", this.superPkg) - .simpleTag("encoding", this.encoding) + .simpleTag("createPKProperties", Boolean.toString(this.createPKProperties)) .end(); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClientClassGenerationAction.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClientClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClientClassGenerationAction.java index c944f40..c8880aa 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClientClassGenerationAction.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClientClassGenerationAction.java @@ -19,12 +19,12 @@ package org.apache.cayenne.gen; -import java.util.Collection; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.map.ObjEntity; import org.apache.cayenne.map.QueryDescriptor; +import java.util.Collection; + /** * @since 3.0 */ @@ -88,8 +88,7 @@ public class ClientClassGenerationAction extends ClassGenerationAction { @Override public void addQueries(Collection<QueryDescriptor> queries) { - if (artifactsGenerationMode == ArtifactsGenerationMode.DATAMAP - || artifactsGenerationMode == ArtifactsGenerationMode.ALL) { + if (artifactsGenerationMode == ArtifactsGenerationMode.ALL) { if (queries != null) { artifacts.add(new ClientDataMapArtifact(dataMap, queries)); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/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 f77f1f1..7883ca2 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 @@ -22,10 +22,9 @@ import org.apache.cayenne.configuration.xml.DataChannelMetaData; import org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler; import org.apache.cayenne.gen.ClassGenerationAction; import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; -import java.io.File; +import java.nio.file.Paths; /** * @since 4.1 @@ -43,14 +42,9 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ private static final String USE_PKG_PATH_TAG = "usePkgPath"; private static final String OVERWRITE_SUBCLASSES_TAG = "overwriteSubclasses"; private static final String CREATE_PROPERTY_NAMES_TAG = "createPropertyNames"; - private static final String SUPER_PKG_TAG = "superPkg"; - private static final String OBJENTITY_TAG = "objEntity"; - private static final String EMBEDDABLE_TAG = "embeddable"; - private static final String ENCODING_TAG = "encoding"; - private static final String EMBEDDABLE_TEMPLATE_TAG = "embeddableTemplate"; - private static final String EMBEDDABLE_SUPERCLASS_TEMPLATE_TAG = "embeddableSuperclassTemplate"; - private static final String DATAMAP_TEMPLATE_TAG = "dataMapTemplate"; - private static final String DATAMAP_SUPERCLASS_TEMPLATE_TAG = "dataMapSuperclassTemplate"; + private static final String EXCLUDE_ENTITIES_TAG = "excludeEntities"; + private static final String EXCLUDE_EMBEDDABLES_TAG = "excludeEmbeddables"; + private static final String CREATE_PK_PROPERTIES = "createPKProperties"; public static final String TRUE = "true"; @@ -74,22 +68,6 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ } @Override - protected ContentHandler createChildTagHandler(String namespaceURI, String localName, - String qName, Attributes attributes) { - - if (namespaceURI.equals(targetNamespace)) { - switch (localName) { - case OBJENTITY_TAG: - return new ObjEntityHandler(this, configuration); - case EMBEDDABLE_TAG: - return new EmbeddableHandler(this, configuration); - } - } - - return super.createChildTagHandler(namespaceURI, localName, qName, attributes); - } - - @Override protected void processCharData(String localName, String data) { switch (localName) { case OUTPUT_DIRECTORY_TAG: @@ -98,6 +76,12 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ case GENERATION_MODE_TAG: createGenerationMode(data); break; + case EXCLUDE_ENTITIES_TAG: + createExcludeEntities(data); + break; + case EXCLUDE_EMBEDDABLES_TAG: + createExcludeEmbeddables(data); + break; case SUBCLASS_TEMPLATE_TAG: createSubclassTemplate(data); break; @@ -119,23 +103,8 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ case CREATE_PROPERTY_NAMES_TAG: createPropertyNamesTag(data); break; - case SUPER_PKG_TAG: - createSuperPkg(data); - break; - case ENCODING_TAG: - createEncoding(data); - break; - case EMBEDDABLE_TEMPLATE_TAG: - createEmbeddableTemplate(data); - break; - case EMBEDDABLE_SUPERCLASS_TEMPLATE_TAG: - createEmbeddableSuperclassTemplate(data); - break; - case DATAMAP_TEMPLATE_TAG: - createDataMapTemplate(data); - break; - case DATAMAP_SUPERCLASS_TEMPLATE_TAG: - createDataMapSuperclassTemplate(data); + case CREATE_PK_PROPERTIES: + createPkPropertiesTag(data); break; } } @@ -146,7 +115,7 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ } if(configuration != null) { - configuration.setDestDir(new File(path)); + configuration.setRelPath(Paths.get(path)); } } @@ -160,43 +129,43 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ } } - private void createSubclassTemplate(String template) { - if(template.trim().length() == 0) { + private void createExcludeEntities(String entities) { + if(entities.trim().length() == 0) { return; } if(configuration != null) { - configuration.setTemplate(template); + configuration.loadEntities(entities); } } - private void createSuperclassTemplate(String template) { - if(template.trim().length() == 0) { + private void createExcludeEmbeddables(String embeddables) { + if(embeddables.trim().length() == 0) { return; } if(configuration != null) { - configuration.setSuperTemplate(template); + configuration.loadEmbeddables(embeddables); } } - private void createEmbeddableTemplate(String template) { + private void createSubclassTemplate(String template) { if(template.trim().length() == 0) { return; } if(configuration != null) { - configuration.setEmbeddableTemplate(template); + configuration.setTemplate(template); } } - private void createEmbeddableSuperclassTemplate(String template) { + private void createSuperclassTemplate(String template) { if(template.trim().length() == 0) { return; } if(configuration != null) { - configuration.setEmbeddableSuperTemplate(template); + configuration.setSuperTemplate(template); } } @@ -266,43 +235,17 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ } } - private void createSuperPkg(String data) { - if(data.trim().length() == 0) { - return; - } - - if(configuration != null) { - configuration.setSuperPkg(data); - } - } - - private void createEncoding(String data) { + private void createPkPropertiesTag(String data) { if(data.trim().length() == 0) { return; } if(configuration != null) { - configuration.setEncoding(data); - } - } - - private void createDataMapTemplate(String data) { - if(data.trim().length() == 0) { - return; - } - - if(configuration != null) { - configuration.setQueryTemplate(data); - } - } - - private void createDataMapSuperclassTemplate(String data) { - if(data.trim().length() == 0) { - return; - } - - if(configuration != null) { - configuration.setQuerySuperTemplate(data); + if(data.equals(TRUE)) { + configuration.setCreatePKProperties(true); + } else { + configuration.setCreatePKProperties(false); + } } } @@ -310,6 +253,8 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{ configuration = new ClassGenerationAction(); loaderContext.addDataMapListener(dataMap -> { configuration.setDataMap(dataMap); + configuration.resolveExcludeEntities(); + configuration.resolveExcludeEmbeddables(); CgenConfigHandler.this.metaData.add(dataMap, configuration); }); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java index 8d25cf1..fc23e50 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java @@ -23,6 +23,11 @@ import org.apache.cayenne.gen.ClassGenerationAction; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.project.extension.BaseSaverDelegate; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + /** * @since 4.1 */ @@ -38,8 +43,26 @@ public class CgenSaverDelegate extends BaseSaverDelegate{ public Void visitDataMap(DataMap dataMap) { ClassGenerationAction cgen = metaData.get(dataMap, ClassGenerationAction.class); if(cgen != null){ + resolveOutputDir(cgen); encoder.nested(cgen, getParentDelegate()); } return null; } + + private void resolveOutputDir(ClassGenerationAction classGenerationAction) { + Path prevPath = classGenerationAction.buildPath(); + URL url = getBaseDirectory().getURL(); + if(url != null) { + Path resourcePath = Paths.get(url.getPath()); + if(Files.isRegularFile(resourcePath)) { + resourcePath = resourcePath.getParent(); + } + + if(prevPath != null && resourcePath.compareTo(prevPath) != 0) { + classGenerationAction.setRootPath(resourcePath); + Path relPath = resourcePath.relativize(prevPath); + classGenerationAction.setRelPath(relPath); + } + } + } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/EmbeddableHandler.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/EmbeddableHandler.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/EmbeddableHandler.java deleted file mode 100644 index 4772348..0000000 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/EmbeddableHandler.java +++ /dev/null @@ -1,70 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne.gen.xml; - -import org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler; -import org.apache.cayenne.gen.ClassGenerationAction; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; - -/** - * @since 4.1 - */ -public class EmbeddableHandler extends NamespaceAwareNestedTagHandler { - - private static final String EMBEDDABLE_TAG = "embeddable"; - private static final String EMBEDDABLE_NAME_TAG = "name"; - - private ClassGenerationAction configuration; - - EmbeddableHandler(NamespaceAwareNestedTagHandler parentHandler, ClassGenerationAction configuration) { - super(parentHandler); - this.configuration = configuration; - } - - @Override - protected boolean processElement(String namespaceURI, String localName, Attributes attributes) throws SAXException { - switch (localName) { - case EMBEDDABLE_TAG: - return true; - } - - return false; - } - - @Override - protected void processCharData(String localName, String data) { - switch (localName) { - case EMBEDDABLE_NAME_TAG: - createEmbeddableEntity(data); - break; - } - } - - private void createEmbeddableEntity(String data) { - if(data.trim().length() == 0) { - return; - } - - if(configuration != null) { - configuration.loadEmbeddable(data); - } - } -} - http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/ObjEntityHandler.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/ObjEntityHandler.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/ObjEntityHandler.java deleted file mode 100644 index 593a002..0000000 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/ObjEntityHandler.java +++ /dev/null @@ -1,69 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne.gen.xml; - -import org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler; -import org.apache.cayenne.gen.ClassGenerationAction; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; - -/** - * @since 4.1 - */ -public class ObjEntityHandler extends NamespaceAwareNestedTagHandler { - - private static final String OBJENTITY_TAG = "objEntity"; - private static final String OBJENTITY_NAME_TAG = "name"; - - private ClassGenerationAction configuration; - - ObjEntityHandler(NamespaceAwareNestedTagHandler parentHandler, ClassGenerationAction configuration) { - super(parentHandler); - this.configuration = configuration; - } - - @Override - protected boolean processElement(String namespaceURI, String localName, Attributes attributes) throws SAXException { - switch (localName) { - case OBJENTITY_TAG: - return true; - } - - return false; - } - - @Override - protected void processCharData(String localName, String data) { - switch (localName) { - case OBJENTITY_NAME_TAG: - createObjEntity(data); - break; - } - } - - private void createObjEntity(String data) { - if(data.trim().length() == 0) { - return; - } - - if(configuration != null) { - configuration.loadEntity(data); - } - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-project/src/main/java/org/apache/cayenne/project/CompoundSaverDelegate.java ---------------------------------------------------------------------- diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/CompoundSaverDelegate.java b/cayenne-project/src/main/java/org/apache/cayenne/project/CompoundSaverDelegate.java index 5ea7a29..4745e38 100644 --- a/cayenne-project/src/main/java/org/apache/cayenne/project/CompoundSaverDelegate.java +++ b/cayenne-project/src/main/java/org/apache/cayenne/project/CompoundSaverDelegate.java @@ -19,25 +19,15 @@ package org.apache.cayenne.project; -import java.util.Collection; - import org.apache.cayenne.configuration.DataChannelDescriptor; import org.apache.cayenne.configuration.DataNodeDescriptor; -import org.apache.cayenne.map.DataMap; -import org.apache.cayenne.map.DbAttribute; -import org.apache.cayenne.map.DbEntity; -import org.apache.cayenne.map.DbRelationship; -import org.apache.cayenne.map.Embeddable; -import org.apache.cayenne.map.EmbeddableAttribute; -import org.apache.cayenne.map.ObjAttribute; -import org.apache.cayenne.map.ObjEntity; -import org.apache.cayenne.map.ObjRelationship; -import org.apache.cayenne.map.Procedure; -import org.apache.cayenne.map.ProcedureParameter; -import org.apache.cayenne.map.QueryDescriptor; +import org.apache.cayenne.map.*; import org.apache.cayenne.project.extension.SaverDelegate; +import org.apache.cayenne.resource.Resource; import org.apache.cayenne.util.XMLEncoder; +import java.util.Collection; + /** * @since 4.1 */ @@ -180,4 +170,14 @@ class CompoundSaverDelegate implements SaverDelegate { public SaverDelegate getParentDelegate() { return null; } + + @Override + public Resource getBaseDirectory() { + return null; + } + + @Override + public void setBaseDirectory(Resource baseDirectory) { + delegates.forEach(d -> d.setBaseDirectory(baseDirectory)); + } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java ---------------------------------------------------------------------- diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java index 0d6af44..20e2328 100644 --- a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java +++ b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java @@ -97,6 +97,8 @@ public class FileProjectSaver implements ProjectSaver { Collection<ConfigurationNode> nodes = project.getRootNode().acceptVisitor(saveableNodesGetter); Collection<SaveUnit> units = new ArrayList<>(nodes.size()); + delegate.setBaseDirectory(baseResource); + for(ConfigurationNode node : nodes) { String targetLocation = nameMapper.configurationLocation(node); Resource targetResource = baseResource.getRelativeResource(targetLocation); http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/BaseSaverDelegate.java ---------------------------------------------------------------------- diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/BaseSaverDelegate.java b/cayenne-project/src/main/java/org/apache/cayenne/project/extension/BaseSaverDelegate.java index a9f45f2..adb5d94 100644 --- a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/BaseSaverDelegate.java +++ b/cayenne-project/src/main/java/org/apache/cayenne/project/extension/BaseSaverDelegate.java @@ -33,6 +33,7 @@ import org.apache.cayenne.map.ObjRelationship; import org.apache.cayenne.map.Procedure; import org.apache.cayenne.map.ProcedureParameter; import org.apache.cayenne.map.QueryDescriptor; +import org.apache.cayenne.resource.Resource; import org.apache.cayenne.util.XMLEncoder; /** @@ -46,6 +47,8 @@ public class BaseSaverDelegate implements SaverDelegate { protected SaverDelegate parentDelegate; + protected Resource baseDirectory; + @Override public Void visitDataChannelDescriptor(DataChannelDescriptor channelDescriptor) { return null; @@ -131,6 +134,16 @@ public class BaseSaverDelegate implements SaverDelegate { return parentDelegate; } + @Override + public Resource getBaseDirectory() { + return baseDirectory; + } + + @Override + public void setBaseDirectory(Resource baseDirectory) { + this.baseDirectory = baseDirectory; + } + protected boolean isStandalone() { return parentDelegate == null; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/SaverDelegate.java ---------------------------------------------------------------------- diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/SaverDelegate.java b/cayenne-project/src/main/java/org/apache/cayenne/project/extension/SaverDelegate.java index 4ed5c92..1a002fd 100644 --- a/cayenne-project/src/main/java/org/apache/cayenne/project/extension/SaverDelegate.java +++ b/cayenne-project/src/main/java/org/apache/cayenne/project/extension/SaverDelegate.java @@ -20,6 +20,7 @@ package org.apache.cayenne.project.extension; import org.apache.cayenne.configuration.ConfigurationNodeVisitor; +import org.apache.cayenne.resource.Resource; import org.apache.cayenne.util.XMLEncoder; /** @@ -42,4 +43,7 @@ public interface SaverDelegate extends ConfigurationNodeVisitor<Void> { SaverDelegate getParentDelegate(); + Resource getBaseDirectory(); + + void setBaseDirectory(Resource baseDirectory); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java b/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java index 08941b8..de280b4 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java @@ -26,45 +26,20 @@ import org.apache.cayenne.Persistent; import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory; import org.apache.cayenne.di.spi.DefaultClassLoaderManager; -import org.apache.cayenne.reflect.ArcProperty; -import org.apache.cayenne.reflect.AttributeProperty; -import org.apache.cayenne.reflect.PropertyVisitor; -import org.apache.cayenne.reflect.ToManyProperty; -import org.apache.cayenne.reflect.ToOneProperty; +import org.apache.cayenne.reflect.*; import org.w3c.dom.Document; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; +import javax.xml.parsers.*; +import java.io.*; import java.lang.reflect.Member; import java.lang.reflect.Modifier; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; +import java.util.*; import java.util.regex.Pattern; /** http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java ---------------------------------------------------------------------- diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java index 3bdf08b..1ab9f96 100644 --- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java +++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java @@ -207,7 +207,7 @@ public class CayenneGeneratorMojo extends AbstractMojo { * @since 4.1 */ @Parameter(defaultValue = "false") - private boolean createPKProperties; + private Boolean createPKProperties; private transient Injector injector; @@ -295,7 +295,7 @@ public class CayenneGeneratorMojo extends AbstractMojo { injector.injectMembers(action); - action.setDestDir(destDir); +// action.setDestDir(destDir.toPath()); action.setEncoding(encoding != null ? encoding : action.getEncoding()); action.setMakePairs(makePairs != null ? makePairs : action.isMakePairs()); action.setArtifactsGenerationMode(mode != null ? mode : action.getArtifactsGenerationMode()); @@ -310,6 +310,7 @@ public class CayenneGeneratorMojo extends AbstractMojo { action.setCreatePropertyNames(createPropertyNames != null ? createPropertyNames : action.isCreatePropertyNames()); action.setQueryTemplate(queryTemplate != null ? queryTemplate : action.getQueryTemplate()); action.setQuerySuperTemplate(querySuperTemplate != null ? querySuperTemplate : action.getQuerySuperTemplate()); + action.setCreatePKProperties(createPKProperties != null ? createPKProperties : action.isCreatePropertyNames()); return action; } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java index 97772de..1af72ba 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java @@ -19,64 +19,12 @@ package org.apache.cayenne.modeler; -import org.apache.cayenne.modeler.action.AboutAction; -import org.apache.cayenne.modeler.action.ActionManager; -import org.apache.cayenne.modeler.action.CgenAction; -import org.apache.cayenne.modeler.action.ConfigurePreferencesAction; -import org.apache.cayenne.modeler.action.CopyAction; -import org.apache.cayenne.modeler.action.CreateDataMapAction; -import org.apache.cayenne.modeler.action.CreateDbEntityAction; -import org.apache.cayenne.modeler.action.CreateEmbeddableAction; -import org.apache.cayenne.modeler.action.CreateNodeAction; -import org.apache.cayenne.modeler.action.CreateObjEntityAction; -import org.apache.cayenne.modeler.action.CreateProcedureAction; -import org.apache.cayenne.modeler.action.CreateQueryAction; -import org.apache.cayenne.modeler.action.CutAction; -import org.apache.cayenne.modeler.action.DbEntitySyncAction; -import org.apache.cayenne.modeler.action.DocumentationAction; -import org.apache.cayenne.modeler.action.ExitAction; -import org.apache.cayenne.modeler.action.FindAction; -import org.apache.cayenne.modeler.action.GenerateCodeAction; -import org.apache.cayenne.modeler.action.GenerateDBAction; -import org.apache.cayenne.modeler.action.ImportDataMapAction; -import org.apache.cayenne.modeler.action.ImportEOModelAction; -import org.apache.cayenne.modeler.action.InferRelationshipsAction; -import org.apache.cayenne.modeler.action.MigrateAction; -import org.apache.cayenne.modeler.action.NavigateBackwardAction; -import org.apache.cayenne.modeler.action.NavigateForwardAction; -import org.apache.cayenne.modeler.action.NewProjectAction; -import org.apache.cayenne.modeler.action.ObjEntitySyncAction; -import org.apache.cayenne.modeler.action.OpenProjectAction; -import org.apache.cayenne.modeler.action.PasteAction; -import org.apache.cayenne.modeler.action.ProjectAction; -import org.apache.cayenne.modeler.action.RedoAction; -import org.apache.cayenne.modeler.action.RemoveAction; -import org.apache.cayenne.modeler.action.RevertAction; -import org.apache.cayenne.modeler.action.SaveAction; -import org.apache.cayenne.modeler.action.SaveAsAction; -import org.apache.cayenne.modeler.action.ShowLogConsoleAction; -import org.apache.cayenne.modeler.action.UndoAction; -import org.apache.cayenne.modeler.action.ValidateAction; +import org.apache.cayenne.modeler.action.*; import org.apache.cayenne.modeler.action.dbimport.ReverseEngineeringToolMenuAction; import org.apache.cayenne.modeler.dialog.LogConsole; import org.apache.cayenne.modeler.dialog.welcome.WelcomeScreen; import org.apache.cayenne.modeler.editor.EditorView; -import org.apache.cayenne.modeler.event.DataMapDisplayEvent; -import org.apache.cayenne.modeler.event.DataMapDisplayListener; -import org.apache.cayenne.modeler.event.DataNodeDisplayEvent; -import org.apache.cayenne.modeler.event.DataNodeDisplayListener; -import org.apache.cayenne.modeler.event.DbEntityDisplayListener; -import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent; -import org.apache.cayenne.modeler.event.EmbeddableDisplayListener; -import org.apache.cayenne.modeler.event.EntityDisplayEvent; -import org.apache.cayenne.modeler.event.MultipleObjectsDisplayEvent; -import org.apache.cayenne.modeler.event.MultipleObjectsDisplayListener; -import org.apache.cayenne.modeler.event.ObjEntityDisplayListener; -import org.apache.cayenne.modeler.event.ProcedureDisplayEvent; -import org.apache.cayenne.modeler.event.ProcedureDisplayListener; -import org.apache.cayenne.modeler.event.QueryDisplayEvent; -import org.apache.cayenne.modeler.event.QueryDisplayListener; -import org.apache.cayenne.modeler.event.RecentFileListListener; +import org.apache.cayenne.modeler.event.*; import org.apache.cayenne.modeler.pref.ComponentGeometry; import org.apache.cayenne.modeler.util.ModelerUtil; import org.apache.cayenne.modeler.util.RecentFileMenu; @@ -84,28 +32,8 @@ import org.apache.cayenne.swing.components.MainToolBar; import org.apache.cayenne.swing.components.TopBorder; import org.slf4j.LoggerFactory; -import javax.swing.Action; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JPanel; -import javax.swing.JSplitPane; -import javax.swing.JTextField; -import javax.swing.JToolBar; -import java.awt.AWTEvent; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.Toolkit; +import javax.swing.*; +import java.awt.*; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.KeyEvent; @@ -236,7 +164,6 @@ public class CayenneModelerFrame extends JFrame implements DataNodeDisplayListen toolMenu.add(getAction(InferRelationshipsAction.class).buildMenu()); toolMenu.add(getAction(ImportEOModelAction.class).buildMenu()); toolMenu.addSeparator(); - toolMenu.add(getAction(CgenAction.class).buildMenu()); toolMenu.add(getAction(GenerateCodeAction.class).buildMenu()); toolMenu.add(getAction(GenerateDBAction.class).buildMenu()); toolMenu.add(getAction(MigrateAction.class).buildMenu()); http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CgenAction.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CgenAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CgenAction.java deleted file mode 100644 index 9dbd71d..0000000 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CgenAction.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.apache.cayenne.modeler.action; - -import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.modeler.dialog.codegen.cgen.CgenGlobalController; -import org.apache.cayenne.modeler.util.CayenneAction; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.awt.event.ActionEvent; - -public class CgenAction extends CayenneAction{ - - private static Logger logObj = LoggerFactory.getLogger(CgenAction.class); - - public CgenAction(Application application) { - super(getActionName(), application); - } - - public static String getActionName(){ - return "Generate All Classes"; - } - - @Override - public void performAction(ActionEvent e) { - new CgenGlobalController(getApplication().getFrameController()).startup(); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java index d2ad35f..c476fff 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java @@ -167,8 +167,6 @@ public class DefaultActionManager implements ActionManager { registerAction(new LinkDataMapAction(application)); registerAction(new LinkDataMapsAction(application)); - - registerAction(new CgenAction((application))); } private void initActions() { @@ -197,8 +195,7 @@ public class DefaultActionManager implements ActionManager { GenerateCodeAction.class.getName(), GenerateDBAction.class.getName(), PasteAction.class.getName(), - ReverseEngineeringToolMenuAction.class.getName(), - CgenAction.class.getName())); + ReverseEngineeringToolMenuAction.class.getName())); DATA_NODE_ACTIONS = new HashSet<>(DOMAIN_ACTIONS); DATA_NODE_ACTIONS.addAll(Arrays.asList( http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java index 3e61094..b9d1c5b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java @@ -26,13 +26,6 @@ import org.apache.cayenne.swing.ImageRendererColumn; import org.apache.cayenne.swing.ObjectBinding; import org.apache.cayenne.swing.TableBindingBuilder; -import javax.swing.*; -import java.awt.*; -import java.util.*; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JTable; @@ -95,7 +88,7 @@ public class ClassesTabController extends CayenneController { builder.bindToAction(view.getCheckAll(), "checkAllAction()"); TableBindingBuilder tableBuilder = new TableBindingBuilder(builder); - + tableBuilder.addColumn( "", "parent.setCurrentClass(#item), selected", @@ -104,7 +97,7 @@ public class ClassesTabController extends CayenneController { Boolean.TRUE); tableBuilder.addColumn( - "Entity", + "Class", "parent.getItemName(#item)", JLabel.class, false, @@ -207,4 +200,4 @@ public class ClassesTabController extends CayenneController { } return true; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabPanel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabPanel.java index 3c6e53d..b1d3bd9 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabPanel.java @@ -22,12 +22,13 @@ package org.apache.cayenne.modeler.dialog.codegen; import org.apache.cayenne.map.DataMap; import javax.swing.BoxLayout; -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ScrollPaneConstants; +import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import java.awt.BorderLayout; import java.awt.Component; @@ -137,4 +138,4 @@ public class ClassesTabPanel extends JPanel { public JCheckBox getCheckAll() { return checkAll; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClientModeController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClientModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClientModeController.java index 4d5335f..9e3897e 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClientModeController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClientModeController.java @@ -78,4 +78,4 @@ public class ClientModeController extends StandardModeController { protected ClassGenerationAction newGenerator() { return new ClientClassGenerationAction(); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorController.java index f4395e9..55817a6 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorController.java @@ -113,7 +113,7 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase { } label = label.concat("; "); - + int sizeEmb = getSelectedEmbeddablesSize(); if (sizeEmb == 0) { @@ -166,4 +166,4 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase { view.dispose(); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java index 6e6084c..91d87e4 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java @@ -27,10 +27,14 @@ import org.apache.cayenne.modeler.util.CellRenderers; import org.apache.cayenne.validation.ValidationFailure; import org.apache.cayenne.validation.ValidationResult; -import javax.swing.*; -import java.awt.*; -import java.util.*; +import javax.swing.Icon; +import javax.swing.JLabel; +import java.awt.Component; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.function.Predicate; /** @@ -212,7 +216,7 @@ public abstract class CodeGeneratorControllerBase extends CayenneController { for (Object classObj : classes) { if (classObj instanceof Embeddable && selectedEmbeddables.contains(((Embeddable) classObj) - .getClassName())) { + .getClassName())) { selected.add((Embeddable) classObj); } } @@ -262,14 +266,14 @@ public abstract class CodeGeneratorControllerBase extends CayenneController { public String getProblem(Object obj) { String name = null; - + if (obj instanceof ObjEntity) { name = ((ObjEntity) obj).getName(); } else if (obj instanceof Embeddable) { name = ((Embeddable) obj).getClassName(); } - + if (validation == null) { return null; } @@ -373,4 +377,4 @@ public abstract class CodeGeneratorControllerBase extends CayenneController { return labelIcon; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java index c6d6e69..2bb635f 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java @@ -22,8 +22,19 @@ package org.apache.cayenne.modeler.dialog.codegen; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.swing.components.TopBorder; -import javax.swing.*; -import java.awt.*; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.ScrollPaneConstants; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; /** */ @@ -85,4 +96,4 @@ public class CodeGeneratorDialog extends JDialog { public JLabel getClassesCount() { return classesCount; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java index 4f48854..bb87006 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java @@ -28,13 +28,22 @@ import org.apache.cayenne.swing.BindingBuilder; import org.apache.cayenne.swing.ObjectBinding; import org.apache.cayenne.util.Util; -import javax.swing.*; -import java.awt.*; -import java.util.*; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import java.awt.Component; import java.util.List; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.Map.Entry; +import java.util.Objects; +import java.util.Set; +import java.util.TreeMap; -import static org.apache.cayenne.modeler.CodeTemplateManager.*; +import static org.apache.cayenne.modeler.CodeTemplateManager.SINGLE_SERVER_CLASS; +import static org.apache.cayenne.modeler.CodeTemplateManager.STANDARD_SERVER_SUBCLASS; +import static org.apache.cayenne.modeler.CodeTemplateManager.STANDARD_SERVER_SUPERCLASS; import static org.apache.cayenne.modeler.dialog.pref.PreferenceDialog.TEMPLATES_KEY; /** @@ -223,4 +232,4 @@ public class CustomModeController extends GeneratorController { getApplication().getInjector().injectMembers(action); return action; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java index 73f89f7..406e1d2 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java @@ -29,8 +29,6 @@ import javax.swing.JPanel; import javax.swing.JTextField; import java.awt.BorderLayout; import java.awt.FlowLayout; -import javax.swing.*; -import java.awt.*; public class CustomModePanel extends GeneratorControllerPanel { @@ -58,11 +56,6 @@ public class CustomModePanel extends GeneratorControllerPanel { this.manageTemplatesLink = new ActionLink("Customize Templates..."); manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f)); - pairs.addChangeListener(e -> { - superclassTemplate.setEnabled(pairs.isSelected()); - overwrite.setEnabled(!pairs.isSelected()); - }); - // assemble FormLayout layout = new FormLayout( "right:77dlu, 1dlu, fill:100:grow, 1dlu, left:80dlu, 1dlu", ""); @@ -141,4 +134,4 @@ public class CustomModePanel extends GeneratorControllerPanel { public JCheckBox getCreatePKProperties() { return createPKProperties; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java index c695684..db8c872 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java @@ -22,7 +22,13 @@ package org.apache.cayenne.modeler.dialog.codegen; import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.gen.ArtifactsGenerationMode; import org.apache.cayenne.gen.ClassGenerationAction; -import org.apache.cayenne.map.*; +import org.apache.cayenne.map.DataMap; +import org.apache.cayenne.map.Embeddable; +import org.apache.cayenne.map.EmbeddableAttribute; +import org.apache.cayenne.map.EmbeddedAttribute; +import org.apache.cayenne.map.ObjAttribute; +import org.apache.cayenne.map.ObjEntity; +import org.apache.cayenne.map.ObjRelationship; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.dialog.pref.GeneralPreferences; import org.apache.cayenne.modeler.pref.DataMapDefaults; @@ -36,15 +42,22 @@ import org.apache.cayenne.validation.SimpleValidationFailure; import org.apache.cayenne.validation.ValidationFailure; import org.apache.cayenne.validation.ValidationResult; -import javax.swing.*; +import javax.swing.JButton; +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.JTextField; import java.io.File; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedList; +import java.util.Map; +import java.util.Set; import java.util.function.Predicate; import java.util.prefs.Preferences; /** * A mode-specific part of the code generation dialog. - * + * */ public abstract class GeneratorController extends CayenneController { @@ -149,7 +162,6 @@ public abstract class GeneratorController extends CayenneController { selectedEntities.removeIf(ObjEntity::isGeneric); Collection<ClassGenerationAction> generators = new ArrayList<>(); - Collection<StandardPanelComponent> dataMapLines = ((GeneratorControllerPanel) getView()).getDataMapLines(); for (DataMap map : getParentController().getDataMaps()) { try { ClassGenerationAction generator = newGenerator(); @@ -180,7 +192,7 @@ public abstract class GeneratorController extends CayenneController { } - generator.setDestDir(outputDir); +// generator.setDestDir(outputDir); generator.setMakePairs(true); generator.setForce(true); @@ -547,4 +559,4 @@ public abstract class GeneratorController extends CayenneController { } return path.toString(); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorControllerPanel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorControllerPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorControllerPanel.java index bb02345..49cbc4b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorControllerPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorControllerPanel.java @@ -27,7 +27,7 @@ import java.util.Collection; /** * A generic panel that is a superclass of generator panels, defining common fields. - * + * */ public class GeneratorControllerPanel extends JPanel { @@ -52,4 +52,4 @@ public class GeneratorControllerPanel extends JPanel { public Collection<StandardPanelComponent> getDataMapLines() { return dataMapLines; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabController.java index 4e681ae..5d7594f 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabController.java @@ -26,7 +26,7 @@ import org.apache.cayenne.pref.PreferenceDetail; import org.apache.cayenne.swing.BindingBuilder; import org.apache.cayenne.util.Util; -import java.awt.*; +import java.awt.Component; import java.awt.Dimension; import java.util.Collection; import java.util.HashMap; http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabPanel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabPanel.java index 130741d..854e2d6 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorTabPanel.java @@ -62,4 +62,4 @@ public class GeneratorTabPanel extends JPanel { public JComboBox getGenerationMode() { return generationMode; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModeController.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModeController.java index f11ade8..b0650d8 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModeController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModeController.java @@ -23,7 +23,7 @@ import org.apache.cayenne.gen.ClassGenerationAction; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.modeler.pref.DataMapDefaults; -import java.awt.*; +import java.awt.Component; import java.util.ArrayList; import java.util.Collection; import java.util.TreeMap; @@ -38,7 +38,7 @@ public class StandardModeController extends GeneratorController { } protected void createDefaults() { - TreeMap<DataMap, DataMapDefaults> treeMap = new TreeMap<DataMap, DataMapDefaults>(); + TreeMap<DataMap, DataMapDefaults> treeMap = new TreeMap<>(); ArrayList<DataMap> dataMaps = (ArrayList<DataMap>) getParentController().getDataMaps(); for (DataMap dataMap : dataMaps) { @@ -79,4 +79,4 @@ public class StandardModeController extends GeneratorController { public Collection<ClassGenerationAction> createGenerator() { return super.createGenerator(); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModePanel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModePanel.java index 1f10ffb..cbb3f35 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModePanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardModePanel.java @@ -22,7 +22,7 @@ package org.apache.cayenne.modeler.dialog.codegen; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.FormLayout; -import java.awt.*; +import java.awt.BorderLayout; public class StandardModePanel extends GeneratorControllerPanel { http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardPanelComponent.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardPanelComponent.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardPanelComponent.java index b4794f3..425a0f2 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardPanelComponent.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/StandardPanelComponent.java @@ -78,4 +78,4 @@ public class StandardPanelComponent extends JComponent { return superclassPackage; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/6a43436a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/cgen/CgenDialog.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/cgen/CgenDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/cgen/CgenDialog.java deleted file mode 100644 index b81cc73..0000000 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/cgen/CgenDialog.java +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne.modeler.dialog.codegen.cgen; - -import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.swing.components.TopBorder; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ScrollPaneConstants; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.FlowLayout; - -/** - * @since 4.1 - */ -public class CgenDialog extends JDialog { - - protected JPanel panel; - protected JButton cancelButton; - - CgenDialog(Component generatorPanel) { - super(Application.getFrame()); - - this.panel = new JPanel(); - this.panel.setFocusable(false); - - this.cancelButton = new JButton("Cancel"); - JScrollPane scrollPane = new JScrollPane( - generatorPanel, - ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); - scrollPane.setPreferredSize(new Dimension(900, 550)); - JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - buttons.setBorder(TopBorder.create()); - buttons.add(Box.createHorizontalStrut(50)); - buttons.add(cancelButton); - - panel.add(scrollPane); - - Container contentPane = getContentPane(); - contentPane.setLayout(new BorderLayout()); - contentPane.add(panel, BorderLayout.CENTER); - contentPane.add(buttons, BorderLayout.SOUTH); - - setTitle("Cgen Global Config"); - } - - public JButton getCancelButton() { - return cancelButton; - } -}