Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java379
1 files changed, 0 insertions, 379 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java
deleted file mode 100644
index 51ff7b94ac..0000000000
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 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.jpa.core.internal.context.orm;
-
-import java.util.List;
-import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute;
-import org.eclipse.jpt.common.core.resource.java.JavaResourceField;
-import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod;
-import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.common.utility.model.event.StateChangeEvent;
-import org.eclipse.jpt.common.utility.model.listener.StateChangeListener;
-import org.eclipse.jpt.jpa.core.JpaStructureNode;
-import org.eclipse.jpt.jpa.core.context.AccessType;
-import org.eclipse.jpt.jpa.core.context.java.Accessor;
-import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
-import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
-import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType;
-import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping;
-import org.eclipse.jpt.jpa.core.internal.context.java.FieldAccessor;
-import org.eclipse.jpt.jpa.core.internal.context.java.PropertyAccessor;
-import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0;
-import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmReadOnlyPersistentAttribute2_0;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-
-/**
- * <em>virtual</em> <code>orm.xml</code> persistent attribute
- */
-public class VirtualOrmPersistentAttribute
- extends AbstractOrmXmlContextNode
- implements OrmReadOnlyPersistentAttribute2_0
-{
- protected final Accessor javaAccessor;
-
- /**
- * This is an "annotated" Java persistent attribute whose state is
- * determined by its annotations (just like a "normal" Java attribute).
- * Its parent is an <code>orm.xml</code> persistent type. This is necessary
- * because the Java attribute's <em>context</em> is the <code>orm.xml</code>
- * type (e.g. the Java attribute's default table is the table set in the
- * <code>orm.xml</code> type, not the Java type).
- * The {@link #originalJavaAttributeListener} keeps this attribute in sync
- * with any changes made via the Java context model.
- */
- protected final JavaPersistentAttribute annotatedJavaAttribute;
-
- /**
- * This is the "original" Java persistent attribute corresponding to
- * {@link #javaResourceAttribute} from the Java context model.
- * If it is found (it can be <code>null</code> if the <code>orm.xml</code>
- * access type differs from the Java access type), we need to listen to it
- * for changes so we can refresh our "local" Java attributes (since the
- * Java resource model does not fire change events, and trigger a
- * <em>sync</em>, when it is modified by the Java context model - if there
- * is no Java context attribute, the Java resource model can only be
- * modified via source code editing and we will <em>sync</em> appropriately).
- */
- protected JavaPersistentAttribute originalJavaAttribute;
- protected StateChangeListener originalJavaAttributeListener;
-
- /**
- * This is a simulated "unannotated" Java persistent attribute. It is built
- * only if necessary (i.e. when the <code>orm.xml</code> persistent type
- * has been tagged <em>metadata complete</em>). Like
- * {@link #annotatedJavaAttribute}, its parent is an
- * <code>orm.xml</code> persistent type.
- * The {@link #originalJavaAttributeListener} keeps this attribute in sync
- * with any changes made via the Java context model.
- */
- protected JavaPersistentAttribute unannotatedJavaAttribute;
-
- protected JavaAttributeMapping mapping; // never null
-
-
- public VirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourceField resourceField) {
- super(parent);
- this.javaAccessor = new FieldAccessor(this, resourceField);
- this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute();
- this.mapping = this.buildMapping();
- }
-
- public VirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) {
- super(parent);
- this.javaAccessor = new PropertyAccessor(this, resourceGetter, resourceSetter);
- this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute();
- this.mapping = this.buildMapping();
- }
-
- public VirtualOrmPersistentAttribute(OrmPersistentType parent, Accessor javaAccessor) {
- super(parent);
- this.javaAccessor = javaAccessor;
- this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute();
- this.mapping = this.buildMapping();
- }
-
-
- // ********** synchronize/update **********
-
- @Override
- public void synchronizeWithResourceModel() {
- super.synchronizeWithResourceModel();
- this.syncLocalJavaAttributes();
- // 'mapping' belongs to one of the "local" Java persistent attributes
- }
-
- @Override
- public void update() {
- super.update();
- this.updateOriginalJavaAttribute();
- this.updateLocalJavaAttributes();
- this.setMapping(this.buildMapping());
- }
-
-
- // ********** mapping **********
-
- public JavaAttributeMapping getMapping() {
- return this.mapping;
- }
-
- protected void setMapping(JavaAttributeMapping mapping) {
- JavaAttributeMapping old = this.mapping;
- this.mapping = mapping;
- this.firePropertyChanged(DEFAULT_MAPPING_KEY_PROPERTY, old, mapping);
- }
-
- protected JavaAttributeMapping buildMapping() {
- return this.getJavaPersistentAttribute().getMapping();
- }
-
- public String getMappingKey() {
- return this.mapping.getKey();
- }
-
- public String getDefaultMappingKey() {
- return this.mapping.getKey();
- }
-
-
- // ********** name **********
-
- public String getName() {
- return this.mapping.getName();
- }
-
-
- // ********** Java persistent attribute **********
-
- public JavaPersistentAttribute getJavaPersistentAttribute() {
- return this.getOwningTypeMapping().isMetadataComplete() ?
- this.getUnannotatedJavaAttribute() :
- this.annotatedJavaAttribute;
- }
-
- public JavaPersistentAttribute resolveJavaPersistentAttribute() {
- JavaPersistentType javaType = this.getOwningPersistentType().getJavaPersistentType();
- return (javaType == null) ? null : javaType.getAttributeFor(this.getJavaResourceAttribute());
- }
-
- protected JavaPersistentAttribute2_0 getJavaPersistentAttribute2_0() {
- return (JavaPersistentAttribute2_0) this.getJavaPersistentAttribute();
- }
-
- protected JavaPersistentAttribute buildAnnotatedJavaAttribute() {
- return buildJavaAttribute(this.javaAccessor);
- }
-
- protected JavaPersistentAttribute getUnannotatedJavaAttribute() {
- if (this.unannotatedJavaAttribute == null) {
- this.unannotatedJavaAttribute = this.buildUnannotatedJavaAttribute();
- }
- return this.unannotatedJavaAttribute;
- }
-
- protected JavaPersistentAttribute buildUnannotatedJavaAttribute() {
- // pass in the orm persistent type as the parent...
- return this.javaAccessor.buildUnannotatedJavaAttribute(this.getOwningPersistentType());
- }
-
- protected JavaPersistentAttribute buildJavaAttribute(Accessor accessor) {
- // pass in the orm persistent type as the parent...
- return this.getJpaFactory().buildJavaPersistentAttribute(this.getOwningPersistentType(), accessor);
- }
-
- protected void syncLocalJavaAttributes() {
- this.annotatedJavaAttribute.synchronizeWithResourceModel();
- if (this.unannotatedJavaAttribute != null) {
- this.unannotatedJavaAttribute.synchronizeWithResourceModel();
- }
- }
-
- protected void updateLocalJavaAttributes() {
- this.annotatedJavaAttribute.update();
- if (this.unannotatedJavaAttribute != null) {
- this.unannotatedJavaAttribute.update();
- }
- }
-
- public Accessor getJavaAccessor() {
- return this.javaAccessor;
- }
-
- public JavaResourceAttribute getJavaResourceAttribute() {
- return this.javaAccessor.getResourceAttribute();
- }
-
- public boolean isFor(JavaResourceField javaResourceField) {
- return this.javaAccessor.isFor(javaResourceField);
- }
-
- public boolean isFor(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) {
- return this.javaAccessor.isFor(javaResourceGetter, javaResourceSetter);
- }
-
- // ********** original Java persistent attribute **********
-
- protected void updateOriginalJavaAttribute() {
- JavaPersistentAttribute newJavaAttribute = this.resolveJavaPersistentAttribute();
- if (newJavaAttribute != this.originalJavaAttribute) {
- if (newJavaAttribute == null) {
- this.originalJavaAttribute.removeStateChangeListener(this.getOriginalJavaAttributeListener());
- this.originalJavaAttribute = null;
- } else {
- if (this.originalJavaAttribute != null) {
- this.originalJavaAttribute.removeStateChangeListener(this.getOriginalJavaAttributeListener());
- }
- this.originalJavaAttribute = newJavaAttribute;
- this.originalJavaAttribute.addStateChangeListener(this.getOriginalJavaAttributeListener());
- }
- }
- }
-
- protected StateChangeListener getOriginalJavaAttributeListener() {
- if (this.originalJavaAttributeListener == null) {
- this.originalJavaAttributeListener = this.buildOriginalJavaAttributeListener();
- }
- return this.originalJavaAttributeListener;
- }
-
- protected StateChangeListener buildOriginalJavaAttributeListener() {
- return new StateChangeListener() {
- public void stateChanged(StateChangeEvent event) {
- VirtualOrmPersistentAttribute.this.originalJavaAttributeChanged();
- }
- };
- }
-
- /**
- * If the "original" Java persistent attribute (or any of its parts) changes
- * we need to sync our "local" Java persistent attributes with any possible
- * changes to the Java resource model. This is necessary for when the Java
- * context model is modifying the Java resource model, but is redundant when
- * the Java resource model is triggering a <em>sync</em>.
- */
- protected void originalJavaAttributeChanged() {
- this.syncLocalJavaAttributes();
- }
-
-
- // ********** access **********
-
- public AccessType getAccess() {
- return this.getJavaPersistentAttribute().getAccess();
- }
-
-
- // ********** specified/default **********
-
- public boolean isVirtual() {
- return true;
- }
-
- public OrmPersistentAttribute addToXml() {
- if (this.mapping.getKey() == null) {
- throw new IllegalStateException("Use convertToSpecified(String) instead and specify a mapping type"); //$NON-NLS-1$
- }
- return this.getOwningPersistentType().addAttributeToXml(this);
- }
-
- public OrmPersistentAttribute addToXml(String mappingKey) {
- return this.getOwningPersistentType().addAttributeToXml(this, mappingKey);
- }
-
-
- // ********** JpaStructureNode implementation **********
-
- public ContextType getContextType() {
- return new ContextType(this);
- }
-
- public Class<OrmPersistentAttribute> getType() {
- return OrmPersistentAttribute.class;
- }
-
- public JpaStructureNode getStructureNode(int offset) {
- return this;
- }
-
- public boolean contains(int textOffset) {
- return false;
- }
-
- public TextRange getSelectionTextRange() {
- return null;
- }
-
- public void dispose() {
- if (this.originalJavaAttribute != null) {
- this.originalJavaAttribute.removeStateChangeListener(this.getOriginalJavaAttributeListener());
- }
- }
-
-
- // ********** validation **********
-
- @Override
- public void validate(List<IMessage> messages, IReporter reporter) {
- super.validate(messages, reporter);
- // the Java attribute should not need an AST for validation from here
- this.getJavaPersistentAttribute().validate(messages, reporter, null);
- }
-
- public TextRange getValidationTextRange() {
- return this.getOwningTypeMapping().getAttributesTextRange();
- }
-
-
- // ********** metamodel **********
-
- public String getMetamodelContainerFieldTypeName() {
- return this.getJavaPersistentAttribute2_0().getMetamodelContainerFieldTypeName();
- }
-
- public String getMetamodelContainerFieldMapKeyTypeName() {
- return this.getJavaPersistentAttribute2_0().getMetamodelContainerFieldMapKeyTypeName();
- }
-
- public String getMetamodelTypeName() {
- return this.getJavaPersistentAttribute2_0().getMetamodelTypeName();
- }
-
-
- // ********** misc **********
-
- @Override
- public OrmPersistentType getParent() {
- return (OrmPersistentType) super.getParent();
- }
-
- public OrmPersistentType getOwningPersistentType() {
- return this.getParent();
- }
-
- public OrmTypeMapping getOwningTypeMapping() {
- return this.getOwningPersistentType().getMapping();
- }
-
- public String getPrimaryKeyColumnName() {
- return this.mapping.getPrimaryKeyColumnName();
- }
-
- public String getTypeName() {
- return this.getJavaPersistentAttribute().getTypeName();
- }
-
- @Override
- public void toString(StringBuilder sb) {
- sb.append(this.getName());
- }
-}

Back to the top