diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java index cd10f5d91e..cc6c8ba9f4 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/AddGeneratorStateObject.java @@ -9,7 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.details.orm; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jpt.core.context.Generator; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.utility.internal.StringTools; import org.eclipse.jpt.utility.internal.node.AbstractNode; import org.eclipse.jpt.utility.internal.node.Node; @@ -42,6 +47,11 @@ final class AddGeneratorStateObject extends AbstractNode private Validator validator; /** + * The associated persistence unit + */ + private PersistenceUnit pUnit; + + /** * Notifies a change in the data value property. */ static final String NAME_PROPERTY = "nameProperty"; //$NON-NLS-1$ @@ -59,19 +69,23 @@ final class AddGeneratorStateObject extends AbstractNode * @param names The collection of names that can't be used or an empty * collection if none are available */ - AddGeneratorStateObject() { + AddGeneratorStateObject(PersistenceUnit pUnit) { super(null); + this.pUnit = pUnit; } private void addNameProblemsTo(List<Problem> currentProblems) { if (StringTools.stringIsEmpty(this.name)) { - currentProblems.add(buildProblem(JptUiDetailsOrmMessages.GeneratorStateObject_nameMustBeSpecified)); - } + currentProblems.add(buildProblem(JptUiDetailsOrmMessages.GeneratorStateObject_nameMustBeSpecified, IMessageProvider.ERROR)); + } + else if (names().contains(this.name)){ + currentProblems.add(buildProblem(JptUiDetailsOrmMessages.GeneratorStateObject_nameExists, IMessageProvider.WARNING)); + } } private void addGeneratorTypeProblemsTo(List<Problem> currentProblems) { if (StringTools.stringIsEmpty(this.generatorType)) { - currentProblems.add(buildProblem(JptUiDetailsOrmMessages.GeneratorStateObject_typeMustBeSpecified)); + currentProblems.add(buildProblem(JptUiDetailsOrmMessages.GeneratorStateObject_typeMustBeSpecified, IMessageProvider.ERROR)); } } @@ -81,6 +95,15 @@ final class AddGeneratorStateObject extends AbstractNode addNameProblemsTo(currentProblems); addGeneratorTypeProblemsTo(currentProblems); } + + private List<String> names() { + List<String> names = new ArrayList<String>(); + for (Iterator<Generator> generators = this.pUnit.generators(); generators.hasNext();){ + String name = generators.next().getName(); + names.add(name); + } + return names; + } @Override protected void checkParent(Node parentNode) { |