Author: dgeraskov
Date: 2009-07-30 09:09:13 -0400 (Thu, 30 Jul 2009)
New Revision: 16896
Removed:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/NullDiscriminatorFormulaAnnotation.java
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/HibernateEntity.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaDiscriminatorFormulaImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/DiscriminatorFormulaAnnotationImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateDiscriminatorColumnComposite.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4665
Remove annotation when value is empty.
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/HibernateEntity.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/HibernateEntity.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/HibernateEntity.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -21,6 +21,12 @@
public interface HibernateEntity extends Entity,
GenericGeneratorHolder, HibernateQueryContainer {
+ String DISCRIMINATOR_FORMULA_PROPERTY = "discriminatorFormula"; //$NON-NLS-1$
+
DiscriminatorFormula getDiscriminatorFormula();
+
+ DiscriminatorFormula addDiscriminatorFormula();
+
+ void removeDiscriminatorFormula();
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntity.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -21,4 +21,7 @@
JavaDiscriminatorFormula getDiscriminatorFormula();
+ JavaDiscriminatorFormula addDiscriminatorFormula();
+
+
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -56,7 +56,6 @@
public HibernateJavaEntityImpl(JavaPersistentType parent) {
super(parent);
- this.discriminatorFormula = getJpaFactory().buildJavaDiscriminatorFormula(this);
this.genericGenerators = new ArrayList<JavaGenericGenerator>();
this.hibernateNamedQueries = new ArrayList<HibernateNamedQuery>();
this.hibernateNamedNativeQueries = new ArrayList<HibernateNamedNativeQuery>();
@@ -65,7 +64,7 @@
@Override
public void initialize(JavaResourcePersistentType resourcePersistentType) {
super.initialize(resourcePersistentType);
- this.discriminatorFormula.initialize(getDiscriminatorFormulaResource(resourcePersistentType));
+ this.initializeDiscriminatorFormula();
this.initializeGenericGenerators();
this.initializeHibernateNamedQueries();
this.initializeHibernateNamedNativeQueries();
@@ -108,20 +107,71 @@
super.correspondingAnnotationNames());
}
- // ********************* DiscriminatorFormula **************
-
+ // ********************* DiscriminatorFormula **************
public JavaDiscriminatorFormula getDiscriminatorFormula() {
return this.discriminatorFormula;
}
+
+ protected void setDiscriminatorFormula(JavaDiscriminatorFormula newDiscriminatorFormula)
{
+ JavaDiscriminatorFormula oldDiscriminatorFormula = this.discriminatorFormula;
+ this.discriminatorFormula = newDiscriminatorFormula;
+ firePropertyChanged(DISCRIMINATOR_FORMULA_PROPERTY, oldDiscriminatorFormula,
newDiscriminatorFormula);
+ }
+
+ public JavaDiscriminatorFormula addDiscriminatorFormula() {
+ if (getDiscriminatorFormula() != null) {
+ throw new IllegalStateException("discriminatorFormula already exists");
//$NON-NLS-1$
+ }
+ this.discriminatorFormula = getJpaFactory().buildJavaDiscriminatorFormula(this);
+ DiscriminatorFormulaAnnotation discriminatorFormulaResource =
(DiscriminatorFormulaAnnotation)
this.javaResourcePersistentType.addSupportingAnnotation(DiscriminatorFormulaAnnotation.ANNOTATION_NAME);
+ this.discriminatorFormula.initialize(discriminatorFormulaResource);
+ firePropertyChanged(DISCRIMINATOR_FORMULA_PROPERTY, null, this.discriminatorFormula);
+ return this.discriminatorFormula;
+ }
+
+ public void removeDiscriminatorFormula() {
+ if (getDiscriminatorFormula() == null) {
+ throw new IllegalStateException("discriminatorFormula does not exist, cannot be
removed"); //$NON-NLS-1$
+ }
+ JavaDiscriminatorFormula oldDiscriminatorFormula = this.discriminatorFormula;
+ this.discriminatorFormula = null;
+ this.javaResourcePersistentType.removeSupportingAnnotation(DiscriminatorFormulaAnnotation.ANNOTATION_NAME);
+ firePropertyChanged(DISCRIMINATOR_FORMULA_PROPERTY, oldDiscriminatorFormula,null);
+ }
+
+ protected void initializeDiscriminatorFormula() {
+ DiscriminatorFormulaAnnotation discriminatorFormulaResource =
getDiscriminatorFormulaResource();
+ if (discriminatorFormulaResource != null) {
+ this.discriminatorFormula = buildDiscriminatorFormula(discriminatorFormulaResource);
+ }
+ }
- private void updateDiscriminatorFormula() {
- getDiscriminatorFormula().update(getDiscriminatorFormulaResource(this.javaResourcePersistentType));
+ protected void updateDiscriminatorFormula() {
+ DiscriminatorFormulaAnnotation discriminatorFormulaResource =
getDiscriminatorFormulaResource();
+ if (discriminatorFormulaResource == null) {
+ if (getDiscriminatorFormula() != null) {
+ setDiscriminatorFormula(null);
+ }
+ }
+ else {
+ if (getDiscriminatorFormula() == null) {
+ setDiscriminatorFormula(buildDiscriminatorFormula(discriminatorFormulaResource));
+ }
+ else {
+ getDiscriminatorFormula().update(discriminatorFormulaResource);
+ }
+ }
}
- public DiscriminatorFormulaAnnotation
getDiscriminatorFormulaResource(JavaResourcePersistentType resourcePersistentType) {
- return (DiscriminatorFormulaAnnotation)
resourcePersistentType.getNonNullSupportingAnnotation(DiscriminatorFormulaAnnotation.ANNOTATION_NAME);
+ public DiscriminatorFormulaAnnotation getDiscriminatorFormulaResource() {
+ return (DiscriminatorFormulaAnnotation)
this.javaResourcePersistentType.getSupportingAnnotation(DiscriminatorFormulaAnnotation.ANNOTATION_NAME);
}
-
+
+ protected JavaDiscriminatorFormula
buildDiscriminatorFormula(DiscriminatorFormulaAnnotation discriminatorFormulaResource) {
+ JavaDiscriminatorFormula discriminatorFormula =
getJpaFactory().buildJavaDiscriminatorFormula(this);
+ discriminatorFormula.initialize(discriminatorFormulaResource);
+ return discriminatorFormula;
+ }
// ********************* GenericGenerators **************
public GenericGenerator addGenericGenerator(int index) {
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaDiscriminatorFormulaImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaDiscriminatorFormulaImpl.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaDiscriminatorFormulaImpl.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -14,6 +14,7 @@
import org.eclipse.jpt.core.context.JpaContextNode;
import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode;
import org.eclipse.jpt.core.utility.TextRange;
+import org.jboss.tools.hibernate.jpt.core.internal.context.DiscriminatorFormula;
import
org.jboss.tools.hibernate.jpt.core.internal.resource.java.DiscriminatorFormulaAnnotation;
/**
@@ -49,7 +50,7 @@
String oldValue = this.value;
this.value = newValue;
this.dfResource.setValue(newValue);
- firePropertyChanged(Parameter.VALUE_PROPERTY, oldValue, newValue);
+ firePropertyChanged(DiscriminatorFormula.VALUE_PROPERTY, oldValue, newValue);
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/DiscriminatorFormulaAnnotationImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/DiscriminatorFormulaAnnotationImpl.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/DiscriminatorFormulaAnnotationImpl.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -20,7 +20,6 @@
import org.eclipse.jpt.core.resource.java.AnnotationDefinition;
import org.eclipse.jpt.core.resource.java.JavaResourceNode;
import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember;
-import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType;
import org.eclipse.jpt.core.utility.TextRange;
import org.eclipse.jpt.core.utility.jdt.AnnotationElementAdapter;
import org.eclipse.jpt.core.utility.jdt.DeclarationAnnotationAdapter;
@@ -127,7 +126,7 @@
}
public Annotation buildNullAnnotation(JavaResourcePersistentMember parent) {
- return new NullDiscriminatorFormulaAnnotation((JavaResourcePersistentType) parent);
+ throw new UnsupportedOperationException();
}
}
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/NullDiscriminatorFormulaAnnotation.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/NullDiscriminatorFormulaAnnotation.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/NullDiscriminatorFormulaAnnotation.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2009 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.core.internal.resource.java;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.core.internal.resource.java.NullAnnotation;
-import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType;
-import org.eclipse.jpt.core.utility.TextRange;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class NullDiscriminatorFormulaAnnotation extends NullAnnotation implements
- DiscriminatorFormulaAnnotation {
-
- public NullDiscriminatorFormulaAnnotation(JavaResourcePersistentType parent) {
- super(parent);
- }
-
- public String getAnnotationName() {
- return ANNOTATION_NAME;
- }
-
- @Override
- protected DiscriminatorFormulaAnnotation buildSupportingAnnotation() {
- return (DiscriminatorFormulaAnnotation) super.buildSupportingAnnotation();
- }
-
- // ***** value
- public String getValue() {
- return null;
- }
-
- public void setValue(String value) {
- if (value != null) {
- this.buildSupportingAnnotation().setValue(value);
- }
- }
-
- public TextRange getValueTextRange(CompilationUnit astRoot) {
- return null;
- }
-
-}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateDiscriminatorColumnComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateDiscriminatorColumnComposite.java 2009-07-30
12:44:49 UTC (rev 16895)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateDiscriminatorColumnComposite.java 2009-07-30
13:09:13 UTC (rev 16896)
@@ -109,11 +109,10 @@
);
// Formula widgets
- addLabeledMultiLineText(
+ addLabeledText(
discriminatorColumnContainer,
HibernateUIMappingMessages.HibernateDiscriminatorColumnComposite_formula,
buildDiscriminatorFormulaHolder(),
- 2,
null//TODO help
);
@@ -196,12 +195,22 @@
return new PropertyAspectAdapter<HibernateEntity, String>(getSubjectHolder(),
DiscriminatorFormula.VALUE_PROPERTY) {
@Override
protected String buildValue_() {
- return this.subject.getDiscriminatorFormula().getValue();
+ DiscriminatorFormula df = this.subject.getDiscriminatorFormula();
+ return df == null ? null : df.getValue();
}
@Override
protected void setValue_(String value) {
- this.subject.getDiscriminatorFormula().setValue(value);
+ if ("".equals(value)) value = null; //$NON-NLS-1$
+ DiscriminatorFormula df = this.subject.getDiscriminatorFormula();
+ if (value == null && df != null){
+ this.subject.removeDiscriminatorFormula();
+ } else {
+ if (df == null){
+ df = this.subject.addDiscriminatorFormula();
+ }
+ df.setValue(value);
+ }
}
};
}