diff options
author | tle | 2008-02-03 16:40:54 +0000 |
---|---|---|
committer | tle | 2008-02-03 16:40:54 +0000 |
commit | 7f7b20a5d66bf69e88734ead5036e4d6664aa381 (patch) | |
tree | 97dacecfda81e183389ab1c0adb3a83b953823ad /jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java | |
parent | 145c144380950bd4b49fd4597a1a0695cf7c8b7b (diff) | |
download | webtools.dali-7f7b20a5d66bf69e88734ead5036e4d6664aa381.tar.gz webtools.dali-7f7b20a5d66bf69e88734ead5036e4d6664aa381.tar.xz webtools.dali-7f7b20a5d66bf69e88734ead5036e4d6664aa381.zip |
Merged jpt_2_0_exp branch into Head.v20080202_Merged
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java new file mode 100644 index 0000000000..fa61cd9d45 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/TemporalImpl.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * 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 + ******************************************************************************/ +package org.eclipse.jpt.core.internal.resource.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.core.internal.ITextRange; +import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter; +import org.eclipse.jpt.core.internal.jdtutility.Attribute; +import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter; +import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter; +import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter; +import org.eclipse.jpt.core.internal.jdtutility.Member; +import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter; +import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter; + +public class TemporalImpl extends AbstractAnnotationResource<Attribute> implements Temporal +{ + private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); + + private static final DeclarationAnnotationElementAdapter<String> VALUE_ADAPTER = buildValueAdapter(); + + private final AnnotationElementAdapter<String> valueAdapter; + + private TemporalType value; + + protected TemporalImpl(JavaResource parent, Attribute attribute) { + super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new ShortCircuitAnnotationElementAdapter<String>(attribute, VALUE_ADAPTER); + } + + public void initialize(CompilationUnit astRoot) { + this.value = this.value(astRoot); + } + + public String getAnnotationName() { + return ANNOTATION_NAME; + } + + public TemporalType getValue() { + return this.value; + } + + public void setValue(TemporalType newValue) { + TemporalType oldValue = this.value; + this.value = newValue; + this.valueAdapter.setValue(TemporalType.toJavaAnnotationValue(newValue)); + firePropertyChanged(VALUE_PROPERTY, oldValue, newValue); + } + + public ITextRange valueTextRange(CompilationUnit astRoot) { + return this.elementTextRange(VALUE_ADAPTER, astRoot); + } + + public void updateFromJava(CompilationUnit astRoot) { + this.setValue(this.value(astRoot)); + } + + protected TemporalType value(CompilationUnit astRoot) { + return TemporalType.fromJavaAnnotationValue(this.valueAdapter.getValue(astRoot)); + } + + // ********** static methods ********** + private static DeclarationAnnotationElementAdapter<String> buildValueAdapter() { + return new EnumDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.TEMPORAL__VALUE); + } + + public static class TemporalAnnotationDefinition implements AnnotationDefinition + { + // singleton + private static final TemporalAnnotationDefinition INSTANCE = new TemporalAnnotationDefinition(); + + /** + * Return the singleton. + */ + public static AnnotationDefinition instance() { + return INSTANCE; + } + + /** + * Ensure non-instantiability. + */ + private TemporalAnnotationDefinition() { + super(); + } + + public Annotation buildAnnotation(JavaResource parent, Member member) { + return new TemporalImpl(parent, (Attribute) member); + } + + public Annotation buildNullAnnotation(JavaResource parent, Member member) { + return new NullTemporal(parent); + } + + public String getAnnotationName() { + return ANNOTATION_NAME; + } + } + +} |