/******************************************************************************* | |
* Copyright (c) 2006, 2013 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.java; | |
import org.eclipse.jpt.common.utility.internal.iterable.IterableTools; | |
import org.eclipse.jpt.jpa.core.JpaFactory; | |
import org.eclipse.jpt.jpa.core.MappingKeys; | |
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; | |
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; | |
import org.eclipse.jpt.jpa.core.context.java.JavaSpecifiedPersistentAttribute; | |
import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; | |
import org.eclipse.jpt.jpa.core.resource.java.TemporalAnnotation; | |
import org.eclipse.jpt.jpa.core.resource.java.VersionAnnotation; | |
public class JavaVersionMappingDefinition | |
implements JavaAttributeMappingDefinition | |
{ | |
// singleton | |
private static final JavaAttributeMappingDefinition INSTANCE = new JavaVersionMappingDefinition(); | |
/** | |
* Return the singleton. | |
*/ | |
public static JavaAttributeMappingDefinition instance() { | |
return INSTANCE; | |
} | |
/** | |
* Enforce singleton usage | |
*/ | |
private JavaVersionMappingDefinition() { | |
super(); | |
} | |
public String getKey() { | |
return MappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY; | |
} | |
public String getAnnotationName() { | |
return VersionAnnotation.ANNOTATION_NAME; | |
} | |
public boolean isSpecified(JavaSpecifiedPersistentAttribute persistentAttribute) { | |
return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; | |
} | |
public Iterable<String> getSupportingAnnotationNames() { | |
return SUPPORTING_ANNOTATION_NAMES; | |
} | |
private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { | |
ColumnAnnotation.ANNOTATION_NAME, | |
TemporalAnnotation.ANNOTATION_NAME, | |
}; | |
private static final Iterable<String> SUPPORTING_ANNOTATION_NAMES = IterableTools.iterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); | |
public JavaAttributeMapping buildMapping(JavaSpecifiedPersistentAttribute persistentAttribute, JpaFactory factory) { | |
return factory.buildJavaVersionMapping(persistentAttribute); | |
} | |
@Override | |
public String toString() { | |
return this.getClass().getSimpleName(); | |
} | |
} |