Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.gen')
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/.classpath8
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/.cvsignore6
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/.project28
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF14
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/about.html34
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/build.properties17
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/component.xml1
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/plugin.properties24
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/property_files/jpt_gen.properties13
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenTools.java80
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenerator.java1779
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenScope.java186
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenTable.java362
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JPA.java302
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JptGenMessages.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToManyRelation.java111
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToOneRelation.java81
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/OneToManyRelation.java47
-rw-r--r--jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/PackageGenerator.java103
21 files changed, 0 insertions, 3239 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.classpath b/jpa/plugins/org.eclipse.jpt.gen/.classpath
deleted file mode 100644
index 8f257414e6..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="property_files"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.cvsignore b/jpa/plugins/org.eclipse.jpt.gen/.cvsignore
deleted file mode 100644
index a196dd7686..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-bin
-@dot
-temp.folder
-build.xml
-javaCompiler...args
-javaCompiler...args.* \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.project b/jpa/plugins/org.eclipse.jpt.gen/.project
deleted file mode 100644
index ef2d5088ee..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.jpt.gen</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.core.resources.prefs b/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 1f15ff2b4b..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Jan 15 11:12:07 EST 2008
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.jdt.core.prefs b/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3e1d50ad46..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Sun May 27 14:28:54 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF
deleted file mode 100644
index 65356ab7c1..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.jpt.gen
-Bundle-Version: 1.2.0.qualifier
-Bundle-ClassPath: .
-Bundle-Localization: plugin
-Export-Package: org.eclipse.jpt.gen.internal; x-friends:="org.eclipse.jpt.ui"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jdt.core;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jpt.utility;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.jpt.db;bundle-version="[1.2.0,2.0.0)"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/jpa/plugins/org.eclipse.jpt.gen/about.html b/jpa/plugins/org.eclipse.jpt.gen/about.html
deleted file mode 100644
index be534ba44f..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-
-<BODY lang="EN-US">
-
-<H3>About This Content</H3>
-
-<P>May 02, 2008</P>
-
-<H3>License</H3>
-
-<P>The Eclipse Foundation makes available all content in this plug-in
-("Content"). Unless otherwise indicated below, the Content is provided to you
-under the terms and conditions of the Eclipse Public License Version 1.0
-("EPL"). A copy of the EPL is available at
-<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>.
-For purposes of the EPL, "Program" will mean the Content.</P>
-
-<P>If you did not receive this Content directly from the Eclipse Foundation, the
-Content is being redistributed by another party ("Redistributor") and different
-terms and conditions may apply to your use of any object code in the Content.
-Check the Redistributor's license that was provided with the Content. If no such
-license exists, contact the Redistributor. Unless otherwise indicated below, the
-terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at
-<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
-
-</BODY>
-</HTML>
diff --git a/jpa/plugins/org.eclipse.jpt.gen/build.properties b/jpa/plugins/org.eclipse.jpt.gen/build.properties
deleted file mode 100644
index a1fd5b8411..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-################################################################################
-# Copyright (c) 2006, 2007 Oracle. All rights reserved.
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v1.0, which accompanies this distribution
-# and is available at http://www.eclipse.org/legal/epl-v10.html.
-#
-# Contributors:
-# Oracle - initial API and implementation
-################################################################################
-source.. = src/,\
- property_files/
-output.. = bin/
-bin.includes = .,\
- META-INF/,\
- about.html,\
- plugin.properties
-jars.compile.order = .
diff --git a/jpa/plugins/org.eclipse.jpt.gen/component.xml b/jpa/plugins/org.eclipse.jpt.gen/component.xml
deleted file mode 100644
index 7a4e04e21f..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/component.xml
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.jpt.gen"><description url=""></description><component-depends unrestricted="true"></component-depends><plugin id="org.eclipse.jpt.gen" fragment="false"/></component> \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.gen/plugin.properties b/jpa/plugins/org.eclipse.jpt.gen/plugin.properties
deleted file mode 100644
index 4875a8b174..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/plugin.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# Oracle - initial API and implementation
-###############################################################################
-# ====================================================================
-# To code developer:
-# Do NOT change the properties between this line and the
-# "%%% END OF TRANSLATED PROPERTIES %%%" line.
-# Make a new property name, append to the end of the file and change
-# the code to use the new property.
-# ====================================================================
-
-# ====================================================================
-# %%% END OF TRANSLATED PROPERTIES %%%
-# ====================================================================
-
-pluginName = Java Persistence API Tools - Entity Gen
-providerName = Eclipse.org
diff --git a/jpa/plugins/org.eclipse.jpt.gen/property_files/jpt_gen.properties b/jpa/plugins/org.eclipse.jpt.gen/property_files/jpt_gen.properties
deleted file mode 100644
index 03e8908d0e..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/property_files/jpt_gen.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-################################################################################
-# Copyright (c) 2008 Oracle. All rights reserved.
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v1.0, which accompanies this distribution
-# and is available at http://www.eclipse.org/legal/epl-v10.html.
-#
-# Contributors:
-# Oracle - initial API and implementation
-################################################################################
-
-PackageGenerator_taskName=Generate Entities
-GenScope_taskName=Build Database Model
-EntityGenerator_taskName=Generate Entity: {0}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenTools.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenTools.java
deleted file mode 100644
index 058490ea15..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenTools.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import java.util.Collection;
-import org.eclipse.jpt.utility.internal.NameTools;
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * Utility methods for entity generation.
- */
-public class EntityGenTools {
-
- /**
- * Convert the specified (database) identifier to a unique "Java style"
- * class name.
- * @see #convertToUniqueJavaStyleIdentifier(String, boolean, Collection)
- */
- public static String convertToUniqueJavaStyleClassName(String identifier, Collection<String> classNames) {
- return convertToUniqueJavaStyleIdentifier(identifier, true, classNames);
- }
-
- /**
- * Convert the specified (database) identifier to a unique "Java style"
- * attribute (field/property) name.
- * @see #convertToUniqueJavaStyleIdentifier(String, boolean, Collection)
- */
- public static String convertToUniqueJavaStyleAttributeName(String identifier, Collection<String> attributeNames) {
- return convertToUniqueJavaStyleIdentifier(identifier, false, attributeNames);
- }
-
- /**
- * Convert the specified (database) identifier to a unique "Java style"
- * identifier:
- * - if the identifier is all-caps, convert underscores to "camel case"
- * - if the identifier is not all-caps, leave it unchanged (except, possibly, for the first letter)
- * - convert to a legal Java identifier
- * - eliminate illegal characters
- * - if the result is a reserved word, modify it slightly
- * If the result is already one of the specified existing identifiers
- * (ignoring case so we don't have filename collisions on Windows),
- * modify it slightly again.
- * "FOO" => "Foo" or "foo"
- * "FOO_BAR" => "FooBar" or "fooBar"
- * "PACKAGE" => "Package" or "package_"
- */
- public static String convertToUniqueJavaStyleIdentifier(String identifier, boolean capitalizeFirstLetter, Collection<String> identifiers) {
- String result = identifier;
- if (StringTools.stringIsUppercase(result)) {
- // leave mixed case identifiers alone?
- result = StringTools.convertUnderscoresToCamelCase(result, capitalizeFirstLetter);
- } else {
- result = capitalizeFirstLetter ? StringTools.capitalize(result) : StringTools.uncapitalize(result);
- }
- result = NameTools.convertToJavaIdentifier(result);
- // assume that converting to a unique name will not result in a Java reserved word
- // (since no Java reserved words end with a number)
- result = NameTools.uniqueNameForIgnoreCase(result, identifiers);
- return result;
- }
-
-
- // ********** constructor **********
-
- /**
- * Suppress default constructor, ensuring non-instantiability.
- */
- private EntityGenTools() {
- super();
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenerator.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenerator.java
deleted file mode 100644
index 86d10b48a3..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/EntityGenerator.java
+++ /dev/null
@@ -1,1779 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-import java.lang.reflect.Modifier;
-import java.text.Collator;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.jdt.core.IJavaModelStatusConstants;
-import org.eclipse.jdt.core.IPackageFragment;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jpt.db.Column;
-import org.eclipse.jpt.db.ForeignKey;
-import org.eclipse.jpt.db.Table;
-import org.eclipse.jpt.utility.JavaType;
-import org.eclipse.jpt.utility.internal.BooleanHolder;
-import org.eclipse.jpt.utility.internal.IndentingPrintWriter;
-import org.eclipse.jpt.utility.internal.NameTools;
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
-import org.eclipse.osgi.util.NLS;
-
-// TODO format generated code per preferences
-// TODO organize generated imports per preferences
-/**
- * This generator will generate an entity for a table.
- */
-public class EntityGenerator {
- final Config config;
- private final IPackageFragment packageFragment;
- private final GenTable genTable;
- private final String entityClassName;
- private final String pkClassName;
-
-
- // ********** public API **********
-
- static void generateEntity(
- Config config,
- IPackageFragment packageFragment,
- GenTable genTable,
- IProgressMonitor progressMonitor
- ) {
- if ((config == null) || (packageFragment == null) || (genTable == null)) {
- throw new NullPointerException();
- }
- new EntityGenerator(config, packageFragment, genTable).generateEntity(progressMonitor);
- }
-
-
- // ********** constructor/initialization **********
-
- private EntityGenerator(Config config, IPackageFragment packageFragment, GenTable genTable) {
- super();
- this.config = config;
- this.packageFragment = packageFragment;
- this.genTable = genTable;
- this.entityClassName = this.fullyQualify(this.getEntityName());
- this.pkClassName = this.entityClassName + '.' + config.getPrimaryKeyMemberClassName();
- }
-
-
- // ********** code gen **********
-
- private void generateEntity(IProgressMonitor progressMonitor) {
- try {
- this.generateEntity_(progressMonitor);
- } catch (JavaModelException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- private void generateEntity_(IProgressMonitor progressMonitor) throws JavaModelException {
- SubMonitor sm = SubMonitor.convert(progressMonitor, this.buildTaskName(), 100);
- String fileName = this.getEntityName() + ".java"; //$NON-NLS-1$
- String source = this.buildSource();
- sm.worked(20);
- try {
- this.packageFragment.createCompilationUnit(fileName, source, false, sm.newChild(40));
- } catch (JavaModelException ex) {
- if (ex.getJavaModelStatus().getCode() == IJavaModelStatusConstants.NAME_COLLISION) {
- if (this.config.getOverwriteConfirmer().overwrite(this.entityClassName)) {
- this.packageFragment.createCompilationUnit(fileName, source, true, sm.newChild(40));
- }
- } else {
- throw ex;
- }
- }
- sm.setWorkRemaining(0);
- }
-
- private String buildTaskName() {
- return NLS.bind(JptGenMessages.EntityGenerator_taskName, this.getEntityName());
- }
-
- /**
- * build the "body" source first; then build the "package" and "imports" source
- * and concatenate the "body" source to it
- */
- private String buildSource() {
- // build the body source first so we can gather up the import statements
- BodySource bodySource = this.buildBodySource();
-
- StringWriter sw = new StringWriter(bodySource.length() + 2000);
- PrintWriter pw = new PrintWriter(sw);
- this.printPackageAndImportsOn(pw, bodySource);
- pw.print(bodySource.getSource());
- return sw.toString();
- }
-
- private BodySource buildBodySource() {
- EntitySourceWriter pw = new EntitySourceWriter(this.getPackageName(), this.entityClassName);
- this.printBodySourceOn(pw);
- return pw;
- }
-
- private void printBodySourceOn(EntitySourceWriter pw) {
- this.printClassDeclarationOn(pw);
-
- pw.indent();
- this.printEntityPrimaryKeyFieldsOn(pw);
- this.printEntityNonPrimaryKeyBasicFieldsOn(pw);
- this.printEntityManyToOneFieldsOn(pw);
- this.printEntityOneToManyFieldsOn(pw);
- this.printEntityOwnedManyToManyFieldsOn(pw);
- this.printEntityNonOwnedManyToManyFieldsOn(pw);
- this.printSerialVersionUIDFieldOn(pw);
- pw.println();
-
- this.printZeroArgumentConstructorOn(this.getEntityName(), this.config.getMethodVisibilityClause(), pw);
- if (this.config.propertyAccessType() || this.config.generateGettersAndSetters()) {
- this.printEntityPrimaryKeyPropertiesOn(pw);
- this.printEntityNonPrimaryKeyBasicPropertiesOn(pw);
- this.printEntityManyToOnePropertiesOn(pw);
- this.printEntityOneToManyPropertiesOn(pw);
- this.printEntityOwnedManyToManyPropertiesOn(pw);
- this.printEntityNonOwnedManyToManyPropertiesOn(pw);
- }
-
- if (this.primaryKeyClassIsRequired()) {
- this.printPrimaryKeyClassOn(pw);
- }
- pw.undent();
-
- pw.print('}');
- pw.println(); // EOF
- }
-
-
- // ********** class declaration **********
-
- private void printClassDeclarationOn(EntitySourceWriter pw) {
- this.printEntityAnnotationOn(pw);
- this.printTableAnnotationOn(pw);
- this.printIdClassAnnotationOn(pw);
-
- pw.print("public class "); //$NON-NLS-1$
- pw.printTypeDeclaration(this.entityClassName);
- if (config.serializable()) {
- pw.print(" implements "); //$NON-NLS-1$
- pw.printTypeDeclaration(Serializable.class.getName());
- }
- pw.print(" {"); //$NON-NLS-1$
- pw.println();
- }
-
- private void printEntityAnnotationOn(EntitySourceWriter pw) {
- pw.printAnnotation(JPA.ENTITY);
- pw.println();
- }
-
- private void printTableAnnotationOn(EntitySourceWriter pw) {
- String tableName = this.config.getDatabaseAnnotationNameBuilder().buildTableAnnotationName(this.getEntityName(), this.getTable());
- if (tableName == null) {
- return; // the default table name is OK
- }
- pw.printAnnotation(JPA.TABLE);
- pw.print("(name="); //$NON-NLS-1$
- pw.printStringLiteral(tableName);
- pw.print(')');
- pw.println();
- }
-
- private void printIdClassAnnotationOn(EntitySourceWriter pw) {
- if (this.primaryKeyClassIsRequired() && this.config.generateIdClassForCompoundPK()) {
- pw.printAnnotation(JPA.ID_CLASS);
- pw.print('(');
- pw.printTypeDeclaration(this.pkClassName);
- pw.print(".class)"); //$NON-NLS-1$
- pw.println();
- }
- }
-
-
- // ********** primary key fields **********
-
- private void printEntityPrimaryKeyFieldsOn(EntitySourceWriter pw) {
- if (this.primaryKeyClassIsRequired() && this.config.generateEmbeddedIdForCompoundPK()) {
- this.printEntityEmbeddedIdPrimaryKeyFieldOn(pw);
- } else {
- this.printEntityReadOnlyPrimaryKeyFieldsOn(pw);
- this.printEntityWritablePrimaryKeyFieldsOn(pw);
- }
- }
-
- private void printEntityEmbeddedIdPrimaryKeyFieldOn(EntitySourceWriter pw) {
- if (this.config.fieldAccessType()) {
- pw.printAnnotation(JPA.EMBEDDED_ID);
- pw.println();
- }
- this.printFieldOn(this.genTable.getAttributeNameForEmbeddedId(), this.pkClassName, pw);
- }
-
- private void printEntityReadOnlyPrimaryKeyFieldsOn(EntitySourceWriter pw) {
- this.printPrimaryKeyFieldsOn(pw, true, true); // true=read-only; true=print ID annotation on fields
- }
-
- private void printEntityWritablePrimaryKeyFieldsOn(EntitySourceWriter pw) {
- this.printPrimaryKeyFieldsOn(pw, false, true); // false=writable; true=print ID annotation on fields
- }
-
- private void printPrimaryKeyFieldsOn(EntitySourceWriter pw, boolean readOnly, boolean printIdAnnotation) {
- for (Iterator<Column> stream = this.primaryKeyColumns(readOnly); stream.hasNext(); ) {
- this.printPrimaryKeyFieldOn(stream.next(), pw, readOnly, printIdAnnotation);
- }
- }
-
- private Iterator<Column> primaryKeyColumns(boolean readOnly) {
- return readOnly ? this.genTable.readOnlyPrimaryKeyColumns() : this.genTable.writablePrimaryKeyColumns();
- }
-
- // TODO if the field's type is java.util/sql.Date, it needs @Temporal(DATE)
- // TODO if the primary key is auto-generated, the field must be an integral type
- private void printPrimaryKeyFieldOn(Column column, EntitySourceWriter pw, boolean readOnly, boolean printIdAnnotation) {
- String fieldName = this.genTable.getAttributeNameFor(column);
- if (this.config.fieldAccessType()) {
- if (printIdAnnotation) {
- pw.printAnnotation(JPA.ID);
- pw.println();
- }
- String columnName = this.config.getDatabaseAnnotationNameBuilder().buildColumnAnnotationName(fieldName, column);
- if (readOnly) {
- this.printReadOnlyColumnAnnotationOn(columnName, pw);
- } else {
- this.printColumnAnnotationOn(columnName, pw);
- }
- }
- this.printFieldOn(fieldName, column.getPrimaryKeyJavaTypeDeclaration(), pw);
- }
-
- private void printReadOnlyColumnAnnotationOn(String columnName, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.COLUMN);
- pw.print('(');
- if (columnName != null) {
- pw.print("name="); //$NON-NLS-1$
- pw.printStringLiteral(columnName);
- pw.print(", "); //$NON-NLS-1$
- }
- pw.print("insertable=false, updatable=false)"); //$NON-NLS-1$
- pw.println();
- }
-
-
- // ********** basic fields **********
-
- private void printEntityNonPrimaryKeyBasicFieldsOn(EntitySourceWriter pw) {
- for (Iterator<Column> stream = this.genTable.nonPrimaryKeyBasicColumns(); stream.hasNext(); ) {
- this.printEntityNonPrimaryKeyBasicFieldOn(stream.next(), pw);
- }
- }
-
- private void printEntityNonPrimaryKeyBasicFieldOn(Column column, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(column);
- if (this.config.fieldAccessType()) {
- String columnName = this.config.getDatabaseAnnotationNameBuilder().buildColumnAnnotationName(fieldName, column);
- this.printColumnAnnotationOn(columnName, pw);
- }
- if (column.isLOB()) {
- pw.printAnnotation(JPA.LOB);
- pw.println();
- }
- this.printFieldOn(fieldName, column.getJavaTypeDeclaration(), pw);
- }
-
- private void printColumnAnnotationOn(String columnName, EntitySourceWriter pw) {
- if (columnName != null) { // the column name is null if the default is OK
- pw.printAnnotation(JPA.COLUMN);
- pw.print("(name="); //$NON-NLS-1$
- pw.printStringLiteral(columnName);
- pw.print(')');
- pw.println();
- }
- }
-
-
- // ********** many-to-one fields **********
-
- private void printEntityManyToOneFieldsOn(EntitySourceWriter pw) {
- for (Iterator<ManyToOneRelation> stream = this.genTable.manyToOneRelations(); stream.hasNext(); ) {
- this.printEntityManyToOneFieldOn(stream.next(), pw);
- }
- }
-
- private void printEntityManyToOneFieldOn(ManyToOneRelation relation, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(relation);
- if (this.config.fieldAccessType()) {
- this.printManyToOneAnnotationOn(fieldName, relation, pw);
- }
- this.printFieldOn(fieldName, this.fullyQualify(relation.getReferencedEntityName()), pw);
- }
-
- private void printManyToOneAnnotationOn(String attributeName, ManyToOneRelation relation, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.MANY_TO_ONE);
- pw.println();
- ForeignKey foreignKey = relation.getForeignKey();
- if (foreignKey.referencesSingleColumnPrimaryKey()) {
- // if the FK references a single-column PK, 'referencedColumnName' is not required
- String joinColumnName = this.config.getDatabaseAnnotationNameBuilder().buildJoinColumnAnnotationName(attributeName, foreignKey);
- if (joinColumnName == null) {
- // no JoinColumn annotation needed: the default 'name' and 'referencedColumnName' work
- } else {
- // there is only a single join column here (just not the default name)
- this.printJoinColumnAnnotationOn(joinColumnName, null, pw);
- pw.println();
- }
- } else {
- this.printManyToOneJoinColumnsAnnotationOn(foreignKey, pw);
- }
- }
-
- private void printManyToOneJoinColumnsAnnotationOn(ForeignKey foreignKey, EntitySourceWriter pw) {
- if (foreignKey.columnPairsSize() > 1) {
- pw.printAnnotation(JPA.JOIN_COLUMNS);
- pw.print("({"); //$NON-NLS-1$
- pw.println();
- pw.indent();
- }
- this.printJoinColumnAnnotationsOn(foreignKey, pw);
- if (foreignKey.columnPairsSize() > 1) {
- pw.undent();
- pw.println();
- pw.print("})"); //$NON-NLS-1$
- }
- pw.println();
- }
-
- private void printJoinColumnAnnotationsOn(ForeignKey foreignKey, EntitySourceWriter pw) {
- for (Iterator<ForeignKey.ColumnPair> stream = foreignKey.columnPairs(); stream.hasNext(); ) {
- this.printJoinColumnAnnotationOn(stream.next(), pw);
- if (stream.hasNext()) {
- pw.println(',');
- }
- }
- }
-
- private void printJoinColumnAnnotationOn(ForeignKey.ColumnPair columnPair, EntitySourceWriter pw) {
- this.printJoinColumnAnnotationOn(
- this.config.getDatabaseAnnotationNameBuilder().buildJoinColumnAnnotationName(columnPair.getBaseColumn()),
- this.config.getDatabaseAnnotationNameBuilder().buildJoinColumnAnnotationName(columnPair.getReferencedColumn()),
- pw
- );
- }
-
- /**
- * 'baseColumnName' cannot be null;
- * 'referencedColumnName' is null when the default is applicable (i.e. the
- * referenced column is the single-column primary key column of the
- * referenced table)
- */
- private void printJoinColumnAnnotationOn(String baseColumnName, String referencedColumnName, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.JOIN_COLUMN);
- pw.print("(name="); //$NON-NLS-1$
- pw.printStringLiteral(baseColumnName);
-
- if (referencedColumnName != null) {
- pw.print(", referencedColumnName="); //$NON-NLS-1$
- pw.printStringLiteral(referencedColumnName);
- }
-
- pw.print(')');
- }
-
-
- // ********** one-to-many fields **********
-
- private void printEntityOneToManyFieldsOn(EntitySourceWriter pw) {
- for (Iterator<OneToManyRelation> stream = this.genTable.oneToManyRelations(); stream.hasNext(); ) {
- this.printEntityOneToManyFieldOn(stream.next(), pw);
- }
- }
-
- private void printEntityOneToManyFieldOn(OneToManyRelation relation, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(relation);
- if (this.config.fieldAccessType()) {
- this.printOneToManyAnnotationOn(relation, pw);
- }
- this.printCollectionFieldOn(fieldName, this.fullyQualify(relation.getReferencedEntityName()), pw);
- }
-
- private void printOneToManyAnnotationOn(OneToManyRelation relation, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.ONE_TO_MANY);
- pw.print("(mappedBy=\""); //$NON-NLS-1$
- pw.print(relation.getMappedBy());
- pw.print("\")"); //$NON-NLS-1$
- pw.println();
- }
-
-
- // ********** owned many-to-many fields **********
-
- private void printEntityOwnedManyToManyFieldsOn(EntitySourceWriter pw) {
- for (Iterator<ManyToManyRelation> stream = this.genTable.ownedManyToManyRelations(); stream.hasNext(); ) {
- this.printEntityOwnedManyToManyFieldOn(stream.next(), pw);
- }
- }
-
- private void printEntityOwnedManyToManyFieldOn(ManyToManyRelation relation, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(relation);
- if (this.config.fieldAccessType()) {
- this.printOwnedManyToManyAnnotationOn(fieldName, relation, pw);
- }
- this.printCollectionFieldOn(fieldName, this.fullyQualify(relation.getNonOwningEntityName()), pw);
- }
-
- /**
- * only print the JoinTable annotation if one or more of the
- * [generated] elements is not defaulted:
- * name
- * joinColumns
- * inverseJoinColumns
- * thus the need for the 'printJoinTableAnnotation' flag
- */
- private void printOwnedManyToManyAnnotationOn(String attributeName, ManyToManyRelation relation, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.MANY_TO_MANY);
- pw.println();
- BooleanHolder printJoinTableAnnotation = new BooleanHolder(true);
-
- if ( ! relation.joinTableNameIsDefault()) { // db-only test - no need to delegate to platform?
- printJoinTableAnnotation.setFalse();
- pw.printAnnotation(JPA.JOIN_TABLE);
- pw.print("(name="); //$NON-NLS-1$
- pw.printStringLiteral(this.config.getDatabaseAnnotationNameBuilder().buildJoinTableAnnotationName(relation.getJoinGenTable().getTable()));
- }
-
- this.printJoinTableJoinColumnAnnotationsOn(
- "joinColumns", //$NON-NLS-1$
- attributeName,
- relation.getOwningForeignKey(),
- printJoinTableAnnotation,
- pw
- );
-
- this.printJoinTableJoinColumnAnnotationsOn(
- "inverseJoinColumns", //$NON-NLS-1$
- relation.getNonOwningGenTable().getAttributeNameFor(relation),
- relation.getNonOwningForeignKey(),
- printJoinTableAnnotation,
- pw
- );
-
- if (printJoinTableAnnotation.isFalse()) {
- pw.print(')');
- pw.println();
- }
- }
-
- /**
- * 'elementName' is either "joinColumns" or "inverseJoinColumns"
- */
- private void printJoinTableJoinColumnAnnotationsOn(String elementName, String attributeName, ForeignKey foreignKey, BooleanHolder printJoinTableAnnotation, EntitySourceWriter pw) {
- // we have to pre-calculate whether either 'name' and/or 'referencedColumnName'
- // is required because they are wrapped by the JoinTable annotation and we
- // need to print the JoinTable annotation first (if it hasn't already been printed)
- boolean printRef = ! foreignKey.referencesSingleColumnPrimaryKey();
- // if 'referencedColumnName' is required, 'name' is also required (i.e. it cannot be defaulted);
- // but we will calculate it later [1], since there could be multiple join columns
- String joinColumnName = (printRef) ?
- null // 'joinColumnName' is not used
- :
- this.config.getDatabaseAnnotationNameBuilder().buildJoinColumnAnnotationName(attributeName, foreignKey);
- boolean printBase = (printRef || (joinColumnName != null));
- if (printBase || printRef) {
- if (printJoinTableAnnotation.isTrue()) {
- printJoinTableAnnotation.setFalse();
- pw.printAnnotation(JPA.JOIN_TABLE);
- pw.print('(');
- } else {
- pw.print(',');
- }
- pw.println();
- pw.indent();
- if (printRef) {
- // if 'printRef' is true, 'joinColumnName' will always be "IGNORED" (so we ignore it)
- this.printJoinTableJoinColumnAnnotationsOn(elementName, foreignKey, pw); // [1]
- } else {
- // if the FK references a single-column PK, 'referencedColumnName' is not required
- if (printBase) {
- // there is only a single join column here (just not the default name)
- pw.print(elementName);
- pw.print('=');
- this.printJoinColumnAnnotationOn(joinColumnName, null, pw);
- } else {
- // no JoinColumn annotation needed: the default 'name' and 'referencedColumnName' work
- }
- }
- pw.undent();
- }
- }
-
- /**
- * 'elementName' is either "joinColumns" or "inverseJoinColumns"
- */
- private void printJoinTableJoinColumnAnnotationsOn(String elementName, ForeignKey foreignKey, EntitySourceWriter pw) {
- pw.print(elementName);
- pw.print('=');
- if (foreignKey.columnPairsSize() > 1) {
- pw.print('{');
- pw.println();
- pw.indent();
- }
- this.printJoinColumnAnnotationsOn(foreignKey, pw);
- if (foreignKey.columnPairsSize() > 1) {
- pw.undent();
- pw.println();
- pw.print('}');
- pw.println();
- }
- }
-
-
- // ********** non-owned many-to-many fields **********
-
- private void printEntityNonOwnedManyToManyFieldsOn(EntitySourceWriter pw) {
- for (Iterator<ManyToManyRelation> stream = this.genTable.nonOwnedManyToManyRelations(); stream.hasNext(); ) {
- this.printEntityNonOwnedManyToManyFieldOn(stream.next(), pw);
- }
- }
-
- private void printEntityNonOwnedManyToManyFieldOn(ManyToManyRelation relation, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(relation);
- if (this.config.fieldAccessType()) {
- this.printNonOwnedManyToManyAnnotationOn(relation, pw);
- }
- this.printCollectionFieldOn(fieldName, this.fullyQualify(relation.getOwningEntityName()), pw);
- }
-
- private void printNonOwnedManyToManyAnnotationOn(ManyToManyRelation relation, EntitySourceWriter pw) {
- pw.printAnnotation(JPA.MANY_TO_MANY);
- pw.print("(mappedBy=\""); //$NON-NLS-1$
- pw.print(relation.getMappedBy());
- pw.print("\")"); //$NON-NLS-1$
- pw.println();
- }
-
-
- // ********** misc **********
-
- private void printSerialVersionUIDFieldOn(EntitySourceWriter pw) {
- if (this.config.generateSerialVersionUID()) {
- pw.print("private static final long serialVersionUID = 1L;"); //$NON-NLS-1$
- pw.println();
- }
- }
-
- private void printZeroArgumentConstructorOn(String ctorName, String visibility, EntitySourceWriter pw) {
- if (this.config.generateDefaultConstructor()) {
- pw.printVisibility(visibility);
- pw.print(ctorName);
- pw.print("() {"); //$NON-NLS-1$
- pw.println();
- pw.indent();
- pw.println("super();"); //$NON-NLS-1$
- pw.undent();
- pw.print('}');
- pw.println();
- pw.println();
- }
- }
-
-
- // ********** primary key properties **********
-
- private void printEntityPrimaryKeyPropertiesOn(EntitySourceWriter pw) {
- if (this.primaryKeyClassIsRequired() && this.config.generateEmbeddedIdForCompoundPK()) {
- this.printEntityEmbeddedIdPrimaryKeyPropertyOn(pw);
- } else {
- this.printEntityReadOnlyPrimaryKeyPropertiesOn(pw);
- this.printEntityWritablePrimaryKeyPropertiesOn(pw);
- }
- }
-
- private void printEntityEmbeddedIdPrimaryKeyPropertyOn(EntitySourceWriter pw) {
- if (this.config.propertyAccessType()) {
- pw.printAnnotation(JPA.EMBEDDED_ID);
- pw.println();
- }
- this.printPropertyOn(this.genTable.getAttributeNameForEmbeddedId(), this.pkClassName, pw);
- }
-
- private void printEntityReadOnlyPrimaryKeyPropertiesOn(EntitySourceWriter pw) {
- this.printPrimaryKeyPropertiesOn(pw, true, true); // true=read-only; true=print ID annotation on getters
- }
-
- private void printEntityWritablePrimaryKeyPropertiesOn(EntitySourceWriter pw) {
- this.printPrimaryKeyPropertiesOn(pw, false, true); // false=writable; true=print ID annotation on getters
- }
-
- private void printPrimaryKeyPropertiesOn(EntitySourceWriter pw, boolean readOnly, boolean printIdAnnotation) {
- for (Iterator<Column> stream = this.primaryKeyColumns(readOnly); stream.hasNext(); ) {
- this.printPrimaryKeyPropertyOn(stream.next(), pw, readOnly, printIdAnnotation);
- }
- }
-
- // TODO if the property's type is java.util/sql.Date, it needs @Temporal(DATE)
- // TODO if the primary key is auto-generated, the property must be an integral type
- private void printPrimaryKeyPropertyOn(Column column, EntitySourceWriter pw, boolean readOnly, boolean printIdAnnotation) {
- String propertyName = this.genTable.getAttributeNameFor(column);
- if (this.config.propertyAccessType()) {
- if (printIdAnnotation) {
- pw.printAnnotation(JPA.ID);
- pw.println();
- }
- String columnName = this.config.getDatabaseAnnotationNameBuilder().buildColumnAnnotationName(propertyName, column);
- if (readOnly) {
- this.printReadOnlyColumnAnnotationOn(columnName, pw);
- } else {
- this.printColumnAnnotationOn(columnName, pw);
- }
- }
- this.printPropertyOn(propertyName, column.getPrimaryKeyJavaTypeDeclaration(), pw);
- }
-
-
- // ********** basic properties **********
-
- private void printEntityNonPrimaryKeyBasicPropertiesOn(EntitySourceWriter pw) {
- for (Iterator<Column> stream = this.genTable.nonPrimaryKeyBasicColumns(); stream.hasNext(); ) {
- this.printEntityNonPrimaryKeyBasicPropertyOn(stream.next(), pw);
- }
- }
-
- private void printEntityNonPrimaryKeyBasicPropertyOn(Column column, EntitySourceWriter pw) {
- String propertyName = this.genTable.getAttributeNameFor(column);
- if (this.config.propertyAccessType()) {
- String columnName = this.config.getDatabaseAnnotationNameBuilder().buildColumnAnnotationName(propertyName, column);
- this.printColumnAnnotationOn(columnName, pw);
- }
- this.printPropertyOn(propertyName, column.getJavaTypeDeclaration(), pw);
- }
-
-
- // ********** many-to-one properties **********
-
- private void printEntityManyToOnePropertiesOn(EntitySourceWriter pw) {
- for (Iterator<ManyToOneRelation> stream = this.genTable.manyToOneRelations(); stream.hasNext(); ) {
- this.printEntityManyToOnePropertyOn(stream.next(), pw);
- }
- }
-
- private void printEntityManyToOnePropertyOn(ManyToOneRelation relation, EntitySourceWriter pw) {
- String propertyName = this.genTable.getAttributeNameFor(relation);
- if (this.config.propertyAccessType()) {
- this.printManyToOneAnnotationOn(propertyName, relation, pw);
- }
- String typeDeclaration = this.fullyQualify(relation.getReferencedEntityName());
- this.printPropertyOn(propertyName, typeDeclaration, pw);
- }
-
-
- // ********** one-to-many properties **********
-
- private void printEntityOneToManyPropertiesOn(EntitySourceWriter pw) {
- for (Iterator<OneToManyRelation> stream = this.genTable.oneToManyRelations(); stream.hasNext(); ) {
- this.printEntityOneToManyPropertyOn(stream.next(), pw);
- }
- }
-
- private void printEntityOneToManyPropertyOn(OneToManyRelation relation, EntitySourceWriter pw) {
- String propertyName = this.genTable.getAttributeNameFor(relation);
- if (this.config.propertyAccessType()) {
- this.printOneToManyAnnotationOn(relation, pw);
- }
- String elementTypeDeclaration = this.fullyQualify(relation.getReferencedEntityName());
- this.printCollectionPropertyOn(propertyName, elementTypeDeclaration, pw);
- }
-
-
- // ********** owned many-to-many properties **********
-
- private void printEntityOwnedManyToManyPropertiesOn(EntitySourceWriter pw) {
- for (Iterator<ManyToManyRelation> stream = this.genTable.ownedManyToManyRelations(); stream.hasNext(); ) {
- this.printEntityOwnedManyToManyPropertyOn(stream.next(), pw);
- }
- }
-
- private void printEntityOwnedManyToManyPropertyOn(ManyToManyRelation relation, EntitySourceWriter pw) {
- String propertyName = this.genTable.getAttributeNameFor(relation);
- if (this.config.propertyAccessType()) {
- this.printOwnedManyToManyAnnotationOn(propertyName, relation, pw);
- }
- String elementTypeDeclaration = this.fullyQualify(relation.getNonOwningEntityName());
- this.printCollectionPropertyOn(propertyName, elementTypeDeclaration, pw);
- }
-
-
- // ********** non-owned many-to-many properties **********
-
- private void printEntityNonOwnedManyToManyPropertiesOn(EntitySourceWriter pw) {
- for (Iterator<ManyToManyRelation> stream = this.genTable.nonOwnedManyToManyRelations(); stream.hasNext(); ) {
- this.printEntityNonOwnedManyToManyPropertyOn(stream.next(), pw);
- }
- }
-
- private void printEntityNonOwnedManyToManyPropertyOn(ManyToManyRelation relation, EntitySourceWriter pw) {
- String propertyName = this.genTable.getAttributeNameFor(relation);
- if (this.config.propertyAccessType()) {
- this.printNonOwnedManyToManyAnnotationOn(relation, pw);
- }
- String elementTypeDeclaration = this.fullyQualify(relation.getOwningEntityName());
- this.printCollectionPropertyOn(propertyName, elementTypeDeclaration, pw);
- }
-
-
- // ********** compound primary key class **********
-
- private void printPrimaryKeyClassOn(EntitySourceWriter pw) {
- pw.println();
- if (this.config.generateEmbeddedIdForCompoundPK()) {
- pw.printAnnotation(JPA.EMBEDDABLE);
- pw.println();
- }
- pw.print("public static class "); //$NON-NLS-1$
- pw.print(this.config.getPrimaryKeyMemberClassName());
- pw.print(" implements "); //$NON-NLS-1$
- pw.printTypeDeclaration(Serializable.class.getName());
- pw.print(" {"); //$NON-NLS-1$
- pw.println();
-
- pw.indent();
- if (this.config.generateEmbeddedIdForCompoundPK()) {
- this.printEmbeddableReadOnlyPrimaryKeyFieldsOn(pw);
- this.printEmbeddableWritablePrimaryKeyFieldsOn(pw);
- } else {
- this.printIdFieldsOn(pw);
- }
- this.printSerialVersionUIDFieldOn(pw);
- pw.println();
- this.printZeroArgumentConstructorOn(this.config.getPrimaryKeyMemberClassName(), "public", pw); //$NON-NLS-1$
-
- if (this.config.propertyAccessType() || this.config.generateGettersAndSetters()) {
- if (this.config.generateEmbeddedIdForCompoundPK()) {
- this.printEmbeddableReadOnlyPrimaryKeyPropertiesOn(pw);
- this.printEmbeddableWritablePrimaryKeyPropertiesOn(pw);
- } else {
- this.printIdPropertiesOn(pw);
- }
- }
-
- this.printPrimaryKeyEqualsMethodOn(this.config.getPrimaryKeyMemberClassName(), this.getTable().primaryKeyColumns(), pw);
- this.printPrimaryKeyHashCodeMethodOn(this.getTable().primaryKeyColumns(), pw);
- pw.undent();
-
- pw.print('}');
- pw.println();
- pw.println();
- }
-
-
- // ********** compound primary key class fields **********
-
- private void printEmbeddableReadOnlyPrimaryKeyFieldsOn(EntitySourceWriter pw) {
- this.printPrimaryKeyFieldsOn(pw, true, false); // true=read-only; false=do not print ID annotation on fields
- }
-
- private void printEmbeddableWritablePrimaryKeyFieldsOn(EntitySourceWriter pw) {
- this.printPrimaryKeyFieldsOn(pw, false, false); // false=writable; false=do not print ID annotation on fields
- }
-
- private void printIdFieldsOn(EntitySourceWriter pw) {
- for (Iterator<Column> stream = this.getTable().primaryKeyColumns(); stream.hasNext(); ) {
- this.printIdFieldOn(stream.next(), pw);
- }
- }
-
- private void printIdFieldOn(Column column, EntitySourceWriter pw) {
- this.printFieldOn(this.genTable.getAttributeNameFor(column), column.getPrimaryKeyJavaTypeDeclaration(), pw);
- }
-
-
- // ********** compound primary key class properties **********
-
- private void printEmbeddableReadOnlyPrimaryKeyPropertiesOn(EntitySourceWriter pw) {
- this.printPrimaryKeyPropertiesOn(pw, true, false); // true=read-only; false=do not print ID annotation on getters
- }
-
- private void printEmbeddableWritablePrimaryKeyPropertiesOn(EntitySourceWriter pw) {
- this.printPrimaryKeyPropertiesOn(pw, false, false); // false=writable; false=do not print ID annotation on getters
- }
-
- private void printIdPropertiesOn(EntitySourceWriter pw) {
- for (Iterator<Column> stream = this.getTable().primaryKeyColumns(); stream.hasNext(); ) {
- this.printIdPropertyOn(stream.next(), pw);
- }
- }
-
- private void printIdPropertyOn(Column column, EntitySourceWriter pw) {
- this.printPropertyOn(this.genTable.getAttributeNameFor(column), column.getPrimaryKeyJavaTypeDeclaration(), pw);
- }
-
-
- // ********** compound primary key class equals **********
-
- private void printPrimaryKeyEqualsMethodOn(String className, Iterator<Column> columns, EntitySourceWriter pw) {
- pw.printAnnotation("java.lang.Override"); //$NON-NLS-1$
- pw.println();
-
- pw.println("public boolean equals(Object o) {"); //$NON-NLS-1$
- pw.indent();
- pw.println("if (o == this) {"); //$NON-NLS-1$
- pw.indent();
- pw.println("return true;"); //$NON-NLS-1$
- pw.undent();
- pw.print('}');
- pw.println();
-
- pw.print("if ( ! (o instanceof "); //$NON-NLS-1$
- pw.print(className);
- pw.print(")) {"); //$NON-NLS-1$
- pw.println();
- pw.indent();
- pw.println("return false;"); //$NON-NLS-1$
- pw.undent();
- pw.print('}');
- pw.println();
-
- pw.print(className);
- pw.print(" other = ("); //$NON-NLS-1$
- pw.print(className);
- pw.print(") o;"); //$NON-NLS-1$
- pw.println();
-
- pw.print("return "); //$NON-NLS-1$
- pw.indent();
- while (columns.hasNext()) {
- this.printPrimaryKeyEqualsClauseOn(columns.next(), pw);
- if (columns.hasNext()) {
- pw.println();
- pw.print("&& "); //$NON-NLS-1$
- }
- }
- pw.print(';');
- pw.println();
- pw.undent();
- pw.undent();
- pw.print('}');
- pw.println();
- pw.println();
- }
-
- private void printPrimaryKeyEqualsClauseOn(Column column, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(column);
- JavaType javaType = column.getPrimaryKeyJavaType();
- if (javaType.isPrimitive()) {
- this.printPrimitiveEqualsClauseOn(fieldName, pw);
- } else {
- this.printReferenceEqualsClauseOn(fieldName, pw);
- }
- }
-
- private void printPrimitiveEqualsClauseOn(String fieldName, EntitySourceWriter pw) {
- pw.print("(this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(" == other."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(')');
- }
-
- private void printReferenceEqualsClauseOn(String fieldName, EntitySourceWriter pw) {
- pw.print("this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(".equals(other."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(')');
- }
-
-
- // ********** compound primary key class hash code **********
-
- private void printPrimaryKeyHashCodeMethodOn(Iterator<Column> columns, EntitySourceWriter pw) {
- pw.printAnnotation("java.lang.Override"); //$NON-NLS-1$
- pw.println();
-
- pw.println("public int hashCode() {"); //$NON-NLS-1$
- pw.indent();
- pw.println("final int prime = 31;"); //$NON-NLS-1$
- pw.println("int hash = 17;"); //$NON-NLS-1$
- while (columns.hasNext()) {
- pw.print("hash = hash * prime + "); //$NON-NLS-1$
- this.printPrimaryKeyHashCodeClauseOn(columns.next(), pw);
- pw.print(';');
- pw.println();
- }
- pw.println("return hash;"); //$NON-NLS-1$
- pw.undent();
- pw.print('}');
- pw.println();
- pw.println();
- }
-
- private void printPrimaryKeyHashCodeClauseOn(Column column, EntitySourceWriter pw) {
- String fieldName = this.genTable.getAttributeNameFor(column);
- JavaType javaType = column.getPrimaryKeyJavaType();
- if (javaType.isPrimitive()) {
- this.printPrimitiveHashCodeClauseOn(javaType.getElementTypeName(), fieldName, pw);
- } else {
- this.printReferenceHashCodeClauseOn(fieldName, pw);
- }
- }
-
- private void printPrimitiveHashCodeClauseOn(String primitiveName, String fieldName, EntitySourceWriter pw) {
- if (primitiveName.equals("int")) { //$NON-NLS-1$
- // this.value
- pw.print("this."); //$NON-NLS-1$
- pw.print(fieldName);
- } else if (primitiveName.equals("short") //$NON-NLS-1$
- || primitiveName.equals("byte") //$NON-NLS-1$
- || primitiveName.equals("char")) { //$NON-NLS-1$
- // ((int) this.value) - explicit cast
- pw.print("((int) this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(')');
- } else if (primitiveName.equals("long")) { // cribbed from Long#hashCode() //$NON-NLS-1$
- // ((int) (this.value ^ (this.value >>> 32)))
- pw.print("((int) (this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(" ^ (this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(" >>> 32)))"); //$NON-NLS-1$
- } else if (primitiveName.equals("float")) { // cribbed from Float#hashCode() //$NON-NLS-1$
- // java.lang.Float.floatToIntBits(this.value)
- pw.printTypeDeclaration("java.lang.Float"); //$NON-NLS-1$
- pw.print(".floatToIntBits(this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(')');
- } else if (primitiveName.equals("double")) { // cribbed from Double#hashCode() //$NON-NLS-1$
- // ((int) (java.lang.Double.doubleToLongBits(this.value) ^ (java.lang.Double.doubleToLongBits(this.value) >>> 32)))
- pw.print("((int) ("); //$NON-NLS-1$
- pw.printTypeDeclaration("java.lang.Double"); //$NON-NLS-1$
- pw.print(".doubleToLongBits(this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(") ^ ("); //$NON-NLS-1$
- pw.printTypeDeclaration("java.lang.Double"); //$NON-NLS-1$
- pw.print(".doubleToLongBits(this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(") >>> 32)))"); //$NON-NLS-1$
- } else if (primitiveName.equals("boolean")) { //$NON-NLS-1$
- // (this.value ? 1 : 0)
- pw.print("(this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(" ? 1 : 0)"); //$NON-NLS-1$
- } else {
- throw new IllegalArgumentException(primitiveName);
- }
- }
-
- private void printReferenceHashCodeClauseOn(String fieldName, EntitySourceWriter pw) {
- pw.print("this."); //$NON-NLS-1$
- pw.print(fieldName);
- pw.print(".hashCode()"); //$NON-NLS-1$
- }
-
-
- // ********** package and imports **********
-
- private void printPackageAndImportsOn(PrintWriter pw, BodySource bodySource) {
- if (this.getPackageName().length() != 0) {
- pw.print("package "); //$NON-NLS-1$
- pw.print(this.getPackageName());
- pw.print(';');
- pw.println();
- pw.println();
- }
-
- for (Iterator<Map.Entry<String, String>> stream = bodySource.importEntries(); stream.hasNext(); ) {
- Map.Entry<String, String> entry = stream.next();
- pw.print("import "); //$NON-NLS-1$
- pw.print(entry.getValue()); // package
- pw.print('.');
- pw.print(entry.getKey()); // short class name
- pw.print(';');
- pw.println();
- }
- pw.println();
- }
-
-
- // ********** fields **********
-
- /**
- * visibility is set in the config
- */
- private void printFieldOn(String fieldName, String typeDeclaration, EntitySourceWriter pw) {
- pw.printField(
- fieldName,
- typeDeclaration,
- this.config.getFieldVisibilityClause()
- );
- }
-
- /**
- * visibility and collection type are set in the config
- */
- private void printCollectionFieldOn(String fieldName, String elementTypeDeclaration, EntitySourceWriter pw) {
- pw.printParameterizedField(
- fieldName,
- this.config.getCollectionTypeName(),
- elementTypeDeclaration,
- this.config.getFieldVisibilityClause()
- );
- }
-
-
- // ********** properties **********
-
- /**
- * visibility is set in the config
- */
- private void printPropertyOn(String propertyName, String typeDeclaration, EntitySourceWriter pw) {
- pw.printGetterAndSetter(
- propertyName,
- typeDeclaration,
- this.config.getMethodVisibilityClause()
- );
- }
-
- /**
- * visibility and collection type are set in the config
- */
- private void printCollectionPropertyOn(String propertyName, String elementTypeDeclaration, EntitySourceWriter pw) {
- pw.printCollectionGetterAndSetter(
- propertyName,
- this.config.getCollectionTypeName(),
- elementTypeDeclaration,
- this.config.getMethodVisibilityClause()
- );
- }
-
-
- // ********** convenience methods **********
-
- private String getPackageName() {
- return this.packageFragment.getElementName();
- }
-
- private Table getTable() {
- return this.genTable.getTable();
- }
-
- private String getEntityName() {
- return this.genTable.getEntityName();
- }
-
- private boolean primaryKeyClassIsRequired() {
- return this.getTable().primaryKeyColumnsSize() > 1;
- }
-
- private String fullyQualify(String shortClassName) {
- String pkg = this.getPackageName();
- return (pkg.length() == 0) ? shortClassName : pkg + '.' + shortClassName;
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.genTable.getName() + " => " + this.entityClassName); //$NON-NLS-1$
- }
-
-
- // ********** source writer **********
-
- private interface BodySource {
-
- /**
- * return a sorted set of map entries; the key is the short class name,
- * the value is the package name
- */
- Iterator<Map.Entry<String, String>> importEntries();
-
- /**
- * return the body source code
- */
- String getSource();
-
- /**
- * return the length of the body source code
- */
- int length();
-
- }
-
- /**
- * Extend IndentingPrintWriter with some methods that facilitate building
- * class source code.
- */
- private static class EntitySourceWriter extends IndentingPrintWriter implements BodySource {
- final String packageName;
- final String className;
- // key = short class name; value = package name
- private final Map<String, String> imports = new HashMap<String, String>();
-
- EntitySourceWriter(String packageName, String className) {
- super(new StringWriter(20000));
- this.packageName = packageName;
- this.className = className;
- }
-
- /**
- * Convert the specified string to a String Literal and print it,
- * adding the surrounding double-quotes and escaping characters
- * as necessary.
- */
- void printStringLiteral(String string) {
- StringTools.convertToJavaStringLiteralOn(string, this);
- }
-
- void printVisibility(String visibilityModifier) {
- if (visibilityModifier.length() != 0) {
- this.print(visibilityModifier);
- this.print(' ');
- }
- }
-
- void printAnnotation(String annotationName) {
- this.print('@');
- this.printTypeDeclaration(annotationName);
- }
-
- void printTypeDeclaration(String typeDeclaration) {
- this.print(this.buildImportedTypeDeclaration(typeDeclaration));
- }
-
- /**
- * Return the specified class's "imported" name.
- * The class declaration must be of the form:
- * "int"
- * "int[]" (not "[I")
- * "java.lang.Object"
- * "java.lang.Object[]" (not "[Ljava.lang.Object;")
- * "java.util.Map.Entry" (not "java.util.Map$Entry")
- * "java.util.Map.Entry[][]" (not "[[Ljava.util.Map$Entry;")
- */
- private String buildImportedTypeDeclaration(String typeDeclaration) {
- if (this.typeDeclarationIsMemberClass(typeDeclaration)) {
- // no need for an import, just return the partially-qualified name
- return this.buildMemberClassTypeDeclaration(typeDeclaration);
- }
- int last = typeDeclaration.lastIndexOf('.');
- String pkg = (last == -1) ? "" : typeDeclaration.substring(0, last); //$NON-NLS-1$
- String shortTypeDeclaration = typeDeclaration.substring(last + 1);
- String shortElementTypeName = shortTypeDeclaration;
- while (shortElementTypeName.endsWith("[]")) { //$NON-NLS-1$
- shortElementTypeName = shortElementTypeName.substring(0, shortElementTypeName.length() - 2);
- }
- String prev = this.imports.get(shortElementTypeName);
- if (prev == null) {
- // this is the first class with this short element type name
- this.imports.put(shortElementTypeName, pkg);
- return shortTypeDeclaration;
- }
- if (prev.equals(pkg)) {
- // this element type has already been imported
- return shortTypeDeclaration;
- }
- // another class with the same short element type name has been
- // previously imported, so this one must be used fully-qualified
- return typeDeclaration;
- }
-
- /**
- * e.g. "foo.bar.Employee.PK" will return true
- */
- private boolean typeDeclarationIsMemberClass(String typeDeclaration) {
- return (typeDeclaration.length() > this.className.length())
- && typeDeclaration.startsWith(this.className)
- && (typeDeclaration.charAt(this.className.length()) == '.');
- }
-
- /**
- * e.g. "foo.bar.Employee.PK" will return "Employee.PK"
- * this prevents collisions with other imported classes (e.g. "joo.jar.PK")
- */
- private String buildMemberClassTypeDeclaration(String typeDeclaration) {
- int index = this.packageName.length();
- if (index != 0) {
- index++; // bump past the '.'
- }
- return typeDeclaration.substring(index);
- }
-
- private Iterator<Map.Entry<String, String>> sortedImportEntries() {
- TreeSet<Map.Entry<String, String>> sortedImports = new TreeSet<Map.Entry<String, String>>(this.buildImportEntriesComparator());
- sortedImports.addAll(this.imports.entrySet());
- return sortedImports.iterator();
- }
-
- private Comparator<Map.Entry<String, String>> buildImportEntriesComparator() {
- return new Comparator<Map.Entry<String, String>>() {
- public int compare(Map.Entry<String, String> e1, Map.Entry<String, String> e2) {
- Collator collator = Collator.getInstance();
- int pkg = collator.compare(e1.getValue(), e2.getValue());
- return (pkg == 0) ? collator.compare(e1.getKey(), e2.getKey()) : pkg;
- }
- };
- }
-
- void printField(String fieldName, String typeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.printTypeDeclaration(typeDeclaration);
- this.print(' ');
- this.print(fieldName);
- this.print(';');
- this.println();
- this.println();
- }
-
- void printParameterizedField(String fieldName, String typeDeclaration, String parameterTypeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.printTypeDeclaration(typeDeclaration);
- this.print('<');
- this.printTypeDeclaration(parameterTypeDeclaration);
- this.print('>');
- this.print(' ');
- this.print(fieldName);
- this.print(';');
- this.println();
- this.println();
- }
-
- void printGetterAndSetter(String propertyName, String typeDeclaration, String visibility) {
- this.printGetter(propertyName, typeDeclaration, visibility);
- this.println();
- this.println();
-
- this.printSetter(propertyName, typeDeclaration, visibility);
- this.println();
- this.println();
- }
-
- private void printGetter(String propertyName, String typeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.printTypeDeclaration(typeDeclaration);
- this.print(' ');
- this.print(typeDeclaration.equals("boolean") ? "is" : "get"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- this.print(StringTools.capitalize(propertyName));
- this.print("() {"); //$NON-NLS-1$
- this.println();
-
- this.indent();
- this.print("return this."); //$NON-NLS-1$
- this.print(propertyName);
- this.print(';');
- this.println();
- this.undent();
-
- this.print('}');
- }
-
- private void printSetter(String propertyName, String typeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.print("void set"); //$NON-NLS-1$
- this.print(StringTools.capitalize(propertyName));
- this.print('(');
- this.printTypeDeclaration(typeDeclaration);
- this.print(' ');
- this.print(propertyName);
- this.print(") {"); //$NON-NLS-1$
- this.println();
-
- this.indent();
- this.print("this."); //$NON-NLS-1$
- this.print(propertyName);
- this.print(" = "); //$NON-NLS-1$
- this.print(propertyName);
- this.print(';');
- this.println();
- this.undent();
-
- this.print('}');
- }
-
- void printCollectionGetterAndSetter(String propertyName, String collectionTypeDeclaration, String elementTypeDeclaration, String visibility) {
- this.printCollectionGetter(propertyName, collectionTypeDeclaration, elementTypeDeclaration, visibility);
- this.println();
- this.println();
-
- this.printCollectionSetter(propertyName, collectionTypeDeclaration, elementTypeDeclaration, visibility);
- this.println();
- this.println();
- }
-
- private void printCollectionGetter(String propertyName, String collectionTypeDeclaration, String elementTypeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.printTypeDeclaration(collectionTypeDeclaration);
- this.print('<');
- this.printTypeDeclaration(elementTypeDeclaration);
- this.print("> get"); //$NON-NLS-1$
- this.print(StringTools.capitalize(propertyName));
- this.print("() {"); //$NON-NLS-1$
- this.println();
-
- this.indent();
- this.print("return this."); //$NON-NLS-1$
- this.print(propertyName);
- this.print(';');
- this.println();
- this.undent();
-
- this.print('}');
- }
-
- private void printCollectionSetter(String propertyName, String collectionTypeDeclaration, String elementTypeDeclaration, String visibility) {
- this.printVisibility(visibility);
- this.print("void set"); //$NON-NLS-1$
- this.print(StringTools.capitalize(propertyName));
- this.print('(');
- this.printTypeDeclaration(collectionTypeDeclaration);
- this.print('<');
- this.printTypeDeclaration(elementTypeDeclaration);
- this.print('>');
- this.print(' ');
- this.print(propertyName);
- this.print(") {"); //$NON-NLS-1$
- this.println();
-
- this.indent();
- this.print("this."); //$NON-NLS-1$
- this.print(propertyName);
- this.print(" = "); //$NON-NLS-1$
- this.print(propertyName);
- this.print(';');
- this.println();
- this.undent();
-
- this.print('}');
- }
-
-
- // ********** BodySource implementation **********
-
- public Iterator<Map.Entry<String, String>> importEntries() {
- return new FilteringIterator<Map.Entry<String, String>, Map.Entry<String, String>>(this.sortedImportEntries()) {
- @Override
- protected boolean accept(Map.Entry<String, String> next) {
- String pkg = next.getValue();
- if (pkg.equals("") //$NON-NLS-1$
- || pkg.equals("java.lang") //$NON-NLS-1$
- || pkg.equals(EntitySourceWriter.this.packageName)) {
- return false;
- }
- return true;
- }
- };
- }
-
- public String getSource() {
- return this.out.toString();
- }
-
- public int length() {
- return ((StringWriter) this.out).getBuffer().length();
- }
-
- }
-
-
- // ********** config **********
-
- public static class Config {
- private boolean convertToJavaStyleIdentifiers = true;
-
- private boolean propertyAccessType = false; // as opposed to "field"
-
- private String collectionTypeName = Set.class.getName();
- private String collectionAttributeNameSuffix = "Collection"; // e.g. "private Set<Foo> fooCollection" //$NON-NLS-1$
-
- private int fieldVisibility = Modifier.PRIVATE;
- private int methodVisibility = Modifier.PUBLIC;
-
- private boolean generateGettersAndSetters = true;
- private boolean generateDefaultConstructor = true;
-
- private boolean serializable = true;
- private boolean generateSerialVersionUID = true;
-
- private boolean generateEmbeddedIdForCompoundPK = true; // as opposed to IdClass
- private String embeddedIdAttributeName = "pk"; //$NON-NLS-1$
- private String primaryKeyMemberClassName = "PK"; //$NON-NLS-1$
-
- /**
- * key = table
- * value = entity name
- */
- private HashMap<Table, String> tables = new HashMap<Table, String>();
-
- private DatabaseAnnotationNameBuilder databaseAnnotationNameBuilder = DatabaseAnnotationNameBuilder.Default.INSTANCE;
-
- private OverwriteConfirmer overwriteConfirmer = OverwriteConfirmer.Never.INSTANCE;
-
- public static final int PRIVATE = 0;
- public static final int PACKAGE = 1;
- public static final int PROTECTED = 2;
- public static final int PUBLIC = 3;
-
-
- public boolean convertToJavaStyleIdentifiers() {
- return this.convertToJavaStyleIdentifiers;
- }
- public void setConvertToJavaStyleIdentifiers(boolean convertToJavaStyleIdentifiers) {
- this.convertToJavaStyleIdentifiers = convertToJavaStyleIdentifiers;
- }
-
- public boolean propertyAccessType() {
- return this.propertyAccessType;
- }
- public void setPropertyAccessType(boolean propertyAccessType) {
- this.propertyAccessType = propertyAccessType;
- }
-
- public boolean fieldAccessType() {
- return ! this.propertyAccessType;
- }
- public void setFieldAccessType(boolean fieldAccessType) {
- this.propertyAccessType = ! fieldAccessType;
- }
-
- public String getCollectionTypeName() {
- return this.collectionTypeName;
- }
- public void setCollectionTypeName(String collectionTypeName) {
- this.checkRequiredString(collectionTypeName, "collection type name is required"); //$NON-NLS-1$
- this.collectionTypeName = collectionTypeName;
- }
-
- public String getCollectionAttributeNameSuffix() {
- return this.collectionAttributeNameSuffix;
- }
- public void setCollectionAttributeNameSuffix(String collectionAttributeNameSuffix) {
- this.collectionAttributeNameSuffix = collectionAttributeNameSuffix;
- }
-
- public int getFieldVisibility() {
- return this.fieldVisibility;
- }
- /** entity fields cannot be 'public' */
- public void setFieldVisibility(int fieldVisibility) {
- switch (fieldVisibility) {
- case PRIVATE:
- case PACKAGE:
- case PROTECTED:
- this.fieldVisibility = fieldVisibility;
- break;
- default:
- throw new IllegalArgumentException("invalid field visibility: " + fieldVisibility); //$NON-NLS-1$
- }
- }
- String getFieldVisibilityClause() {
- switch (this.fieldVisibility) {
- case PRIVATE:
- return "private"; //$NON-NLS-1$
- case PACKAGE:
- return ""; //$NON-NLS-1$
- case PROTECTED:
- return "protected"; //$NON-NLS-1$
- default:
- throw new IllegalStateException("invalid field visibility: " + this.fieldVisibility); //$NON-NLS-1$
- }
- }
-
- public int getMethodVisibility() {
- return this.methodVisibility;
- }
- /** entity properties must be 'public' or 'protected' */
- public void setMethodVisibility(int methodVisibility) {
- switch (methodVisibility) {
- case PROTECTED:
- case PUBLIC:
- this.methodVisibility = methodVisibility;
- break;
- default:
- throw new IllegalArgumentException("invalid method visibility: " + methodVisibility); //$NON-NLS-1$
- }
- }
- String getMethodVisibilityClause() {
- switch (this.methodVisibility) {
- case PROTECTED:
- return "protected"; //$NON-NLS-1$
- case PUBLIC:
- return "public"; //$NON-NLS-1$
- default:
- throw new IllegalStateException("invalid method visibility: " + this.methodVisibility); //$NON-NLS-1$
- }
- }
-
- public boolean generateGettersAndSetters() {
- return this.generateGettersAndSetters;
- }
- public void setGenerateGettersAndSetters(boolean generateGettersAndSetters) {
- this.generateGettersAndSetters = generateGettersAndSetters;
- }
-
- public boolean generateDefaultConstructor() {
- return this.generateDefaultConstructor;
- }
- public void setGenerateDefaultConstructor(boolean generateDefaultConstructor) {
- this.generateDefaultConstructor = generateDefaultConstructor;
- }
-
- public boolean serializable() {
- return this.serializable;
- }
- public void setSerializable(boolean serializable) {
- this.serializable = serializable;
- }
-
- public boolean generateSerialVersionUID() {
- return this.generateSerialVersionUID;
- }
- public void setGenerateSerialVersionUID(boolean generateSerialVersionUID) {
- this.generateSerialVersionUID = generateSerialVersionUID;
- }
-
- public boolean generateEmbeddedIdForCompoundPK() {
- return this.generateEmbeddedIdForCompoundPK;
- }
- public void setGenerateEmbeddedIdForCompoundPK(boolean generateEmbeddedIdForCompoundPK) {
- this.generateEmbeddedIdForCompoundPK = generateEmbeddedIdForCompoundPK;
- }
-
- public boolean generateIdClassForCompoundPK() {
- return ! this.generateEmbeddedIdForCompoundPK;
- }
- public void setGenerateIdClassForCompoundPK(boolean generateIdClassForCompoundPK) {
- this.generateEmbeddedIdForCompoundPK = ! generateIdClassForCompoundPK;
- }
-
- public String getEmbeddedIdAttributeName() {
- return this.embeddedIdAttributeName;
- }
- public void setEmbeddedIdAttributeName(String embeddedIdAttributeName) {
- this.checkRequiredString(embeddedIdAttributeName, "EmbeddedId attribute name is required"); //$NON-NLS-1$
- this.embeddedIdAttributeName = embeddedIdAttributeName;
- }
-
- public String getPrimaryKeyMemberClassName() {
- return this.primaryKeyMemberClassName;
- }
- public void setPrimaryKeyMemberClassName(String primaryKeyMemberClassName) {
- this.checkRequiredString(primaryKeyMemberClassName, "primary key member class name is required"); //$NON-NLS-1$
- this.primaryKeyMemberClassName = primaryKeyMemberClassName;
- }
-
- String getEntityName(Table table) {
- return this.tables.get(table);
- }
- Iterator<Table> tables() {
- return this.tables.keySet().iterator();
- }
- int tablesSize() {
- return this.tables.size();
- }
- public void addTable(Table table, String entityName) {
- if (table == null) {
- throw new NullPointerException("table is required"); //$NON-NLS-1$
- }
- this.checkRequiredString(entityName, "entity name is required"); //$NON-NLS-1$
- if (this.tables.containsKey(table)) {
- throw new IllegalArgumentException("duplicate table: " + table.getName()); //$NON-NLS-1$
- }
- if (this.tables.values().contains(entityName)) {
- throw new IllegalArgumentException("duplicate entity name: " + entityName); //$NON-NLS-1$
- }
- if ( ! NameTools.stringConsistsOfJavaIdentifierCharacters(entityName)) {
- throw new IllegalArgumentException("entity name is not a valid Java identifier: " + entityName); //$NON-NLS-1$
- }
- if (NameTools.JAVA_RESERVED_WORDS_SET.contains(entityName)) {
- throw new IllegalArgumentException("entity name is a Java reserved word: " + entityName); //$NON-NLS-1$
- }
- this.tables.put(table, entityName);
- }
-
- public DatabaseAnnotationNameBuilder getDatabaseAnnotationNameBuilder() {
- return this.databaseAnnotationNameBuilder;
- }
- public void setDatabaseAnnotationNameBuilder(DatabaseAnnotationNameBuilder databaseAnnotationNameBuilder) {
- if (databaseAnnotationNameBuilder == null) {
- throw new NullPointerException("database annotation name builder is required"); //$NON-NLS-1$
- }
- this.databaseAnnotationNameBuilder = databaseAnnotationNameBuilder;
- }
-
- public OverwriteConfirmer getOverwriteConfirmer() {
- return this.overwriteConfirmer;
- }
- public void setOverwriteConfirmer(OverwriteConfirmer overwriteConfirmer) {
- if (overwriteConfirmer == null) {
- throw new NullPointerException("overwrite confirmer is required"); //$NON-NLS-1$
- }
- this.overwriteConfirmer = overwriteConfirmer;
- }
-
- private void checkRequiredString(String string, String message) {
- if ((string == null) || (string.length() == 0)) {
- throw new IllegalArgumentException(message);
- }
- }
-
- }
-
-
- // ********** overwrite confirmer **********
-
- public static interface OverwriteConfirmer {
- /**
- * Return whether the entity generator should overwrite the specified
- * file.
- */
- boolean overwrite(String className);
-
-
- final class Always implements OverwriteConfirmer {
- public static final OverwriteConfirmer INSTANCE = new Always();
- public static OverwriteConfirmer instance() {
- return INSTANCE;
- }
- // ensure single instance
- private Always() {
- super();
- }
- // everything will be overwritten
- public boolean overwrite(String arg0) {
- return true;
- }
- @Override
- public String toString() {
- return "OverwriteConfirmer.Always"; //$NON-NLS-1$
- }
- }
-
-
- final class Never implements OverwriteConfirmer {
- public static final OverwriteConfirmer INSTANCE = new Never();
- public static OverwriteConfirmer instance() {
- return INSTANCE;
- }
- // ensure single instance
- private Never() {
- super();
- }
- // nothing will be overwritten
- public boolean overwrite(String arg0) {
- return false;
- }
- @Override
- public String toString() {
- return "OverwriteConfirmer.Never"; //$NON-NLS-1$
- }
- }
-
- }
-
-
- // ********** annotation name builder **********
-
- /**
- * Provide a pluggable way to determine whether and how the entity generator
- * prints the names of various database objects.
- */
- public static interface DatabaseAnnotationNameBuilder {
-
- /**
- * Given the name of an entity and the table to which it is mapped,
- * build and return a string to be used as the value for the entity's
- * Table annotation's 'name' element. Return null if the entity
- * maps to the table by default.
- */
- String buildTableAnnotationName(String entityName, Table table);
-
- /**
- * Given the name of an attribute (field or property) and the column
- * to which it is mapped,
- * build and return a string to be used as the value for the attribute's
- * Column annotation's 'name' element. Return null if the attribute
- * maps to the column by default.
- */
- String buildColumnAnnotationName(String attributeName, Column column);
-
- /**
- * Given the name of an attribute (field or property) and the
- * many-to-one or many-to-many foreign key to which it is mapped,
- * build and return a string to be used as the value for the attribute's
- * JoinColumn annotation's 'name' element. Return null if the attribute
- * maps to the join column by default.
- * The specified foreign key consists of a single column pair whose
- * referenced column is the single-column primary key of the foreign
- * key's referenced table.
- */
- String buildJoinColumnAnnotationName(String attributeName, ForeignKey foreignKey);
-
- /**
- * Build and return a string to be used as the value for a JoinColumn
- * annotation's 'name' or 'referencedColumnName' element.
- * This is called for many-to-one and many-to-many mappings when
- * the default join column name and/or referenced column name are/is
- * not applicable.
- * @see buildJoinColumnAnnotationName(String, ForeignKey)
- */
- String buildJoinColumnAnnotationName(Column column);
-
- /**
- * Build and return a string to be used as the value for a JoinTable
- * annotation's 'name' element.
- * This is called for many-to-many mappings when the default
- * join table name is not applicable.
- */
- String buildJoinTableAnnotationName(Table table);
-
-
- /**
- * The default implementation simple returns the database object's name,
- * unaltered.
- */
- final class Default implements DatabaseAnnotationNameBuilder {
- public static final DatabaseAnnotationNameBuilder INSTANCE = new Default();
- public static DatabaseAnnotationNameBuilder instance() {
- return INSTANCE;
- }
- // ensure single instance
- private Default() {
- super();
- }
- public String buildTableAnnotationName(String entityName, Table table) {
- return table.getName();
- }
- public String buildColumnAnnotationName(String attributeName, Column column) {
- return column.getName();
- }
- public String buildJoinColumnAnnotationName(String attributeName, ForeignKey foreignKey) {
- return foreignKey.getColumnPair().getBaseColumn().getName();
- }
- public String buildJoinColumnAnnotationName(Column column) {
- return column.getName();
- }
- public String buildJoinTableAnnotationName(Table table) {
- return table.getName();
- }
- @Override
- public String toString() {
- return "DatabaseAnnotationNameBuilder.Default"; //$NON-NLS-1$
- }
- }
-
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenScope.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenScope.java
deleted file mode 100644
index 4e524e6f68..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenScope.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.jpt.db.Table;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
-
-/**
- * Build a GenTable for each db.Table passed in.
- * Determine all the relations among the tables in the scope:
- * many-to-many
- * many-to-one
- * one-to-many
- * Make a first pass to determine each entity table's Java attribute names,
- * because we will need them on subsequent passes.
- */
-class GenScope {
- private final EntityGenerator.Config entityConfig;
- private final HashMap<Table, GenTable> genTables;
-
-
- // ********** construction/initialization **********
-
- GenScope(EntityGenerator.Config entityConfig, IProgressMonitor progressMonitor) {
- super();
- this.entityConfig = entityConfig;
- this.genTables = new HashMap<Table, GenTable>(entityConfig.tablesSize());
- SubMonitor sm = SubMonitor.convert(progressMonitor, JptGenMessages.GenScope_taskName, 4);
-
- this.buildGenTables();
- sm.worked(1);
- this.checkCanceled(sm);
-
- this.buildManyToManyRelations();
- sm.worked(1);
- this.checkCanceled(sm);
-
- this.buildManyToOneRelations(); // this will also build the corresponding one-to-many relations
- sm.worked(1);
- this.checkCanceled(sm);
-
- this.buildAttributeNames();
- sm.worked(1);
- this.checkCanceled(sm);
- }
-
- private void buildGenTables() {
- for (Iterator<Table> stream = entityConfig.tables(); stream.hasNext(); ) {
- Table table = stream.next();
- this.genTables.put(table, new GenTable(this, table));
- }
- }
-
- /**
- * find all the "join" tables
- */
- private void buildManyToManyRelations() {
- for (Iterator<GenTable> stream = this.genTables(); stream.hasNext(); ) {
- stream.next().buildJoinTableRelation();
- }
-
- // revert any "join" table that is referenced by another table back to an "entity" table
- HashSet<GenTable> referencedGenTables = this.buildReferencedGenTables();
- for (Iterator<GenTable> stream = this.joinGenTables(); stream.hasNext(); ) {
- GenTable joinGenTable = stream.next();
- if (referencedGenTables.contains(joinGenTable)) {
- joinGenTable.clearJoinTableRelation();
- }
- }
- }
-
- /**
- * find all the many-to-one and corresponding one-to-many relations
- */
- private void buildManyToOneRelations() {
- for (Iterator<GenTable> stream = this.entityGenTables(); stream.hasNext(); ) {
- stream.next().buildManyToOneRelations();
- }
- }
-
- /**
- * determine all the Java attribute names up-front because we will
- * need them for things like 'mappedBy' annotation elements
- */
- private void buildAttributeNames() {
- for (Iterator<GenTable> stream = this.entityGenTables(); stream.hasNext(); ) {
- stream.next().buildAttributeNames();
- }
- }
-
-
- // ********** package API **********
-
- EntityGenerator.Config getEntityConfig() {
- return this.entityConfig;
- }
-
- /**
- * return only the gen tables that are suitable for generating
- * entities (i.e. exclude the "join" tables)
- */
- Iterator<GenTable> entityGenTables() {
- return new FilteringIterator<GenTable, GenTable>(this.genTables()) {
- @Override
- protected boolean accept(GenTable genTable) {
- return ! genTable.isJoinTable();
- }
- };
- }
-
- int entityTablesSize() {
- return CollectionTools.size(this.entityGenTables());
- }
-
- /**
- * return the gen table corresponding to the specified db table;
- * return null if the gen table is not "in-scope" (e.g. a db foreign key
- * might have a reference to a db table that was not included in the
- * scope, so we won't have a corresponding gen table)
- */
- GenTable getGenTable(Table table) {
- return this.genTables.get(table);
- }
-
-
- // ********** internal methods **********
-
- private Iterator<GenTable> genTables() {
- return this.genTables.values().iterator();
- }
-
- private int genTablesSize() {
- return this.genTables.size();
- }
-
- /**
- * return only the "join" gen tables
- */
- private Iterator<GenTable> joinGenTables() {
- return new FilteringIterator<GenTable, GenTable>(this.genTables()) {
- @Override
- protected boolean accept(GenTable genTable) {
- return genTable.isJoinTable();
- }
- };
- }
-
- /**
- * build a set of the gen tables that are referenced by other gen tables
- * in the scope
- */
- private HashSet<GenTable> buildReferencedGenTables() {
- HashSet<GenTable> referencedGenTables = new HashSet<GenTable>(this.genTablesSize());
- for (Iterator<GenTable> stream = this.genTables(); stream.hasNext(); ) {
- stream.next().addReferencedGenTablesTo(referencedGenTables);
- }
- return referencedGenTables;
- }
-
- private void checkCanceled(IProgressMonitor progressMonitor) {
- if (progressMonitor.isCanceled()) {
- throw new OperationCanceledException();
- }
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.genTables);
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenTable.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenTable.java
deleted file mode 100644
index 7c563447a9..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/GenTable.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import org.eclipse.jpt.db.Column;
-import org.eclipse.jpt.db.ForeignKey;
-import org.eclipse.jpt.db.Table;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.NameTools;
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
-
-/**
- * associate a table with the various relations that will be used when
- * generating the entity corresponding to the table
- */
-class GenTable {
- private final GenScope scope;
- private final Table table;
-
- // these relations cannot be built until after we have built all the scope's tables
- private ManyToManyRelation joinTableRelation;
- private final ArrayList<ManyToManyRelation> ownedManyToManyRelations = new ArrayList<ManyToManyRelation>();
- private final ArrayList<ManyToManyRelation> nonOwnedManyToManyRelations = new ArrayList<ManyToManyRelation>();
- private final ArrayList<ManyToOneRelation> manyToOneRelations = new ArrayList<ManyToOneRelation>();
- private final ArrayList<OneToManyRelation> oneToManyRelations = new ArrayList<OneToManyRelation>();
- private final HashSet<Column> foreignKeyColumns = new HashSet<Column>();
-
- // key=column/relation; value=entity attribute (field/property) name
- private final HashMap<Object, String> attributeNames = new HashMap<Object, String>();
- // key to 'attributeNames' for the optional embedded ID attribute name
- private static final Object EMBEDDED_ID_VIRTUAL_COLUMN = new Object();
-
-
- // ********** construction/initialization **********
-
- GenTable(GenScope scope, Table table) {
- super();
- this.scope = scope;
- this.table = table;
- }
-
-
- // ********** package API **********
-
- EntityGenerator.Config getEntityConfig() {
- return this.scope.getEntityConfig();
- }
-
- /**
- * examples:
- * GenTable(FOO) => "FOO_COLLECTION"
- * GenTable(foo) => "fooCollection"
- * GenTable(Foo) => "FooCollection"
- */
- String getCollectionAttributeName() {
- String name = this.getName();
- String suffix = this.getEntityConfig().getCollectionAttributeNameSuffix();
- if (StringTools.stringIsUppercase(name)) { // hmmm ~bjv
- suffix = '_' + suffix.toUpperCase();
- }
- return name + suffix;
- }
-
- /**
- * determine whether the table is a "join" table within the table's scope;
- * this can be removed, later, if we find another table references the,
- * seemingly, join table
- * @see #clearJoinTableRelation() (and callers)
- */
- void buildJoinTableRelation() {
- if ( ! this.table.isPossibleJoinTable()) {
- return; // the table must have exactly 2 foreign keys
- }
- ForeignKey owningFK = this.table.getJoinTableOwningForeignKey();
- GenTable owningGenTable = this.scope.getGenTable(owningFK.getReferencedTable());
- if (owningGenTable == null) {
- return; // both tables must be in the scope
- }
- ForeignKey nonOwningFK = this.table.getJoinTableNonOwningForeignKey();
- GenTable nonOwningGenTable = this.scope.getGenTable(nonOwningFK.getReferencedTable());
- if (nonOwningGenTable == null) {
- return; // both tables must be in the scope
- }
- this.joinTableRelation = new ManyToManyRelation(
- this,
- owningFK,
- owningGenTable,
- nonOwningFK,
- nonOwningGenTable
- );
- }
-
- /**
- * used by the scope to figure out whether "join" tables should be
- * converted to "entity" tables
- */
- void addReferencedGenTablesTo(Set<GenTable> referencedTables) {
- for (Iterator<ForeignKey> stream = this.table.foreignKeys(); stream.hasNext(); ) {
- ForeignKey fk = stream.next();
- GenTable genTable = this.scope.getGenTable(fk.getReferencedTable());
- if (genTable != null) {
- referencedTables.add(genTable);
- }
- }
- }
-
- /**
- * the scope clears the join table relation if there are any references
- * to the join table from other tables in the scope
- */
- void clearJoinTableRelation() {
- this.joinTableRelation.clear();
- this.joinTableRelation = null;
- }
-
- /**
- * find "in-scope" foreign keys
- */
- void buildManyToOneRelations() {
- for (Iterator<ForeignKey> stream = this.table.foreignKeys(); stream.hasNext(); ) {
- ForeignKey fk = stream.next();
- GenTable referencedGenTable = this.scope.getGenTable(fk.getReferencedTable());
- if (referencedGenTable != null) {
- this.manyToOneRelations.add(new ManyToOneRelation(this, fk, referencedGenTable));
- }
- }
- }
-
- /**
- * now that all the relations are in place, we can configure the Java
- * attribute names
- */
- void buildAttributeNames() {
- if ((this.table.primaryKeyColumnsSize() > 1) && this.getEntityConfig().generateEmbeddedIdForCompoundPK()) {
- // if we are going to generate an EmbeddedId attribute, add it to
- // 'attributeNames' so we don't collide with it later, when generating
- // attribute names for the columns etc.
- this.configureAttributeName(EMBEDDED_ID_VIRTUAL_COLUMN, this.getEntityConfig().getEmbeddedIdAttributeName());
- }
-
- // gather up all the table's columns...
- Set<Column> columns = CollectionTools.set(this.table.columns(), this.table.columnsSize());
- // ...remove the columns that belong exclusively to many-to-one foreign keys...
- this.buildManyToOneAttributeNames(columns);
- // ...and use the remaining columns to generate "basic" attribute names
- this.buildBasicAttributeNames(columns);
-
- this.buildOneToManyAttributeNames();
- this.buildOwnedManyToManyAttributeNames();
- this.buildNonOwnedManyToManyAttributeNames();
- }
-
- /**
- * return the columns that are part of the table's primary key
- * but are also part of an "in-scope" foreign key
- */
- Iterator<Column> readOnlyPrimaryKeyColumns() {
- return new FilteringIterator<Column, Column>(this.table.primaryKeyColumns()) {
- @Override
- protected boolean accept(Column pkColumn) {
- return pkColumn.isPartOfForeignKey();
- }
- };
- }
-
- /**
- * return the columns that are part of the table's primary key
- * but are NOT part of any "in-scope" foreign key
- */
- Iterator<Column> writablePrimaryKeyColumns() {
- return new FilteringIterator<Column, Column>(this.table.primaryKeyColumns()) {
- @Override
- protected boolean accept(Column pkColumn) {
- return ! pkColumn.isPartOfForeignKey();
- }
- };
- }
-
- /**
- * return the columns that NEITHER part of the table's primary key
- * NOR part of any foreign key
- */
- Iterator<Column> nonPrimaryKeyBasicColumns() {
- return new FilteringIterator<Column, Column>(this.table.columns()) {
- @Override
- protected boolean accept(Column column) {
- return ! (column.isPartOfPrimaryKey() || column.isPartOfForeignKey());
- }
- };
- }
-
- Table getTable() {
- return this.table;
- }
-
- String getEntityName() {
- return this.getEntityConfig().getEntityName(this.table);
- }
-
- boolean isJoinTable() {
- return this.joinTableRelation != null;
- }
-
- void addOwnedManyToManyRelation(ManyToManyRelation relation) {
- this.ownedManyToManyRelations.add(relation);
- }
-
- void removeOwnedManyToManyRelation(ManyToManyRelation relation) {
- this.ownedManyToManyRelations.remove(relation);
- }
-
- void addNonOwnedManyToManyRelation(ManyToManyRelation relation) {
- this.nonOwnedManyToManyRelations.add(relation);
- }
-
- void removeNonOwnedManyToManyRelation(ManyToManyRelation relation) {
- this.nonOwnedManyToManyRelations.remove(relation);
- }
-
- void addOneToManyRelation(OneToManyRelation relation) {
- this.oneToManyRelations.add(relation);
- }
-
- Iterator<ManyToOneRelation> manyToOneRelations() {
- return this.manyToOneRelations.iterator();
- }
-
- Iterator<OneToManyRelation> oneToManyRelations() {
- return this.oneToManyRelations.iterator();
- }
-
- Iterator<ManyToManyRelation> ownedManyToManyRelations() {
- return this.ownedManyToManyRelations.iterator();
- }
-
- Iterator<ManyToManyRelation> nonOwnedManyToManyRelations() {
- return this.nonOwnedManyToManyRelations.iterator();
- }
-
- /**
- * the key can be a column or relation or #EMBEDDED_ID_VIRTUAL_COLUMN
- */
- private String getAttributeNameFor_(Object o) {
- return this.attributeNames.get(o);
- }
-
- /**
- * this will return null if we don't want an embedded id attribute
- */
- String getAttributeNameForEmbeddedId() {
- return this.getAttributeNameFor_(EMBEDDED_ID_VIRTUAL_COLUMN);
- }
-
- String getAttributeNameFor(Column column) {
- return this.getAttributeNameFor_(column);
- }
-
- String getAttributeNameFor(ManyToOneRelation relation) {
- return this.getAttributeNameFor_(relation);
- }
-
- String getAttributeNameFor(OneToManyRelation relation) {
- return this.getAttributeNameFor_(relation);
- }
-
- String getAttributeNameFor(ManyToManyRelation relation) {
- return this.getAttributeNameFor_(relation);
- }
-
- String getName() {
- return this.table.getName();
- }
-
- boolean joinTableNameIsDefault() {
- return this.table.joinTableNameIsDefault();
- }
-
-
- // ********** internal API **********
-
- /**
- * while we are figuring out the names for the m:1 attributes, remove from the
- * specified set of columns the columns that are only part of the foreign keys
- * (leaving the remaining columns for basic attributes)
- */
- private void buildManyToOneAttributeNames(Set<Column> columns) {
- for (ManyToOneRelation relation : this.manyToOneRelations) {
- CollectionTools.removeAll(columns, relation.getForeignKey().nonPrimaryKeyBaseColumns());
- CollectionTools.addAll(this.foreignKeyColumns, relation.getForeignKey().baseColumns());
- relation.setMappedBy(this.configureAttributeName(relation, relation.getAttributeName()));
- }
- }
-
- /**
- * build a unique attribute name for the specified "basic" columns,
- * checking for name collisions
- */
- private void buildBasicAttributeNames(Set<Column> columns) {
- for (Column column : columns) {
- this.configureAttributeName(column, column.getName());
- }
- }
-
- private void buildOneToManyAttributeNames() {
- for (OneToManyRelation relation : this.oneToManyRelations) {
- this.configureAttributeName(relation, relation.getAttributeName());
- }
- }
-
- private void buildOwnedManyToManyAttributeNames() {
- for (ManyToManyRelation relation : this.ownedManyToManyRelations) {
- relation.setMappedBy(this.configureAttributeName(relation, relation.getOwnedAttributeName()));
- }
- }
-
- private void buildNonOwnedManyToManyAttributeNames() {
- for (ManyToManyRelation relation : this.nonOwnedManyToManyRelations) {
- this.configureAttributeName(relation, relation.getNonOwnedAttributeName());
- }
- }
-
- /**
- * Convert the specified attribute name to something unique for the entity,
- * converting it to something Java-like if the config flag is set.
- * Store the calculated name so we can get it back later, when we
- * are generating source.
- */
- private String configureAttributeName(Object o, String attributeName) {
- String result = attributeName;
- Collection<String> existingAttributeNames = this.attributeNames.values();
- if (this.getEntityConfig().convertToJavaStyleIdentifiers()) {
- result = EntityGenTools.convertToUniqueJavaStyleAttributeName(result, existingAttributeNames);
- } else {
- // first, convert the attribute name to a legal Java identifier
- result = NameTools.convertToJavaIdentifier(result);
- // then make sure it's unique
- result = NameTools.uniqueNameForIgnoreCase(attributeName, existingAttributeNames);
- }
- this.attributeNames.put(o, result);
- return result;
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.table);
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JPA.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JPA.java
deleted file mode 100644
index 7f601e4253..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JPA.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-
-/**
- * JPA Java-related stuff (annotations etc.)
- *
- * Provisional API: This interface is part of an interim API that is still
- * under development and expected to change significantly before reaching
- * stability. It is available at this early stage to solicit feedback from
- * pioneering adopters on the understanding that any code that uses this API
- * will almost certainly be broken (repeatedly) as the API evolves.
- */
-// TODO move to utility?
-@SuppressWarnings("nls")
-public interface JPA {
-
- // JPA package
- String PACKAGE = "javax.persistence";
- String PACKAGE_ = PACKAGE + '.';
-
-
- // ********** API **********
-
- // JPA annotations
- String ASSOCIATION_OVERRIDE = PACKAGE_ + "AssociationOverride";
- String ASSOCIATION_OVERRIDE__NAME = "name";
- String ASSOCIATION_OVERRIDE__JOIN_COLUMNS = "joinColumns";
- String ASSOCIATION_OVERRIDES = PACKAGE_ + "AssociationOverrides";
- String ASSOCIATION_OVERRIDES__VALUE = "value";
- String ATTRIBUTE_OVERRIDE = PACKAGE_ + "AttributeOverride";
- String ATTRIBUTE_OVERRIDE__NAME = "name";
- String ATTRIBUTE_OVERRIDE__COLUMN = "column";
- String ATTRIBUTE_OVERRIDES = PACKAGE_ + "AttributeOverrides";
- String ATTRIBUTE_OVERRIDES__VALUE = "value";
- String BASIC = PACKAGE_ + "Basic";
- String BASIC__FETCH = "fetch";
- String BASIC__OPTIONAL = "optional";
- String COLUMN = PACKAGE_ + "Column";
- String COLUMN__NAME = "name";
- String COLUMN__UNIQUE = "unique";
- String COLUMN__NULLABLE = "nullable";
- String COLUMN__INSERTABLE = "insertable";
- String COLUMN__UPDATABLE = "updatable";
- String COLUMN__COLUMN_DEFINITION = "columnDefinition";
- String COLUMN__TABLE = "table";
- String COLUMN__LENGTH = "length";
- String COLUMN__PRECISION = "precision";
- String COLUMN__SCALE = "scale";
- String COLUMN_RESULT = PACKAGE_ + "ColumnResult";
- String COLUMN_RESULT__NAME = "name";
- String DISCRIMINATOR_COLUMN = PACKAGE_ + "DiscriminatorColumn";
- String DISCRIMINATOR_COLUMN__NAME = "name";
- String DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = "discriminatorType";
- String DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = "columnDefinition";
- String DISCRIMINATOR_COLUMN__LENGTH = "length";
- String DISCRIMINATOR_VALUE = PACKAGE_ + "DiscriminatorValue";
- String DISCRIMINATOR_VALUE__VALUE = "value";
- String EMBEDDABLE = PACKAGE_ + "Embeddable";
- String EMBEDDED = PACKAGE_ + "Embedded";
- String EMBEDDED_ID = PACKAGE_ + "EmbeddedId";
- String ENTITY = PACKAGE_ + "Entity";
- String ENTITY__NAME = "name";
- String ENTITY_LISTENERS = PACKAGE_ + "EntityListeners";
- String ENTITY_LISTENERS__VALUE = "value";
- String ENTITY_RESULT = PACKAGE_ + "EntityResult";
- String ENTITY_RESULT__ENTITY_CLASS = "entityClass";
- String ENTITY_RESULT__FIELDS = "fields";
- String ENTITY_RESULT__DISCRIMINATOR_COLUMN = "discriminatorColumn";
- String ENUMERATED = PACKAGE_ + "Enumerated";
- String ENUMERATED__VALUE = "value";
- String EXCLUDE_DEFAULT_LISTENERS = PACKAGE_ + "ExcludeDefaultListeners";
- String EXCLUDE_SUPERCLASS_LISTENERS = PACKAGE_ + "ExcludeSuperclassListeners";
- String FIELD_RESULT = PACKAGE_ + "FieldResult";
- String FIELD_RESULT__NAME = "name";
- String FIELD_RESULT__COLUMN = "column";
- String FLUSH_MODE = PACKAGE_ + "FlushMode";
- String FLUSH_MODE__VALUE = "value";
- String GENERATED_VALUE = PACKAGE_ + "GeneratedValue";
- String GENERATED_VALUE__STRATEGY = "strategy";
- String GENERATED_VALUE__GENERATOR = "generator";
- String ID = PACKAGE_ + "Id";
- String ID_CLASS = PACKAGE_ + "IdClass";
- String ID_CLASS__VALUE = "value";
- String INHERITANCE = PACKAGE_ + "Inheritance";
- String INHERITANCE__STRATEGY = "strategy";
- String JOIN_COLUMN = PACKAGE_ + "JoinColumn";
- String JOIN_COLUMN__NAME = "name";
- String JOIN_COLUMN__REFERENCED_COLUMN_NAME = "referencedColumnName";
- String JOIN_COLUMN__UNIQUE = "unique";
- String JOIN_COLUMN__NULLABLE = "nullable";
- String JOIN_COLUMN__INSERTABLE = "insertable";
- String JOIN_COLUMN__UPDATABLE = "updatable";
- String JOIN_COLUMN__COLUMN_DEFINITION = "columnDefinition";
- String JOIN_COLUMN__TABLE = "table";
- String JOIN_COLUMNS = PACKAGE_ + "JoinColumns";
- String JOIN_COLUMNS__VALUE = "value";
- String JOIN_TABLE = PACKAGE_ + "JoinTable";
- String JOIN_TABLE__NAME = "name";
- String JOIN_TABLE__CATALOG = "catalog";
- String JOIN_TABLE__SCHEMA = "schema";
- String JOIN_TABLE__JOIN_COLUMNS = "joinColumns";
- String JOIN_TABLE__INVERSE_JOIN_COLUMNS = "inverseJoinColumns";
- String JOIN_TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
- String LOB = PACKAGE_ + "Lob";
- String MANY_TO_MANY = PACKAGE_ + "ManyToMany";
- String MANY_TO_MANY__TARGET_ENTITY = "targetEntity";
- String MANY_TO_MANY__CASCADE = "cascade";
- String MANY_TO_MANY__FETCH = "fetch";
- String MANY_TO_MANY__MAPPED_BY = "mappedBy";
- String MANY_TO_ONE = PACKAGE_ + "ManyToOne";
- String MANY_TO_ONE__TARGET_ENTITY = "targetEntity";
- String MANY_TO_ONE__CASCADE = "cascade";
- String MANY_TO_ONE__FETCH = "fetch";
- String MANY_TO_ONE__OPTIONAL = "optional";
- String MAP_KEY = PACKAGE_ + "MapKey";
- String MAP_KEY__NAME = "name";
- String MAPPED_SUPERCLASS = PACKAGE_ + "MappedSuperclass";
- String NAMED_NATIVE_QUERIES = PACKAGE_ + "NamedNativeQueries";
- String NAMED_NATIVE_QUERIES__VALUE = "value";
- String NAMED_NATIVE_QUERY = PACKAGE_ + "NamedNativeQuery";
- String NAMED_NATIVE_QUERY__NAME = "name";
- String NAMED_NATIVE_QUERY__QUERY = "query";
- String NAMED_NATIVE_QUERY__HINTS = "hints";
- String NAMED_NATIVE_QUERY__RESULT_CLASS = "resultClass";
- String NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = "resultSetMapping";
- String NAMED_QUERIES = PACKAGE_ + "NamedQueries";
- String NAMED_QUERIES__VALUE = "value";
- String NAMED_QUERY = PACKAGE_ + "NamedQuery";
- String NAMED_QUERY__NAME = "name";
- String NAMED_QUERY__QUERY = "query";
- String NAMED_QUERY__HINTS = "hints";
- String ONE_TO_MANY = PACKAGE_ + "OneToMany";
- String ONE_TO_MANY__TARGET_ENTITY = "targetEntity";
- String ONE_TO_MANY__CASCADE = "cascade";
- String ONE_TO_MANY__FETCH = "fetch";
- String ONE_TO_MANY__MAPPED_BY = "mappedBy";
- String ONE_TO_ONE = PACKAGE_ + "OneToOne";
- String ONE_TO_ONE__TARGET_ENTITY = "targetEntity";
- String ONE_TO_ONE__CASCADE = "cascade";
- String ONE_TO_ONE__FETCH = "fetch";
- String ONE_TO_ONE__OPTIONAL = "optional";
- String ONE_TO_ONE__MAPPED_BY = "mappedBy";
- String ORDER_BY = PACKAGE_ + "OrderBy";
- String ORDER_BY__VALUE = "value";
- String PERSISTENCE_CONTEXT = PACKAGE_ + "PersistenceContext";
- String PERSISTENCE_CONTEXT__NAME = "name";
- String PERSISTENCE_CONTEXT__UNIT_NAME = "unitName";
- String PERSISTENCE_CONTEXT__TYPE = "type";
- String PERSISTENCE_CONTEXTS = PACKAGE_ + "PersistenceContexts";
- String PERSISTENCE_CONTEXTS__VALUE = "value";
- String PERSISTENCE_UNIT = PACKAGE_ + "XmlPersistenceUnit";
- String PERSISTENCE_UNIT__NAME = "name";
- String PERSISTENCE_UNIT__UNIT_NAME = "unitName";
- String PERSISTENCE_UNITS = PACKAGE_ + "PersistenceUnits";
- String PERSISTENCE_UNITS__VALUE = "value";
- String POST_LOAD = PACKAGE_ + "PostLoad";
- String POST_PERSIST = PACKAGE_ + "PostPersist";
- String POST_REMOVE = PACKAGE_ + "PostRemove";
- String POST_UPDATE = PACKAGE_ + "PostUpdate";
- String PRE_PERSIST = PACKAGE_ + "PrePersist";
- String PRE_REMOVE = PACKAGE_ + "PreRemove";
- String PRE_UPDATE = PACKAGE_ + "PreUpdate";
- String PRIMARY_KEY_JOIN_COLUMN = PACKAGE_ + "PrimaryKeyJoinColumn";
- String PRIMARY_KEY_JOIN_COLUMN__NAME = "name";
- String PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = "referencedColumnName";
- String PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = "columnDefinition";
- String PRIMARY_KEY_JOIN_COLUMNS = PACKAGE_ + "PrimaryKeyJoinColumns";
- String PRIMARY_KEY_JOIN_COLUMNS__VALUE = "value";
- String QUERY_HINT = PACKAGE_ + "QueryHint";
- String QUERY_HINT__NAME = "name";
- String QUERY_HINT__VALUE = "value";
- String SECONDARY_TABLE = PACKAGE_ + "SecondaryTable";
- String SECONDARY_TABLE__NAME = "name";
- String SECONDARY_TABLE__CATALOG = "catalog";
- String SECONDARY_TABLE__SCHEMA = "schema";
- String SECONDARY_TABLE__PK_JOIN_COLUMNS = "pkJoinColumns";
- String SECONDARY_TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
- String SECONDARY_TABLES = PACKAGE_ + "SecondaryTables";
- String SECONDARY_TABLES__VALUE = "value";
- String SEQUENCE_GENERATOR = PACKAGE_ + "SequenceGenerator";
- String SEQUENCE_GENERATOR__NAME = "name";
- String SEQUENCE_GENERATOR__SEQUENCE_NAME = "sequenceName";
- String SEQUENCE_GENERATOR__INITIAL_VALUE = "initialValue";
- String SEQUENCE_GENERATOR__ALLOCATION_SIZE = "allocationSize";
- String SQL_RESULT_SET_MAPPING = PACKAGE_ + "SqlResultSetMapping";
- String SQL_RESULT_SET_MAPPING__NAME = "name";
- String SQL_RESULT_SET_MAPPING__ENTITIES = "entities";
- String SQL_RESULT_SET_MAPPING__COLUMNS = "columns";
- String TABLE = PACKAGE_ + "Table";
- String TABLE__NAME = "name";
- String TABLE__CATALOG = "catalog";
- String TABLE__SCHEMA = "schema";
- String TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
- String TABLE_GENERATOR = PACKAGE_ + "TableGenerator";
- String TABLE_GENERATOR__NAME = "name";
- String TABLE_GENERATOR__TABLE = "table";
- String TABLE_GENERATOR__CATALOG = "catalog";
- String TABLE_GENERATOR__SCHEMA = "schema";
- String TABLE_GENERATOR__PK_COLUMN_NAME = "pkColumnName";
- String TABLE_GENERATOR__VALUE_COLUMN_NAME = "valueColumnName";
- String TABLE_GENERATOR__PK_COLUMN_VALUE = "pkColumnValue";
- String TABLE_GENERATOR__INITIAL_VALUE = "initialValue";
- String TABLE_GENERATOR__ALLOCATION_SIZE = "allocationSize";
- String TABLE_GENERATOR__UNIQUE_CONSTRAINTS = "uniqueConstraints";
- String TEMPORAL = PACKAGE_ + "Temporal";
- String TEMPORAL__VALUE = "value";
- String TRANSIENT = PACKAGE_ + "Transient";
- String UNIQUE_CONSTRAINT = PACKAGE_ + "UniqueConstraint";
- String UNIQUE_CONSTRAINT__COLUMN_NAMES = "columnNames";
- String VERSION = PACKAGE_ + "Version";
-
- // JPA enums
- String GENERATION_TYPE = PACKAGE_ + "GenerationType";
- String GENERATION_TYPE_ = GENERATION_TYPE + '.';
- String GENERATION_TYPE__AUTO = GENERATION_TYPE_ + "AUTO";
- String GENERATION_TYPE__IDENTITY = GENERATION_TYPE_ + "IDENTITY";
- String GENERATION_TYPE__SEQUENCE = GENERATION_TYPE_ + "SEQUENCE";
- String GENERATION_TYPE__TABLE = GENERATION_TYPE_ + "TABLE";
-
- String CASCADE_TYPE = PACKAGE_ + "CascadeType";
- String CASCADE_TYPE_ = CASCADE_TYPE + '.';
- String CASCADE_TYPE__ALL = CASCADE_TYPE_ + "ALL";
- String CASCADE_TYPE__MERGE = CASCADE_TYPE_ + "MERGE";
- String CASCADE_TYPE__PERSIST = CASCADE_TYPE_ + "PERSIST";
- String CASCADE_TYPE__REFRESH = CASCADE_TYPE_ + "REFRESH";
- String CASCADE_TYPE__REMOVE = CASCADE_TYPE_ + "REMOVE";
-
- String DISCRIMINATOR_TYPE = PACKAGE_ + "DiscriminatorType";
- String DISCRIMINATOR_TYPE_ = DISCRIMINATOR_TYPE + '.';
- String DISCRIMINATOR_TYPE__CHAR = DISCRIMINATOR_TYPE_ + "CHAR";
- String DISCRIMINATOR_TYPE__INTEGER = DISCRIMINATOR_TYPE_ + "INTEGER";
- String DISCRIMINATOR_TYPE__STRING = DISCRIMINATOR_TYPE_ + "STRING";
-
- String ENUM_TYPE = PACKAGE_ + "EnumType";
- String ENUM_TYPE_ = ENUM_TYPE + '.';
- String ENUM_TYPE__ORDINAL = ENUM_TYPE_ + "ORDINAL";
- String ENUM_TYPE__STRING = ENUM_TYPE_ + "STRING";
-
- String FETCH_TYPE = PACKAGE_ + "FetchType";
- String FETCH_TYPE_ = FETCH_TYPE + '.';
- String FETCH_TYPE__EAGER = FETCH_TYPE_ + "EAGER";
- String FETCH_TYPE__LAZY = FETCH_TYPE_ + "LAZY";
-
- String FLUSH_MODE_TYPE = PACKAGE_ + "FlushModeType";
- String FLUSH_MODE_TYPE_ = FLUSH_MODE_TYPE + '.';
- String FLUSH_MODE_TYPE__AUTO = FLUSH_MODE_TYPE_ + "AUTO";
- String FLUSH_MODE_TYPE__COMMIT = FLUSH_MODE_TYPE_ + "COMMIT";
-
- String INHERITANCE_TYPE = PACKAGE_ + "InheritanceType";
- String INHERITANCE_TYPE_ = INHERITANCE_TYPE + '.';
- String INHERITANCE_TYPE__JOINED = INHERITANCE_TYPE_ + "JOINED";
- String INHERITANCE_TYPE__SINGLE_TABLE = INHERITANCE_TYPE_ + "SINGLE_TABLE";
- String INHERITANCE_TYPE__TABLE_PER_CLASS = INHERITANCE_TYPE_ + "TABLE_PER_CLASS";
-
- String PERSISTENCE_CONTEXT_TYPE = PACKAGE_ + "PersistenceContextType";
- String PERSISTENCE_CONTEXT_TYPE_ = PERSISTENCE_CONTEXT_TYPE + '.';
- String PERSISTENCE_CONTEXT_TYPE__EXTENDED = PERSISTENCE_CONTEXT_TYPE_ + "EXTENDED";
- String PERSISTENCE_CONTEXT_TYPE__TRANSACTION = PERSISTENCE_CONTEXT_TYPE_ + "TRANSACTION";
-
- String TEMPORAL_TYPE = PACKAGE_ + "TemporalType";
- String TEMPORAL_TYPE_ = TEMPORAL_TYPE + '.';
- String TEMPORAL_TYPE__DATE = TEMPORAL_TYPE_ + "DATE";
- String TEMPORAL_TYPE__TIME = TEMPORAL_TYPE_ + "TIME";
- String TEMPORAL_TYPE__TIMESTAMP = TEMPORAL_TYPE_ + "TIMESTAMP";
-
- // JPA interfaces
- String ENTITY_MANAGER = PACKAGE_ + "EntityManager";
- String ENTITY_MANAGER_FACTORY = PACKAGE_ + "EntityManagerFactory";
- String ENTITY_TRANSACTION = PACKAGE_ + "EntityTransaction";
- String INSTRUMENTABLE_CLASS_LOADER = PACKAGE_ + "InstrumentableClassLoader";
- String QUERY = PACKAGE_ + "Query";
-
- // JPA classes
- String PERSISTENCE = PACKAGE_ + "XmlPersistence";
-
- // JPA exceptions
- String NON_UNIQUE_RESULT_EXCEPTION = PACKAGE_ + "NonUniqueResultException";
- String OBJECT_NOT_FOUND_EXCEPTION = PACKAGE_ + "ObjectNotFoundException";
- String PERSISTENCE_EXCEPTION = PACKAGE_ + "PersistenceException";
-
-
- // ********** SPI **********
-
- // JPA SPI package
- String SPI_PACKAGE = PACKAGE_ + "spi";
- String SPI_PACKAGE_ = SPI_PACKAGE + '.';
-
- // JPA SPI interfaces
- String ENTITY_MANAGER_FACTORY_PROVIDER = SPI_PACKAGE_ + "EntityManagerFactoryProvider";
- String PERSISTENCE_INFO = SPI_PACKAGE_ + "PersistenceInfo";
- String PERSISTENCE_PROVIDER = SPI_PACKAGE_ + "PersistenceProvider";
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JptGenMessages.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JptGenMessages.java
deleted file mode 100644
index bc3bbf0d38..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/JptGenMessages.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Localized messages used by Dali entity generation.
- */
-class JptGenMessages {
-
- public static String PackageGenerator_taskName;
- public static String GenScope_taskName;
- public static String EntityGenerator_taskName;
-
- private static final String BUNDLE_NAME = "jpt_gen"; //$NON-NLS-1$
- private static final Class<?> BUNDLE_CLASS = JptGenMessages.class;
- static {
- NLS.initializeMessages(BUNDLE_NAME, BUNDLE_CLASS);
- }
-
- private JptGenMessages() {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToManyRelation.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToManyRelation.java
deleted file mode 100644
index 12631a5bf0..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToManyRelation.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import org.eclipse.jpt.db.ForeignKey;
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This object is shared by the two gen tables that make up the relation.
- * Upon construction, 'mappedBy' will be 'null'. The first gen table to be
- * used to generate an entity will fill in 'mappedBy' with the appropriate
- * attribute (field/property) name.
- */
-class ManyToManyRelation {
- private final GenTable joinGenTable;
- private final ForeignKey owningForeignKey;
- private final GenTable owningGenTable;
- private final ForeignKey nonOwningForeignKey;
- private final GenTable nonOwningGenTable;
- private String mappedBy; // set while generating entities
-
-
- ManyToManyRelation(
- GenTable joinGenTable,
- ForeignKey owningForeignKey,
- GenTable owningGenTable,
- ForeignKey nonOwningForeignKey,
- GenTable nonOwningGenTable
- ) {
- super();
- this.joinGenTable = joinGenTable;
-
- this.owningForeignKey = owningForeignKey;
- this.owningGenTable = owningGenTable;
- owningGenTable.addOwnedManyToManyRelation(this);
-
- this.nonOwningForeignKey = nonOwningForeignKey;
- this.nonOwningGenTable = nonOwningGenTable;
- nonOwningGenTable.addNonOwnedManyToManyRelation(this);
- }
-
- GenTable getJoinGenTable() {
- return this.joinGenTable;
- }
-
- ForeignKey getOwningForeignKey() {
- return this.owningForeignKey;
- }
-
- GenTable getOwningGenTable() {
- return this.owningGenTable;
- }
-
- ForeignKey getNonOwningForeignKey() {
- return this.nonOwningForeignKey;
- }
-
- GenTable getNonOwningGenTable() {
- return this.nonOwningGenTable;
- }
-
- String getOwnedAttributeName() {
- return this.nonOwningGenTable.getCollectionAttributeName();
- }
-
- String getNonOwnedAttributeName() {
- return this.owningGenTable.getCollectionAttributeName();
- }
-
- /**
- * the scope clears the join table relation if there are any references
- * to the join table
- */
- void clear() {
- this.owningGenTable.removeOwnedManyToManyRelation(this);
- this.nonOwningGenTable.removeNonOwnedManyToManyRelation(this);
- }
-
- String getMappedBy() {
- return this.mappedBy;
- }
-
- void setMappedBy(String mappedBy) {
- this.mappedBy = mappedBy;
- }
-
- String getOwningEntityName() {
- return this.owningGenTable.getEntityName();
- }
-
- String getNonOwningEntityName() {
- return this.nonOwningGenTable.getEntityName();
- }
-
- boolean joinTableNameIsDefault() {
- return this.joinGenTable.joinTableNameIsDefault();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.joinGenTable);
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToOneRelation.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToOneRelation.java
deleted file mode 100644
index b69e402a06..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/ManyToOneRelation.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import org.eclipse.jpt.db.ForeignKey;
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This object is held by the "base" gen table and, indirectly via a
- * one-to-many relation, the "referenced" gen table.
- * The "mapped by" attribute (field/property) name is set while the
- * "base" table is calculating its attribute names.
- */
-class ManyToOneRelation {
- private final GenTable baseGenTable; // the "many" side (e.g. Detail)
- private final ForeignKey foreignKey;
- private final GenTable referencedGenTable; // the "one" side (e.g. Master)
- private String mappedBy; // set while generating entities; used by partner one-to-many relation
-
-
- ManyToOneRelation(
- GenTable baseGenTable,
- ForeignKey foreignKey,
- GenTable referencedGenTable
- ) {
- super();
- this.baseGenTable = baseGenTable;
- this.foreignKey = foreignKey;
- this.referencedGenTable = referencedGenTable;
- referencedGenTable.addOneToManyRelation(new OneToManyRelation(this));
- }
-
- GenTable getBaseGenTable() {
- return this.baseGenTable;
- }
-
- ForeignKey getForeignKey() {
- return this.foreignKey;
- }
-
- GenTable getReferencedGenTable() {
- return this.referencedGenTable;
- }
-
- String getAttributeName() {
- return this.foreignKey.getAttributeName();
- }
-
- String getMappedBy() {
- return this.mappedBy;
- }
-
- void setMappedBy(String mappedBy) {
- this.mappedBy = mappedBy;
- }
-
- String getBaseEntityName() {
- return this.baseGenTable.getEntityName();
- }
-
- String getReferencedEntityName() {
- return this.referencedGenTable.getEntityName();
- }
-
- String getBaseGenTableCollectionAttributeName() {
- return this.baseGenTable.getCollectionAttributeName();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.foreignKey);
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/OneToManyRelation.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/OneToManyRelation.java
deleted file mode 100644
index 8d832ccd1c..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/OneToManyRelation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This object is the inverse of the corresponding many-to-one relation.
- */
-class OneToManyRelation {
- private final ManyToOneRelation manyToOneRelation;
-
-
- OneToManyRelation(ManyToOneRelation manyToOneRelation) {
- super();
- this.manyToOneRelation = manyToOneRelation;
- }
-
- ManyToOneRelation getManyToOneRelation() {
- return this.manyToOneRelation;
- }
-
- String getAttributeName() {
- return this.manyToOneRelation.getBaseGenTableCollectionAttributeName();
- }
-
- String getMappedBy() {
- return this.manyToOneRelation.getMappedBy();
- }
-
- String getReferencedEntityName() {
- return this.manyToOneRelation.getBaseEntityName();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.manyToOneRelation);
- }
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/PackageGenerator.java b/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/PackageGenerator.java
deleted file mode 100644
index 0aa0b5ed7e..0000000000
--- a/jpa/plugins/org.eclipse.jpt.gen/src/org/eclipse/jpt/gen/internal/PackageGenerator.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.gen.internal;
-
-import java.util.Iterator;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.jdt.core.IPackageFragment;
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This generator will generate a package of entities for a set of tables.
- */
-public class PackageGenerator {
- private final Config config;
- private final EntityGenerator.Config entityConfig;
- private final GenScope scope;
-
-
- // ********** public API **********
-
- public static void generateEntities(
- Config config,
- EntityGenerator.Config entityConfig,
- IProgressMonitor progressMonitor
- ) {
- if ((config == null) || (entityConfig == null)) {
- throw new NullPointerException();
- }
- SubMonitor sm = SubMonitor.convert(progressMonitor, JptGenMessages.PackageGenerator_taskName, 100);
- new PackageGenerator(config, entityConfig, sm.newChild(10)).generateEntities(sm.newChild(90));
- }
-
-
- // ********** construction/initialization **********
-
- private PackageGenerator(
- Config config,
- EntityGenerator.Config entityConfig,
- IProgressMonitor progressMonitor
- ) {
- super();
- this.config = config;
- this.entityConfig = entityConfig;
- this.scope = new GenScope(entityConfig, progressMonitor);
- }
-
-
- // ********** generation **********
-
- private void generateEntities(IProgressMonitor progressMonitor) {
- SubMonitor sm = SubMonitor.convert(progressMonitor, this.scope.entityTablesSize());
- for (Iterator<GenTable> stream = this.scope.entityGenTables(); stream.hasNext(); ) {
- this.checkCanceled(sm);
- this.generateEntity(stream.next(), sm.newChild(1));
- }
- }
-
- private void generateEntity(GenTable genTable, IProgressMonitor progressMonitor) {
- EntityGenerator.generateEntity(
- this.entityConfig,
- this.config.getPackageFragment(),
- genTable,
- progressMonitor
- );
- }
-
- private void checkCanceled(IProgressMonitor progressMonitor) {
- if (progressMonitor.isCanceled()) {
- throw new OperationCanceledException();
- }
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.scope);
- }
-
-
- // ********** config **********
-
- public static class Config {
- private IPackageFragment packageFragment;
-
- public IPackageFragment getPackageFragment() {
- return this.packageFragment;
- }
-
- public void setPackageFragment(IPackageFragment packageFragment) {
- this.packageFragment = packageFragment;
- }
-
- }
-
-}

Back to the top