diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkArrayMapping2_3.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkArrayMapping2_3.java | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkArrayMapping2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkArrayMapping2_3.java deleted file mode 100644 index 1795808f8b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkArrayMapping2_3.java +++ /dev/null @@ -1,332 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 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.eclipselink.core.internal.context.java; - -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.common.core.resource.java.Annotation; -import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; -import org.eclipse.jpt.common.utility.Filter; -import org.eclipse.jpt.common.utility.internal.Association; -import org.eclipse.jpt.common.utility.internal.SimpleAssociation; -import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; -import org.eclipse.jpt.jpa.core.JpaFactory; -import org.eclipse.jpt.jpa.core.context.Converter; -import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn; -import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn; -import org.eclipse.jpt.jpa.core.context.java.JavaColumn; -import org.eclipse.jpt.jpa.core.context.java.JavaColumnMapping; -import org.eclipse.jpt.jpa.core.context.java.JavaConverter; -import org.eclipse.jpt.jpa.core.context.java.JavaEnumeratedConverter; -import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.jpa.core.context.java.JavaLobConverter; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.jpa.core.context.java.JavaTemporalConverter; -import org.eclipse.jpt.jpa.core.internal.context.JptValidator; -import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver; -import org.eclipse.jpt.jpa.core.internal.context.TableColumnTextRangeResolver; -import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaAttributeMapping; -import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider; -import org.eclipse.jpt.jpa.core.internal.jpa1.context.NamedColumnValidator; -import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaConverter; -import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelField; -import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0; -import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.jpa.eclipselink.core.EclipseLinkMappingKeys; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkArrayMapping2_3; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.EclipseLinkJavaConvertibleMapping; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkConverterContainer; -import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLinkArrayAnnotation2_3; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class JavaEclipseLinkArrayMapping2_3 - extends AbstractJavaAttributeMapping<EclipseLinkArrayAnnotation2_3> - implements - EclipseLinkArrayMapping2_3, - EclipseLinkJavaConvertibleMapping, - JavaColumnMapping -{ - - protected final JavaColumn column; - - protected JavaConverter converter; // never null - - - protected static final JavaConverter.Adapter[] CONVERTER_ADAPTER_ARRAY = new JavaConverter.Adapter[] { - JavaEnumeratedConverter.Adapter.instance(), - JavaTemporalConverter.BasicAdapter.instance(), - JavaLobConverter.Adapter.instance(), - JavaEclipseLinkConvert.Adapter.instance() - }; - - protected static final Iterable<JavaConverter.Adapter> CONVERTER_ADAPTERS = new ArrayIterable<JavaConverter.Adapter>(CONVERTER_ADAPTER_ARRAY); - - protected final JavaEclipseLinkConverterContainer converterContainer; - - public JavaEclipseLinkArrayMapping2_3(JavaPersistentAttribute parent) { - super(parent); - this.column = this.buildColumn(); - this.converter = this.buildConverter(); - this.converterContainer = this.buildConverterContainer(); - } - - // ********** synchronize/update ********** - - @Override - public void synchronizeWithResourceModel() { - super.synchronizeWithResourceModel(); - this.column.synchronizeWithResourceModel(); - this.syncConverter(); - this.converterContainer.synchronizeWithResourceModel(); - } - - @Override - public void update() { - super.update(); - this.column.update(); - this.syncConverter(); - this.converterContainer.update(); - } - - // ********** column ********** - - public JavaColumn getColumn() { - return this.column; - } - - protected JavaColumn buildColumn() { - return this.getJpaFactory().buildJavaColumn(this, this); - } - - // ********** converter ********** - - public JavaConverter getConverter() { - return this.converter; - } - - public void setConverter(Class<? extends Converter> converterType) { - if (this.converter.getType() != converterType) { - this.converter.dispose(); - JavaConverter.Adapter converterAdapter = this.getConverterAdapter(converterType); - this.retainConverterAnnotation(converterAdapter); - this.setConverter_(this.buildConverter(converterAdapter)); - } - } - - protected JavaConverter buildConverter(JavaConverter.Adapter converterAdapter) { - return (converterAdapter != null) ? - converterAdapter.buildNewConverter(this, this.getJpaFactory()) : - this.buildNullConverter(); - } - - protected void setConverter_(JavaConverter converter) { - Converter old = this.converter; - this.converter = converter; - this.firePropertyChanged(CONVERTER_PROPERTY, old, converter); - } - - /** - * Clear all the converter annotations <em>except</em> for the annotation - * corresponding to the specified adapter. If the specified adapter is - * <code>null</code>, remove <em>all</em> the converter annotations. - */ - protected void retainConverterAnnotation(JavaConverter.Adapter converterAdapter) { - JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); - for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { - if (adapter != converterAdapter) { - adapter.removeConverterAnnotation(resourceAttribute); - } - } - } - - protected JavaConverter buildConverter() { - JpaFactory jpaFactory = this.getJpaFactory(); - for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { - JavaConverter javaConverter = adapter.buildConverter(this, jpaFactory); - if (javaConverter != null) { - return javaConverter; - } - } - return this.buildNullConverter(); - } - - protected void syncConverter() { - Association<JavaConverter.Adapter, Annotation> assoc = this.getConverterAnnotation(); - if (assoc == null) { - if (this.converter.getType() != null) { - this.setConverter_(this.buildNullConverter()); - } - } else { - JavaConverter.Adapter adapter = assoc.getKey(); - Annotation annotation = assoc.getValue(); - if ((this.converter.getType() == adapter.getConverterType()) && - (this.converter.getConverterAnnotation() == annotation)) { - this.converter.synchronizeWithResourceModel(); - } else { - this.setConverter_(adapter.buildConverter(annotation, this, this.getJpaFactory())); - } - } - } - - /** - * Return the first converter annotation we find along with its corresponding - * adapter. Return <code>null</code> if there are no converter annotations. - */ - protected Association<JavaConverter.Adapter, Annotation> getConverterAnnotation() { - JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); - for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { - Annotation annotation = adapter.getConverterAnnotation(resourceAttribute); - if (annotation != null) { - return new SimpleAssociation<JavaConverter.Adapter, Annotation>(adapter, annotation); - } - } - return null; - } - - protected JavaConverter buildNullConverter() { - return new NullJavaConverter(this); - } - - - // ********** converter adapters ********** - - /** - * Return the converter adapter for the specified converter type. - */ - protected JavaConverter.Adapter getConverterAdapter(Class<? extends Converter> converterType) { - for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { - if (adapter.getConverterType() == converterType) { - return adapter; - } - } - return null; - } - - protected Iterable<JavaConverter.Adapter> getConverterAdapters() { - return CONVERTER_ADAPTERS; - } - - - // ********** converters ********** - - public JavaEclipseLinkConverterContainer getConverterContainer() { - return this.converterContainer; - } - - protected JavaEclipseLinkConverterContainer buildConverterContainer() { - return new JavaEclipseLinkConverterContainerImpl(this); - } - - // ********** converter container parent adapter ********** - - public JavaJpaContextNode getConverterContainerParent() { - return this; // no adapter - } - - public JavaResourceAnnotatedElement getJavaResourceAnnotatedElement() { - return this.getResourceAttribute(); - } - - public boolean parentSupportsConverters() { - return ! this.getPersistentAttribute().isVirtual(); - } - - // ********** metamodel ********** - @Override - protected String getMetamodelFieldTypeName() { - return ((JavaPersistentAttribute2_0) this.getPersistentAttribute()).getMetamodelContainerFieldTypeName(); - } - - @Override - public String getMetamodelTypeName() { - //TODO should get this from targetClass - String targetTypeName = this.getPersistentAttribute().getMultiReferenceTargetTypeName(); - return (targetTypeName != null) ? targetTypeName : MetamodelField.DEFAULT_TYPE_NAME; - } - - - // ********** misc ********** - - public String getKey() { - return EclipseLinkMappingKeys.ARRAY_ATTRIBUTE_MAPPING_KEY; - } - - @Override - protected String getAnnotationName() { - return EclipseLinkArrayAnnotation2_3.ANNOTATION_NAME; - } - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - - // ********** JavaColumn.Owner implementation ********** - - public ColumnAnnotation getColumnAnnotation() { - return (ColumnAnnotation) this.getResourceAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); - } - - public void removeColumnAnnotation() { - this.getResourceAttribute().removeAnnotation(ColumnAnnotation.ANNOTATION_NAME); - } - - public String getDefaultColumnName(ReadOnlyNamedColumn column) { - return this.getName(); - } - - public String getDefaultTableName() { - return this.getTypeMapping().getPrimaryTableName(); - } - - public boolean tableNameIsInvalid(String tableName) { - return this.getTypeMapping().tableNameIsInvalid(tableName); - } - - public Iterable<String> getCandidateTableNames() { - return this.getTypeMapping().getAllAssociatedTableNames(); - } - - public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) { - return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (TableColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider()); - } - - // ********** Java completion proposals ********** - - @Override - public Iterable<String> getJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterable<String> result = super.getJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.column.getJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.converter.getJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return null; - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { - super.validate(messages, reporter, astRoot); - this.column.validate(messages, reporter, astRoot); - this.converter.validate(messages, reporter, astRoot); - } -} |