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 2018/11/14 14:27:34 UTC
[03/32] cayenne git commit: Cgen. Create saver and loader for
dataMaps.
Cgen. Create saver and loader for dataMaps.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/d489f2a5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/d489f2a5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/d489f2a5
Branch: refs/heads/master
Commit: d489f2a5b45be473ffd7a07a6a18bc971940e1bc
Parents: 8119ffa
Author: Arseni Bulatski <an...@gmail.com>
Authored: Mon Jun 18 15:04:56 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Wed Oct 24 13:40:16 2018 +0300
----------------------------------------------------------------------
.../cayenne/gen/ClassGenerationAction.java | 178 ++++++++++++++--
.../org/apache/cayenne/gen/DataMapArtifact.java | 1 +
.../apache/cayenne/gen/EmbeddableArtifact.java | 12 +-
.../org/apache/cayenne/gen/EntityArtifact.java | 11 +-
.../cayenne/gen/xml/CgenConfigHandler.java | 206 +++++++++++++++++-
.../apache/cayenne/gen/xml/CgenExtension.java | 5 +-
.../cayenne/gen/xml/CgenLoaderDelegate.java | 6 +-
.../cayenne/gen/xml/CgenSaverDelegate.java | 6 +-
.../cayenne/gen/xml/EmbeddableHandler.java | 49 +++++
.../cayenne/gen/xml/ObjEntityHandler.java | 48 +++++
.../cayenne/modeler/CodeTemplateManager.java | 19 ++
.../editor/cgen/ClassesTabController.java | 22 +-
.../editor/cgen/CodeGeneratorController.java | 15 +-
.../cgen/CodeGeneratorControllerBase.java | 70 +++++--
.../editor/cgen/CustomModeController.java | 209 ++++++++++---------
.../modeler/editor/cgen/CustomModePanel.java | 64 ++++--
.../editor/cgen/GeneratorController.java | 110 ++++------
.../editor/cgen/GeneratorControllerPanel.java | 13 +-
.../editor/cgen/GeneratorTabController.java | 3 +-
.../editor/cgen/StandardPanelComponent.java | 79 -------
20 files changed, 782 insertions(+), 344 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/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 0eaf66b..423fb92 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
@@ -20,26 +20,20 @@
package org.apache.cayenne.gen;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.Embeddable;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
+import org.apache.cayenne.gen.xml.CgenExtension;
+import org.apache.cayenne.map.*;
+import org.apache.cayenne.util.XMLEncoder;
+import org.apache.cayenne.util.XMLSerializable;
import org.apache.velocity.Template;
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.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-public class ClassGenerationAction {
+import java.io.*;
+import java.util.*;
+
+public class ClassGenerationAction implements Serializable, XMLSerializable {
static final String TEMPLATES_DIR_NAME = "templates/v4_1/";
public static final String SINGLE_CLASS_TEMPLATE = TEMPLATES_DIR_NAME + "singleclass.vm";
@@ -59,6 +53,9 @@ public class ClassGenerationAction {
protected Collection<Artifact> artifacts;
+ protected Collection<String> entityArtifacts;
+ protected Collection<String> embeddableArtifacts;
+
protected String superPkg;
protected DataMap dataMap;
@@ -92,6 +89,7 @@ public class ClassGenerationAction {
protected Map<String, Template> templateCache;
public ClassGenerationAction() {
+// this.destDir = new File(System.getProperty("user.dir"));
this.outputPattern = "*.java";
this.timestamp = 0L;
this.usePkgPath = true;
@@ -99,7 +97,13 @@ public class ClassGenerationAction {
this.context = new VelocityContext();
this.templateCache = new HashMap<>(5);
+ this.template = SUBCLASS_TEMPLATE;
+ this.superTemplate = SUPERCLASS_TEMPLATE;
+ this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY;
+
this.artifacts = new ArrayList<>();
+ this.entityArtifacts = new ArrayList<>();
+ this.embeddableArtifacts = new ArrayList<>();
}
protected String defaultTemplateName(TemplateType type) {
@@ -156,14 +160,14 @@ public class ClassGenerationAction {
* Returns a String used to prefix class name to create a generated
* superclass. Default value is "_".
*/
- protected String getSuperclassPrefix() {
+ private String getSuperclassPrefix() {
return ClassGenerationAction.SUPERCLASS_PREFIX;
}
/**
* VelocityContext initialization method called once per artifact.
*/
- protected void resetContextForArtifact(Artifact artifact) {
+ private void resetContextForArtifact(Artifact artifact) {
StringUtils stringUtils = StringUtils.getInstance();
String qualifiedClassName = artifact.getQualifiedClassName();
@@ -201,7 +205,7 @@ public class ClassGenerationAction {
* VelocityContext initialization method called once per each artifact and
* template type combination.
*/
- protected void resetContextForArtifactTemplate(Artifact artifact, TemplateType templateType) {
+ void resetContextForArtifactTemplate(Artifact artifact, TemplateType templateType) {
context.put(Artifact.IMPORT_UTILS_KEY, new ImportUtils());
artifact.postInitContext(context);
}
@@ -248,7 +252,26 @@ public class ClassGenerationAction {
}
}
- protected Template getTemplate(TemplateType type) {
+ public void prepareArtifacts(){
+ if(!entityArtifacts.isEmpty()) {
+ for(String name : entityArtifacts) {
+ ObjEntity objEntity = dataMap.getObjEntity(name);
+ if(objEntity != null) {
+ artifacts.add(new EntityArtifact(objEntity));
+ }
+ }
+ }
+ if(!embeddableArtifacts.isEmpty()) {
+ for(String name : embeddableArtifacts) {
+ Embeddable embeddable = dataMap.getEmbeddable(name);
+ if(embeddable != null) {
+ artifacts.add(new EmbeddableArtifact(embeddable));
+ }
+ }
+ }
+ }
+
+ private Template getTemplate(TemplateType type) {
String templateName = customTemplateName(type);
if (templateName == null) {
@@ -284,7 +307,7 @@ public class ClassGenerationAction {
* Throws CayenneRuntimeException if it is in an inconsistent state.
* Called internally from "execute".
*/
- protected void validateAttributes() {
+ private void validateAttributes() {
if (destDir == null) {
throw new CayenneRuntimeException("'destDir' attribute is missing.");
}
@@ -391,7 +414,7 @@ public class ClassGenerationAction {
* Returns a target file where a generated superclass must be saved. If null
* is returned, class shouldn't be generated.
*/
- protected File fileForSuperclass() throws Exception {
+ private File fileForSuperclass() throws Exception {
String packageName = (String) context.get(Artifact.SUPER_PACKAGE_KEY);
String className = (String) context.get(Artifact.SUPER_CLASS_KEY);
@@ -410,7 +433,7 @@ public class ClassGenerationAction {
* Returns a target file where a generated class must be saved. If null is
* returned, class shouldn't be generated.
*/
- protected File fileForClass() throws Exception {
+ private File fileForClass() throws Exception {
String packageName = (String) context.get(Artifact.SUB_PACKAGE_KEY);
String className = (String) context.get(Artifact.SUB_CLASS_KEY);
@@ -470,7 +493,7 @@ public class ClassGenerationAction {
* belong to <code>pkgName</code> package should reside. Creates any missing
* diectories below <code>dest</code>.
*/
- protected File mkpath(File dest, String pkgName) throws Exception {
+ private File mkpath(File dest, String pkgName) throws Exception {
if (!usePkgPath || pkgName == null) {
return dest;
@@ -550,6 +573,20 @@ public class ClassGenerationAction {
}
}
+ public void loadEntity(String name) {
+ if (artifactsGenerationMode == ArtifactsGenerationMode.ENTITY
+ || artifactsGenerationMode == ArtifactsGenerationMode.ALL) {
+ entityArtifacts.add(name);
+ }
+ }
+
+ public void loadEmbeddable(String name) {
+ if (artifactsGenerationMode == ArtifactsGenerationMode.ENTITY
+ || artifactsGenerationMode == ArtifactsGenerationMode.ALL) {
+ 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.
@@ -584,6 +621,10 @@ public class ClassGenerationAction {
}
}
+ public String getArtifactsGenerationMode(){
+ return artifactsGenerationMode.getLabel();
+ }
+
public boolean isForce() {
return force;
}
@@ -605,4 +646,95 @@ public class ClassGenerationAction {
public void setCreatePKProperties(boolean createPKProperties) {
this.createPKProperties = createPKProperties;
}
+
+ public Collection<EntityArtifact> getEntityArtifacts() {
+ Collection<EntityArtifact> entityArtifacts = new ArrayList<>();
+ for(Artifact artifact : artifacts){
+ if(artifact instanceof EntityArtifact){
+ entityArtifacts.add((EntityArtifact) artifact);
+ }
+ }
+ return entityArtifacts;
+ }
+
+ public Collection<EmbeddableArtifact> getEmbeddableArtifacts() {
+ Collection<EmbeddableArtifact> embeddableArtifacts = new ArrayList<>();
+ for(Artifact artifact : artifacts){
+ if(artifact instanceof EmbeddableArtifact){
+ embeddableArtifacts.add((EmbeddableArtifact) artifact);
+ }
+ }
+ return embeddableArtifacts;
+ }
+
+ public boolean isMakePairs() {
+ return makePairs;
+ }
+
+ public boolean isOverwrite() {
+ return overwrite;
+ }
+
+ public boolean isUsePkgPath() {
+ return usePkgPath;
+ }
+
+ public boolean isCreatePropertyNames() {
+ return createPropertyNames;
+ }
+
+ public String getOutputPattern() {
+ return outputPattern;
+ }
+
+ public String getSuperclassTemplate(){
+ return superTemplate;
+ }
+
+ public DataMap getDataMap() {
+ return dataMap;
+ }
+
+ public String getDir(){
+ return destDir.getAbsolutePath();
+ }
+
+ public String getTemplate() {
+ return template;
+ }
+
+ public String getSuperPkg(){
+ return superPkg;
+ }
+
+ public void resetArtifacts(){
+ this.artifacts = new ArrayList<>();
+ }
+
+ public Collection<String> getEntities() {
+ return entityArtifacts;
+ }
+
+ public Collection<String> getEmbeddables() {
+ return embeddableArtifacts;
+ }
+
+ @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.getAbsolutePath())
+ .simpleTag("generationMode", this.artifactsGenerationMode.getLabel())
+ .simpleTag("subclassTemplate", this.template)
+ .simpleTag("superclassTemplate", this.superTemplate)
+ .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)
+ .end();
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
index 937f451..54a7426 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
@@ -137,4 +137,5 @@ public class DataMapArtifact implements Artifact {
public DataMap getDataMap() {
return dataMap;
}
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EmbeddableArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EmbeddableArtifact.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EmbeddableArtifact.java
index 8e6ea43..fec8dae 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EmbeddableArtifact.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EmbeddableArtifact.java
@@ -18,7 +18,10 @@
****************************************************************/
package org.apache.cayenne.gen;
+import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.util.XMLEncoder;
+import org.apache.cayenne.util.XMLSerializable;
import org.apache.velocity.VelocityContext;
/**
@@ -26,7 +29,7 @@ import org.apache.velocity.VelocityContext;
*
* @since 3.0
*/
-public class EmbeddableArtifact implements Artifact {
+public class EmbeddableArtifact implements Artifact, XMLSerializable {
protected Embeddable embeddable;
@@ -65,4 +68,11 @@ public class EmbeddableArtifact implements Artifact {
public void postInitContext(VelocityContext context) {
// noop - no special keys...
}
+
+ @Override
+ public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate) {
+ encoder.start("embeddable")
+ .simpleTag("name", embeddable.getClassName())
+ .end();
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
index 930b131..b53ee46 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
@@ -19,7 +19,10 @@
package org.apache.cayenne.gen;
import org.apache.cayenne.BaseDataObject;
+import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.util.XMLEncoder;
+import org.apache.cayenne.util.XMLSerializable;
import org.apache.velocity.VelocityContext;
/**
@@ -27,7 +30,7 @@ import org.apache.velocity.VelocityContext;
*
* @since 3.0
*/
-public class EntityArtifact implements Artifact {
+public class EntityArtifact implements Artifact, XMLSerializable {
public static String ENTITY_UTILS_KEY = "entityUtils";
@@ -95,4 +98,10 @@ public class EntityArtifact implements Artifact {
context.put(ENTITY_UTILS_KEY, metadata);
}
+ @Override
+ public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate) {
+ encoder.start("objEntity")
+ .simpleTag("name", entity.getName())
+ .end();
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/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 23f0ff3..fa89bf5 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
@@ -2,22 +2,224 @@ package org.apache.cayenne.gen.xml;
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler;
-import org.apache.cayenne.dbsync.xml.DbImportExtension;
+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;
+
public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
+ public static final String CONFIG_TAG = "cgen";
+
+ private static final String OUTPUT_DIRECTORY_TAG = "outputDirectory";
+ private static final String GENERATION_MODE_TAG = "generationMode";
+ private static final String SUBCLASS_TEMPLATE_TAG = "subclassTemplate";
+ private static final String SUPERCLASS_TEMPLATE_TAG = "superclassTemplate";
+ private static final String OUTPUT_PATTERN_TAG = "outputPattern";
+ private static final String MAKE_PAIRS_TAG = "makePairs";
+ 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";
+
+ public static final String TRUE = "true";
+
private DataChannelMetaData metaData;
+ private ClassGenerationAction configuration;
CgenConfigHandler(NamespaceAwareNestedTagHandler parentHandler, DataChannelMetaData metaData) {
super(parentHandler);
this.metaData = metaData;
- this.targetNamespace = DbImportExtension.NAMESPACE;
+ this.targetNamespace = CgenExtension.NAMESPACE;
}
@Override
protected boolean processElement(String namespaceURI, String localName, Attributes attributes) throws SAXException {
+ switch (localName) {
+ case CONFIG_TAG:
+ createConfig();
+ return true;
+ }
return false;
}
+
+ @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:
+ createOutputDir(data);
+ break;
+ case GENERATION_MODE_TAG:
+ createGenerationMode(data);
+ break;
+ case SUBCLASS_TEMPLATE_TAG:
+ createSubclassTemplate(data);
+ break;
+ case SUPERCLASS_TEMPLATE_TAG:
+ createSuperclassTemplate(data);
+ break;
+ case OUTPUT_PATTERN_TAG:
+ createOutputPattern(data);
+ break;
+ case MAKE_PAIRS_TAG:
+ createMakePairs(data);
+ break;
+ case USE_PKG_PATH_TAG:
+ createUsePkgPath(data);
+ break;
+ case OVERWRITE_SUBCLASSES_TAG:
+ createOverwriteSubclasses(data);
+ break;
+ case CREATE_PROPERTY_NAMES_TAG:
+ createPropertyNamesTag(data);
+ break;
+ case SUPER_PKG_TAG:
+ createSuperPkg(data);
+ break;
+ }
+ }
+
+ private void createOutputDir(String path) {
+ if(path.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setDestDir(new File(path));
+ }
+ }
+
+ private void createGenerationMode(String mode) {
+ if(mode.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setArtifactsGenerationMode(mode);
+ }
+ }
+
+ private void createSubclassTemplate(String template) {
+ if(template.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setTemplate(template);
+ }
+ }
+
+ private void createSuperclassTemplate(String template) {
+ if(template.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setSuperTemplate(template);
+ }
+ }
+
+ private void createOutputPattern(String pattern) {
+ if(pattern.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setOutputPattern(pattern);
+ }
+ }
+
+ private void createMakePairs(String makePairs) {
+ if (makePairs.trim().length() == 0) {
+ return;
+ }
+
+ if (configuration != null) {
+ if (makePairs.equals(TRUE)) {
+ configuration.setMakePairs(true);
+ } else {
+ configuration.setMakePairs(false);
+ }
+ }
+ }
+
+ private void createUsePkgPath(String data) {
+ if(data.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ if(data.equals(TRUE)) {
+ configuration.setUsePkgPath(true);
+ } else {
+ configuration.setUsePkgPath(false);
+ }
+ }
+ }
+
+ private void createOverwriteSubclasses(String data) {
+ if(data.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ if(data.equals(TRUE)) {
+ configuration.setOverwrite(true);
+ } else {
+ configuration.setOverwrite(false);
+ }
+ }
+ }
+
+ private void createPropertyNamesTag(String data) {
+ if(data.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ if(data.equals(TRUE)) {
+ configuration.setCreatePropertyNames(true);
+ } else {
+ configuration.setCreatePropertyNames(false);
+ }
+ }
+ }
+
+ private void createSuperPkg(String data) {
+ if(data.trim().length() == 0) {
+ return;
+ }
+
+ if(configuration != null) {
+ configuration.setSuperPkg(data);
+ }
+ }
+
+ private void createConfig() {
+ configuration = new ClassGenerationAction();
+ loaderContext.addDataMapListener(dataMap -> {
+ CgenConfigHandler.this.metaData.add(dataMap, configuration);
+ configuration.setDataMap(dataMap);
+ });
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenExtension.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenExtension.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenExtension.java
index 619bffc..e98eca9 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenExtension.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenExtension.java
@@ -4,6 +4,7 @@ import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.project.Project;
+import org.apache.cayenne.project.extension.BaseNamingDelegate;
import org.apache.cayenne.project.extension.LoaderDelegate;
import org.apache.cayenne.project.extension.ProjectExtension;
import org.apache.cayenne.project.extension.SaverDelegate;
@@ -17,7 +18,7 @@ public class CgenExtension implements ProjectExtension {
@Override
public LoaderDelegate createLoaderDelegate() {
- return null;
+ return new CgenLoaderDelegate(metaData);
}
@Override
@@ -27,6 +28,6 @@ public class CgenExtension implements ProjectExtension {
@Override
public ConfigurationNodeVisitor<String> createNamingDelegate() {
- return null;
+ return new BaseNamingDelegate();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenLoaderDelegate.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenLoaderDelegate.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenLoaderDelegate.java
index 44438e3..8b3728f 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenLoaderDelegate.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenLoaderDelegate.java
@@ -20,9 +20,9 @@ public class CgenLoaderDelegate implements LoaderDelegate {
@Override
public NamespaceAwareNestedTagHandler createHandler(NamespaceAwareNestedTagHandler parent, String tag) {
-// if(CgenConfigHandler.CONFIG_TAG.equals(tag)) {
-// return new CgenConfigHandler(parent, metaData);
-// }
+ if(CgenConfigHandler.CONFIG_TAG.equals(tag)) {
+ return new CgenConfigHandler(parent, metaData);
+ }
return null;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/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 f9c7173..d4d4b8f 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
@@ -1,6 +1,7 @@
package org.apache.cayenne.gen.xml;
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
+import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.project.extension.BaseSaverDelegate;
@@ -14,7 +15,10 @@ public class CgenSaverDelegate extends BaseSaverDelegate{
@Override
public Void visitDataMap(DataMap dataMap) {
-
+ ClassGenerationAction cgen = metaData.get(dataMap, ClassGenerationAction.class);
+ if(cgen != null){
+ encoder.nested(cgen, getParentDelegate());
+ }
return null;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/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
new file mode 100644
index 0000000..4e11a6f
--- /dev/null
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/EmbeddableHandler.java
@@ -0,0 +1,49 @@
+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;
+
+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/d489f2a5/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
new file mode 100644
index 0000000..f4ebc48
--- /dev/null
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/ObjEntityHandler.java
@@ -0,0 +1,48 @@
+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;
+
+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/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
index c72934d..1d51503 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
@@ -50,6 +50,8 @@ public class CodeTemplateManager {
protected Map<String, String> customTemplates;
protected Map<String, String> standardTemplates;
+ private Map<String, String> reverseStandartTemplates;
+
private static Logger logger = LoggerFactory.getLogger(CodeTemplateManager.class);
public Preferences getTemplatePreferences(Application application) {
@@ -75,6 +77,14 @@ public class CodeTemplateManager {
standardTemplates.put(STANDARD_SERVER_SUBCLASS, ClassGenerationAction.SUBCLASS_TEMPLATE);
standardTemplates.put(STANDARD_CLIENT_SUBCLASS, ClientClassGenerationAction.SUBCLASS_TEMPLATE);
standardTemplates.put(SINGLE_SERVER_CLASS, ClassGenerationAction.SINGLE_CLASS_TEMPLATE);
+
+ reverseStandartTemplates = new HashMap<>();
+ reverseStandartTemplates.put(ClassGenerationAction.SUBCLASS_TEMPLATE, STANDARD_SERVER_SUBCLASS);
+ reverseStandartTemplates.put(ClientClassGenerationAction.SUBCLASS_TEMPLATE, STANDARD_CLIENT_SUBCLASS);
+ reverseStandartTemplates.put(ClassGenerationAction.SINGLE_CLASS_TEMPLATE, SINGLE_SERVER_CLASS);
+ reverseStandartTemplates.put(ClientClassGenerationAction.SUPERCLASS_TEMPLATE, STANDARD_CLIENT_SUPERCLASS);
+ reverseStandartTemplates.put(ClassGenerationAction.SUPERCLASS_TEMPLATE, STANDARD_SERVER_SUPERCLASS);
+
}
/**
@@ -107,6 +117,15 @@ public class CodeTemplateManager {
return value != null ? value.toString() : null;
}
+ public String getNameByPath(String name) {
+ if(customTemplates.containsKey(name)){
+ return customTemplates.get(name).toString();
+ } else {
+ Object value = reverseStandartTemplates.get(name);
+ return value != null ? value.toString() : null;
+ }
+ }
+
public Map<String, String> getCustomTemplates() {
return customTemplates;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
----------------------------------------------------------------------
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 2b478ac..3a63297 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
@@ -19,7 +19,6 @@
package org.apache.cayenne.modeler.editor.cgen;
-import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ImageRendererColumn;
@@ -36,13 +35,18 @@ public class ClassesTabController extends CayenneController {
protected ClassesTabPanel view;
protected ObjectBinding tableBinding;
+ private BindingBuilder builder;
+
public ClassesTabController(CodeGeneratorControllerBase parent) {
super(parent);
this.view = new ClassesTabPanel();
+ builder = new BindingBuilder(getApplication().getBindingFactory(), this);
+
+ builder.bindToAction(view.getCheckAll(), "checkAllAction()");
}
- public void startup(DataMap dataMap){
+ public void startup(){
initBindings();
}
@@ -55,13 +59,6 @@ public class ClassesTabController extends CayenneController {
}
protected void initBindings() {
-
- BindingBuilder builder = new BindingBuilder(
- getApplication().getBindingFactory(),
- this);
-
- builder.bindToAction(view.getCheckAll(), "checkAllAction()");
-
TableBindingBuilder tableBuilder = new TableBindingBuilder(builder);
tableBuilder.addColumn(
@@ -109,6 +106,7 @@ public class ClassesTabController extends CayenneController {
else if (selectedCount == getParentController().getClasses().size()) {
view.getCheckAll().setSelected(true);
}
+ updateEntities();
}
/**
@@ -118,6 +116,12 @@ public class ClassesTabController extends CayenneController {
public void checkAllAction() {
if (getParentController().updateSelection(view.getCheckAll().isSelected() ? o -> true : o -> false)) {
tableBinding.updateView();
+ updateEntities();
}
}
+
+ private void updateEntities(){
+ getParentController().updateEntities();
+ getParentController().getProjectController().setDirty(true);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
----------------------------------------------------------------------
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 8163acb..45d3e51 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
@@ -29,7 +29,6 @@ import org.slf4j.LoggerFactory;
import javax.swing.*;
import java.awt.*;
-import java.util.Collection;
import java.util.function.Predicate;
/**
@@ -58,8 +57,11 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase {
private void initListeners(){
projectController.addDataMapDisplayListener(e -> {
super.startup(e.getDataMap());
- classesSelector.startup(e.getDataMap());
+ classesSelector.startup();
generatorSelector.startup(e.getDataMap());
+ GeneratorController modeController = generatorSelector.getGeneratorController();
+ ClassGenerationAction classGenerationAction = modeController.createGenerator();
+ ((CustomModeController)modeController).initForm(classGenerationAction);
});
}
@@ -125,13 +127,10 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase {
}
public void generateAction() {
- Collection<ClassGenerationAction> generators = generatorSelector.getGenerator();
-
- if (generators != null) {
+ ClassGenerationAction generator = generatorSelector.getGenerator();
+ if (generator != null) {
try {
- for (ClassGenerationAction generator : generators) {
- generator.execute();
- }
+ generator.execute();
JOptionPane.showMessageDialog(
getView(),
"Class generation finished");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
index 17196fa..d99e708 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.modeler.editor.cgen;
+import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjEntity;
@@ -171,14 +172,6 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
return selected;
}
- public int getSelectedEntitiesSize() {
- return selectedEntities.size();
- }
-
- public int getSelectedEmbeddablesSize() {
- return selectedEmbeddables.size();
- }
-
/**
* Returns the first encountered validation problem for an antity matching the name or
* null if the entity is valid or the entity is not present.
@@ -250,18 +243,6 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
}
}
- public Object getCurrentClass() {
- return currentClass;
- }
-
- public void setCurrentClass(Object currentClass) {
- this.currentClass = currentClass;
- }
-
- public Collection<DataMap> getDataMaps() {
- return dataMaps;
- }
-
public JLabel getItemName(Object obj) {
String className;
Icon icon;
@@ -279,6 +260,43 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
return labelIcon;
}
+ public void updateEntities(){
+ DataMap map = getProjectController().getCurrentDataMap();
+ ClassGenerationAction generator = projectController.getApplication().getMetaData().get(map, ClassGenerationAction.class);
+ if(generator != null) {
+ generator.resetArtifacts();
+ LinkedList<ObjEntity> objEntities = new LinkedList<>(map.getObjEntities());
+
+ Collection<ObjEntity> selected = new ArrayList<>(getSelectedEntities());
+ selected.removeIf(ObjEntity::isGeneric);
+
+ objEntities.retainAll(selected);
+ generator.addEntities(objEntities);
+
+ LinkedList<Embeddable> embeddables = new LinkedList<>(map.getEmbeddables());
+ embeddables.retainAll(getSelectedEmbeddables());
+ generator.addEmbeddables(embeddables);
+
+ generator.addQueries(map.getQueryDescriptors());
+ }
+ }
+
+ public void addToSelectedEntities(Collection<String> entities) {
+ selectedEntities.addAll(entities);
+ }
+
+ public void addToSelectedEmbeddables(Collection<String> embeddables) {
+ selectedEmbeddables.addAll(embeddables);
+ }
+
+ public int getSelectedEntitiesSize() {
+ return selectedEntities.size();
+ }
+
+ public int getSelectedEmbeddablesSize() {
+ return selectedEmbeddables.size();
+ }
+
public DataMap getDataMap() {
return dataMap;
}
@@ -286,4 +304,16 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
public ProjectController getProjectController() {
return projectController;
}
+
+ public Object getCurrentClass() {
+ return currentClass;
+ }
+
+ public void setCurrentClass(Object currentClass) {
+ this.currentClass = currentClass;
+ }
+
+// public Collection<DataMap> getDataMaps() {
+// return dataMaps;
+// }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
index 8f4dac9..3d07c60 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
@@ -26,9 +26,10 @@ import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog;
import org.apache.cayenne.modeler.pref.DataMapDefaults;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
-import org.apache.cayenne.util.Util;
import javax.swing.*;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
import java.awt.*;
import java.util.*;
import java.util.List;
@@ -49,14 +50,19 @@ public class CustomModeController extends GeneratorController {
static final Map<String, String> modesByLabel = new HashMap<>();
+ static final Map<String, String> labelByMode = new HashMap<>();
+
static {
modesByLabel.put(DATA_MAP_MODE_LABEL, MODE_DATAMAP);
modesByLabel.put(ENTITY_MODE_LABEL, MODE_ENTITY);
modesByLabel.put(ALL_MODE_LABEL, MODE_ALL);
+ labelByMode.put(MODE_DATAMAP, DATA_MAP_MODE_LABEL);
+ labelByMode.put(MODE_ENTITY, ENTITY_MODE_LABEL);
+ labelByMode.put(MODE_ALL, ALL_MODE_LABEL);
}
protected CustomModePanel view;
- protected CodeTemplateManager templateManager;
+ private CodeTemplateManager templateManager;
protected ObjectBinding superTemplate;
protected ObjectBinding subTemplate;
@@ -65,6 +71,8 @@ public class CustomModeController extends GeneratorController {
private CustomPreferencesUpdater preferencesUpdater;
+ private ClassGenerationAction classGenerationAction;
+
public CustomPreferencesUpdater getCustomPreferencesUpdater() {
return preferencesUpdater;
}
@@ -72,6 +80,7 @@ public class CustomModeController extends GeneratorController {
public CustomModeController(CodeGeneratorControllerBase parent) {
super(parent);
this.view = new CustomModePanel();
+ initListeners();
bind();
}
@@ -80,64 +89,11 @@ public class CustomModeController extends GeneratorController {
builder = new BindingBuilder(getApplication().getBindingFactory(), this);
builder.bindToAction(view.getManageTemplatesLink(), "popPreferencesAction()");
- Object[] modeChoices = new Object[]{ENTITY_MODE_LABEL, DATA_MAP_MODE_LABEL, ALL_MODE_LABEL};
- view.getGenerationMode().setModel(new DefaultComboBoxModel(modeChoices));
+ updateTemplates();
}
public void startup(DataMap dataMap) {
- super.startup(dataMap);
-
- // bind preferences and init defaults...
- DataMapDefaults dataMapDefaults = getMapPreferences().get(getParentController().getDataMap());
-
- if (Util.isEmptyString(dataMapDefaults.getSuperclassTemplate())) {
- dataMapDefaults.setSuperclassTemplate(CodeTemplateManager.STANDARD_SERVER_SUPERCLASS);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getSubclassTemplate())) {
- dataMapDefaults.setSubclassTemplate(CodeTemplateManager.STANDARD_SERVER_SUBCLASS);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getProperty("mode"))) {
- dataMapDefaults.setProperty("mode", MODE_ENTITY);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getProperty("overwrite"))) {
- dataMapDefaults.setBooleanProperty("overwrite", false);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getProperty("pairs"))) {
- dataMapDefaults.setBooleanProperty("pairs", true);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getProperty("usePackagePath"))) {
- dataMapDefaults.setBooleanProperty("usePackagePath", true);
- }
-
- if (Util.isEmptyString(dataMapDefaults.getProperty("outputPattern"))) {
- dataMapDefaults.setProperty("outputPattern", "*.java");
- }
-
- builder.bindToComboSelection(view.getGenerationMode(), "customPreferencesUpdater.mode").updateView();
-
- builder.bindToStateChange(view.getOverwrite(), "customPreferencesUpdater.overwrite").updateView();
-
- builder.bindToStateChange(view.getPairs(), "customPreferencesUpdater.pairs").updateView();
-
- builder.bindToStateChange(view.getUsePackagePath(), "customPreferencesUpdater.usePackagePath").updateView();
-
- subTemplate = builder.bindToComboSelection(view.getSubclassTemplate(),
- "customPreferencesUpdater.subclassTemplate");
-
- superTemplate = builder.bindToComboSelection(view.getSuperclassTemplate(),
- "customPreferencesUpdater.superclassTemplate");
-
- builder.bindToTextField(view.getOutputPattern(), "customPreferencesUpdater.outputPattern").updateView();
-
- builder.bindToStateChange(view.getCreatePropertyNames(), "customPreferencesUpdater.createPropertyNames")
- .updateView();
-
- updateTemplates();
+ createDefaults();
}
protected void createDefaults() {
@@ -159,19 +115,10 @@ public class CustomModeController extends GeneratorController {
preferencesUpdater = new CustomPreferencesUpdater(map);
}
- protected GeneratorControllerPanel createView() {
- if (getParentController().getDataMap() != view.getStandardPanelComponent().getDataMap()) {
- DataMapDefaults dataMapDefaults = getMapPreferences().get(getParentController().getDataMap());
- view.getStandardPanelComponent().setDataMap(getParentController().getDataMap());
- view.getStandardPanelComponent().setPreferences(dataMapDefaults);
- view.getStandardPanelComponent().getDataMapName().setText(view.getStandardPanelComponent().getDataMap().getName());
- BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), view.getStandardPanelComponent());
- builder.bindToTextField(view.getStandardPanelComponent().getSuperclassPackage(), "preferences.superclassPackage").updateView();
- }
- return view;
- }
-
protected void updateTemplates() {
+ Object[] modeChoices = new Object[]{ENTITY_MODE_LABEL, DATA_MAP_MODE_LABEL, ALL_MODE_LABEL};
+ view.getGenerationMode().setModel(new DefaultComboBoxModel(modeChoices));
+
this.templateManager = getApplication().getCodeTemplateManager();
List<String> customTemplates = new ArrayList<>(templateManager.getCustomTemplates().keySet());
@@ -187,43 +134,12 @@ public class CustomModeController extends GeneratorController {
this.view.getSubclassTemplate().setModel(new DefaultComboBoxModel(subTemplates.toArray()));
this.view.getSuperclassTemplate().setModel(new DefaultComboBoxModel(superTemplates.toArray()));
-
- superTemplate.updateView();
- subTemplate.updateView();
}
public Component getView() {
return view;
}
- public Collection<ClassGenerationAction> createGenerator() {
-
- mode = modesByLabel.get(view.getGenerationMode().getSelectedItem()).toString();
-
- Collection<ClassGenerationAction> generators = super.createGenerator();
-
- String superKey = view.getSuperclassTemplate().getSelectedItem().toString();
- String superTemplate = templateManager.getTemplatePath(superKey);
-
- String subKey = view.getSubclassTemplate().getSelectedItem().toString();
- String subTemplate = templateManager.getTemplatePath(subKey);
-
- for (ClassGenerationAction generator : generators) {
- generator.setSuperTemplate(superTemplate);
- generator.setTemplate(subTemplate);
- generator.setOverwrite(view.getOverwrite().isSelected());
- generator.setUsePkgPath(view.getUsePackagePath().isSelected());
- generator.setMakePairs(view.getPairs().isSelected());
- generator.setCreatePropertyNames(view.getCreatePropertyNames().isSelected());
-
- if (!Util.isEmptyString(view.getOutputPattern().getText())) {
- generator.setOutputPattern(view.getOutputPattern().getText());
- }
- }
-
- return generators;
- }
-
public void popPreferencesAction() {
new PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY);
updateTemplates();
@@ -235,4 +151,97 @@ public class CustomModeController extends GeneratorController {
getApplication().getInjector().injectMembers(action);
return action;
}
+
+ private void initListeners(){
+ view.getOutputFolder().getDocument().addDocumentListener(new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ classGenerationAction.setDestDir(view.getOutputDir());
+ getParentController().getProjectController().setDirty(true);
+ }
+ @Override
+ public void removeUpdate(DocumentEvent e) {}
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {}
+ });
+
+ view.getPairs().addActionListener(val -> {
+ classGenerationAction.setMakePairs(view.getPairs().isSelected());
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getOverwrite().addActionListener(val -> {
+ classGenerationAction.setOverwrite(view.getOverwrite().isSelected());
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getCreatePropertyNames().addActionListener(val -> {
+ classGenerationAction.setCreatePropertyNames(view.getCreatePropertyNames().isSelected());
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getUsePackagePath().addActionListener(val -> {
+ classGenerationAction.setUsePkgPath(view.getUsePackagePath().isSelected());
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getSubclassTemplate().addActionListener(val -> {
+ classGenerationAction.setTemplate(getApplication().getCodeTemplateManager().getTemplatePath(String.valueOf(view.getSubclassTemplate().getSelectedItem())));
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getSuperclassTemplate().addActionListener(val -> {
+ classGenerationAction.setSuperTemplate(getApplication().getCodeTemplateManager().getTemplatePath(String.valueOf(view.getSuperclassTemplate().getSelectedItem())));
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getGenerationMode().addActionListener(val -> {
+ classGenerationAction.setArtifactsGenerationMode(modesByLabel.get(view.getGenerationMode().getSelectedItem()));
+ getParentController().getProjectController().setDirty(true);
+ });
+
+ view.getOutputPattern().getDocument().addDocumentListener(new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ classGenerationAction.setOutputPattern(view.getOutputPattern().getText());
+ getParentController().getProjectController().setDirty(true);
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e) {}
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {}
+ });
+
+ view.getSuperclassPackage().getDocument().addDocumentListener(new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ classGenerationAction.setSuperPkg(view.getSuperclassPackage().getText());
+ getParentController().getProjectController().setDirty(true);
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e) {}
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {}
+ });
+ }
+
+ public void initForm(ClassGenerationAction classGenerationAction){
+ this.classGenerationAction = classGenerationAction;
+ view.setOutputFolder(classGenerationAction.getDir());
+ view.setGenerationMode(labelByMode.get(classGenerationAction.getArtifactsGenerationMode()));
+ view.setTemplate(getApplication().getCodeTemplateManager().getNameByPath(classGenerationAction.getTemplate()));
+ view.setSuperclassTemplate(getApplication().getCodeTemplateManager().getNameByPath(classGenerationAction.getSuperclassTemplate()));
+ view.setDataMapName(classGenerationAction.getDataMap().getName());
+ view.setOutputPattern(classGenerationAction.getOutputPattern());
+ view.setPairs(classGenerationAction.isMakePairs());
+ view.setUsePackagePath(classGenerationAction.isUsePkgPath());
+ view.setOverwrite(classGenerationAction.isOverwrite());
+ view.setCreatePropertyNames(classGenerationAction.isCreatePropertyNames());
+ view.setSuperclassPackage(classGenerationAction.getSuperPkg());
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
index 538ff64..720c521 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
@@ -36,6 +36,7 @@ public class CustomModePanel extends GeneratorControllerPanel {
protected JCheckBox usePackagePath;
protected JTextField outputPattern;
protected JCheckBox createPropertyNames;
+ private JTextField superclassPackage;
private JTextField additionalMaps;
private JButton selectAdditionalMaps;
@@ -49,8 +50,6 @@ public class CustomModePanel extends GeneratorControllerPanel {
protected ActionLink manageTemplatesLink;
- private StandardPanelComponent standardPanelComponent;
-
public CustomModePanel() {
this.generationMode = new JComboBox();
@@ -62,9 +61,8 @@ public class CustomModePanel extends GeneratorControllerPanel {
this.outputPattern = new JTextField();
this.createPropertyNames = new JCheckBox();
this.manageTemplatesLink = new ActionLink("Customize Templates...");
- manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f));
-
- this.standardPanelComponent = new StandardPanelComponent();
+ this.manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f));
+ this.superclassPackage = new JTextField();
this.additionalMaps = new JTextField();
this.selectAdditionalMaps = new JButton("Select");
@@ -129,7 +127,10 @@ public class CustomModePanel extends GeneratorControllerPanel {
builder.append("Client", client);
builder.nextLine();
- builder.append(standardPanelComponent, 4);
+ builder.append(dataMapName);
+ builder.nextLine();
+
+ builder.append("Superclass package", superclassPackage);
setLayout(new BorderLayout());
add(builder.getPanel(), BorderLayout.CENTER);
@@ -141,12 +142,6 @@ public class CustomModePanel extends GeneratorControllerPanel {
add(builder.getPanel(), BorderLayout.CENTER);
}
- public void addDataMapLine(StandardPanelComponent dataMapLine) {
- dataMapLines.add(dataMapLine);
- builder.append(dataMapLine, 4);
- builder.nextLine();
- }
-
public JComboBox getGenerationMode() {
return generationMode;
}
@@ -183,7 +178,48 @@ public class CustomModePanel extends GeneratorControllerPanel {
return createPropertyNames;
}
- public StandardPanelComponent getStandardPanelComponent() {
- return standardPanelComponent;
+
+ public JTextField getSuperclassPackage() {
+ return superclassPackage;
+ }
+
+ public void setDataMapName(String mapName){
+ dataMapName.setText(mapName);
+ }
+
+ public void setSuperclassPackage(String pack) {
+ superclassPackage.setText(pack);
+ }
+
+ public void setPairs(boolean val){
+ pairs.setSelected(val);
+ }
+
+ public void setOverwrite(boolean val){
+ overwrite.setSelected(val);
+ }
+
+ public void setUsePackagePath(boolean val) {
+ usePackagePath.setSelected(val);
+ }
+
+ public void setCreatePropertyNames(boolean val) {
+ createPropertyNames.setSelected(val);
+ }
+
+ public void setOutputPattern(String pattern){
+ outputPattern.setText(pattern);
+ }
+
+ public void setSuperclassTemplate(String template){
+ superclassTemplate.setSelectedItem(template);
+ }
+
+ public void setTemplate(String template) {
+ subclassTemplate.setSelectedItem(template);
+ }
+
+ public void setGenerationMode(String mode) {
+ generationMode.setSelectedItem(mode);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorController.java
----------------------------------------------------------------------
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 9370e3b..a1ccf8f 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
@@ -48,7 +48,7 @@ import java.util.prefs.Preferences;
*/
public abstract class GeneratorController extends CayenneController {
- protected String mode = ArtifactsGenerationMode.ALL.getLabel();
+ protected String mode = ArtifactsGenerationMode.ENTITY.getLabel();
protected Map<DataMap, DataMapDefaults> mapPreferences;
private String outputPath;
@@ -56,12 +56,6 @@ public abstract class GeneratorController extends CayenneController {
super(parent);
}
- public void startup(DataMap dataMap){
- createDefaults();
- createView();
-// initBindings(new BindingBuilder(getApplication().getBindingFactory(), this));
- }
-
public String getOutputPath() {
return outputPath;
}
@@ -94,25 +88,14 @@ public abstract class GeneratorController extends CayenneController {
}
protected void initBindings(BindingBuilder bindingBuilder) {
-
- initOutputFolder();
-
- JTextField outputFolder = ((GeneratorControllerPanel) getView()).getOutputFolder();
JButton outputSelect = ((GeneratorControllerPanel) getView()).getSelectOutputFolder();
-
- outputFolder.setText(getOutputPath());
bindingBuilder.bindToAction(outputSelect, "selectOutputFolderAction()");
- bindingBuilder.bindToTextField(outputFolder, "outputPath");
}
protected CodeGeneratorControllerBase getParentController() {
return (CodeGeneratorControllerBase) getParent();
}
- protected abstract GeneratorControllerPanel createView();
-
- protected abstract void createDefaults();
-
/**
* Creates an appropriate subclass of {@link ClassGenerationAction},
* returning it in an unconfigured state. Configuration is performed by
@@ -123,76 +106,57 @@ public abstract class GeneratorController extends CayenneController {
/**
* Creates a class generator for provided selections.
*/
- public Collection<ClassGenerationAction> createGenerator() {
-
- File outputDir = getOutputDir();
+ public ClassGenerationAction createGenerator() {
+ DataMap map = getParentController().getProjectController().getCurrentDataMap();
- // no destination folder
- if (outputDir == null) {
- JOptionPane.showMessageDialog(this.getView(), "Select directory for source files.");
- return null;
+ ClassGenerationAction generator = getParentController().projectController.getApplication().getMetaData().get(map, ClassGenerationAction.class);
+ if(generator != null){
+ generator.prepareArtifacts();
+ getParentController().addToSelectedEntities(generator.getEntities());
+ getParentController().addToSelectedEmbeddables(generator.getEmbeddables());
+ return generator;
}
- // no such folder
- if (!outputDir.exists() && !outputDir.mkdirs()) {
- JOptionPane.showMessageDialog(this.getView(), "Can't create directory " + outputDir
- + ". Select a different one.");
- return null;
- }
-
- // not a directory
- if (!outputDir.isDirectory()) {
- JOptionPane.showMessageDialog(this.getView(), outputDir + " is not a valid directory.");
- return null;
- }
-
- // remove generic entities...
- Collection<ObjEntity> selectedEntities = new ArrayList<>(getParentController().getSelectedEntities());
- selectedEntities.removeIf(ObjEntity::isGeneric);
-
- Collection<ClassGenerationAction> generators = new ArrayList<>();
- Collection<StandardPanelComponent> dataMapLines = ((GeneratorControllerPanel) getView()).getDataMapLines();
- DataMap map = getParentController().getDataMap();
try {
- ClassGenerationAction generator = newGenerator();
- generator.setArtifactsGenerationMode(mode);
+ generator = newGenerator();
generator.setDataMap(map);
+ initOutputFolder();
+ File outputDir = new File(outputPath);
- LinkedList<ObjEntity> objEntities = new LinkedList<>(map.getObjEntities());
- objEntities.retainAll(selectedEntities);
- generator.addEntities(objEntities);
-
- LinkedList<Embeddable> embeddables = new LinkedList<>(map.getEmbeddables());
- embeddables.retainAll(getParentController().getSelectedEmbeddables());
- generator.addEmbeddables(embeddables);
-
- generator.addQueries(map.getQueryDescriptors());
+ // no destination folder
+ if (outputDir == null) {
+ JOptionPane.showMessageDialog(this.getView(), "Select directory for source files.");
+ return null;
+ }
- Preferences preferences = application.getPreferencesNode(GeneralPreferences.class, "");
+ // no such folder
+ if (!outputDir.exists() && !outputDir.mkdirs()) {
+ JOptionPane.showMessageDialog(this.getView(), "Can't create directory " + outputDir
+ + ". Select a different one.");
+ return null;
+ }
- if (preferences != null) {
- generator.setEncoding(preferences.get(GeneralPreferences.ENCODING_PREFERENCE, null));
+ // not a directory
+ if (!outputDir.isDirectory()) {
+ JOptionPane.showMessageDialog(this.getView(), outputDir + " is not a valid directory.");
+ return null;
}
generator.setDestDir(outputDir);
- generator.setMakePairs(true);
- generator.setForce(true);
- for (StandardPanelComponent dataMapLine : dataMapLines) {
- if (dataMapLine.getDataMap() == map && !Util.isEmptyString(dataMapLine.getSuperclassPackage().getText())) {
- generator.setSuperPkg(dataMapLine.getSuperclassPackage().getText());
- break;
- }
- }
+ Preferences preferences = application.getPreferencesNode(GeneralPreferences.class, "");
- generators.add(generator);
- } catch (CayenneRuntimeException exception) {
- JOptionPane.showMessageDialog(this.getView(), exception.getUnlabeledMessage());
- return null;
+ if (preferences != null) {
+ generator.setEncoding(preferences.get(GeneralPreferences.ENCODING_PREFERENCE, null));
}
+ getParentController().projectController.getApplication().getMetaData().add(map, generator);
+ } catch (CayenneRuntimeException exception) {
+ JOptionPane.showMessageDialog(this.getView(), exception.getUnlabeledMessage());
+ return null;
+ }
- return generators;
+ return generator;
}
public void validateEmbeddable(ValidationResult validationBuffer, Embeddable embeddable) {
@@ -520,7 +484,7 @@ public abstract class GeneratorController extends CayenneController {
// update model
String path = selected.getAbsolutePath();
outputFolder.setText(path);
- setOutputPath(path);
+// setOutputPath(path);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
----------------------------------------------------------------------
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 9b836bd..7f1f689 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
@@ -20,8 +20,7 @@
package org.apache.cayenne.modeler.editor.cgen;
import javax.swing.*;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.io.File;
/**
* A generic panel that is a superclass of generator panels, defining common fields.
@@ -29,12 +28,10 @@ import java.util.Collection;
*/
public class GeneratorControllerPanel extends JPanel {
- protected Collection<StandardPanelComponent> dataMapLines;
protected JTextField outputFolder;
protected JButton selectOutputFolder;
public GeneratorControllerPanel() {
- this.dataMapLines = new ArrayList<>();
this.outputFolder = new JTextField();
this.selectOutputFolder = new JButton("Select");
}
@@ -43,11 +40,15 @@ public class GeneratorControllerPanel extends JPanel {
return outputFolder;
}
+ public File getOutputDir(){
+ return new File(outputFolder.getText());
+ }
+
public JButton getSelectOutputFolder() {
return selectOutputFolder;
}
- public Collection<StandardPanelComponent> getDataMapLines() {
- return dataMapLines;
+ public void setOutputFolder(String folder) {
+ this.outputFolder.setText(folder);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
index c3fff72..1e338eb 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.pref.PreferenceDetail;
import java.awt.*;
-import java.util.Collection;
/**
*/
@@ -64,7 +63,7 @@ public class GeneratorTabController extends CayenneController {
return customModeController;
}
- public Collection<ClassGenerationAction> getGenerator() {
+ public ClassGenerationAction getGenerator() {
GeneratorController modeController = getGeneratorController();
return (modeController != null) ? modeController.createGenerator() : null;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d489f2a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardPanelComponent.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardPanelComponent.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardPanelComponent.java
deleted file mode 100644
index 71d95e4..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardPanelComponent.java
+++ /dev/null
@@ -1,79 +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.editor.cgen;
-
-import com.jgoodies.forms.builder.DefaultFormBuilder;
-import com.jgoodies.forms.layout.FormLayout;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.modeler.pref.DataMapDefaults;
-
-import javax.swing.*;
-import java.awt.*;
-
-public class StandardPanelComponent extends JComponent {
-
- private DataMap dataMap;
- private DataMapDefaults preferences;
- private JLabel dataMapName;
- private JTextField superclassPackage;
- private DefaultFormBuilder builder;
-
- public StandardPanelComponent() {
- super();
- dataMapName = new JLabel();
- dataMapName.setFont(dataMapName.getFont().deriveFont(1));
- superclassPackage = new JTextField();
-
- FormLayout layout = new FormLayout(
- "right:77dlu, 3dlu, fill:200:grow, 3dlu", "");
- builder = new DefaultFormBuilder(layout);
- builder.append(dataMapName);
- builder.nextLine();
- builder.append("Superclass Package:", superclassPackage);
-
- setLayout(new BorderLayout());
- add(builder.getPanel(), BorderLayout.CENTER);
- }
-
- public DataMap getDataMap() {
- return dataMap;
- }
-
- public void setDataMap(DataMap dataMap) {
- this.dataMap = dataMap;
- }
-
- public DataMapDefaults getPreferences() {
- return preferences;
- }
-
- public void setPreferences(DataMapDefaults preferences) {
- this.preferences = preferences;
- }
-
- public JLabel getDataMapName() {
- return dataMapName;
- }
-
- public JTextField getSuperclassPackage() {
- return superclassPackage;
- }
-
-}