blob: 123d1815e31991cb441b6b52e249ba22c821fd47 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 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.content.persistence.resource;
import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator;
import org.eclipse.wst.common.internal.emf.resource.GenericTranslator;
import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
import org.eclipse.wst.common.internal.emf.resource.RootTranslator;
import org.eclipse.wst.common.internal.emf.resource.Translator;
public class PersistenceTranslator extends RootTranslator
implements PersistenceXMLMapper
{
public static PersistenceTranslator INSTANCE = new PersistenceTranslator();
private static Translator[] children;
private static PersistencePackage PERSISTENCE_PKG = PersistencePackage.eINSTANCE;
public PersistenceTranslator() {
super(PERSISTENCE, PERSISTENCE_PKG.eINSTANCE.getPersistence());
}
public Translator[] getChildren(Object target, int versionID) {
if (children == null) {
children = createChildren();
}
return children;
}
private static Translator[] createChildren() {
return new Translator[] {
IDTranslator.INSTANCE,
createVersionTranslator(),
new ConstantAttributeTranslator(XML_NS, PERSISTENCE_NS_URL),
new ConstantAttributeTranslator(XML_NS_XSI, XSI_NS_URL),
new ConstantAttributeTranslator(XSI_SCHEMA_LOCATION, PERSISTENCE_NS_URL + ' ' + PERSISTENCE_SCHEMA_LOC_1_0),
createPersistenceUnitTranslator()
};
}
private static Translator createVersionTranslator() {
return new Translator(PERSISTENCE_VERSION, PERSISTENCE_PKG.getPersistence_Version(), DOM_ATTRIBUTE);
}
private static Translator createPersistenceUnitTranslator() {
GenericTranslator translator = new GenericTranslator(PERSISTENCE_UNIT, PERSISTENCE_PKG.getPersistence_PersistenceUnits());
translator.setChildren(
new Translator[] {
IDTranslator.INSTANCE,
createPersistenceUnitNameTranslator(),
createTransactionTypeTranslator(),
createPersistenceUnitDescriptionTranslator(),
createPersistenceUnitProviderTranslator(),
createJtaDataSourceTranslator(),
createNonJtaDataSourceTranslator(),
createMappingFileTranslator(),
createJarFileTranslator(),
createClassTranslator(),
createExcludeUnlistedClassesTranslator(),
createPropertiesTranslator()
}
);
return translator;
}
private static Translator createPersistenceUnitNameTranslator() {
return new Translator(PERSISTENCE_UNIT_NAME, PERSISTENCE_PKG.getPersistenceUnit_Name(), DOM_ATTRIBUTE);
}
private static Translator createTransactionTypeTranslator() {
return new TransactionTypeTranslator();
}
private static Translator createPersistenceUnitDescriptionTranslator() {
return new Translator(PERSISTENCE_UNIT_DESCRIPTION, PERSISTENCE_PKG.getPersistenceUnit_Description());
}
private static Translator createPersistenceUnitProviderTranslator() {
return new Translator(PERSISTENCE_UNIT_PROVIDER, PERSISTENCE_PKG.getPersistenceUnit_Provider(), UNSET_IF_NULL);
}
private static Translator createJtaDataSourceTranslator() {
return new Translator(JTA_DATA_SOURCE, PERSISTENCE_PKG.getPersistenceUnit_JtaDataSource());
}
private static Translator createNonJtaDataSourceTranslator() {
return new Translator(NON_JTA_DATA_SOURCE, PERSISTENCE_PKG.getPersistenceUnit_NonJtaDataSource());
}
private static Translator createMappingFileTranslator() {
return new MappingFileTranslator(MAPPING_FILE, PERSISTENCE_PKG.getPersistenceUnit_MappingFiles());
}
private static Translator createJarFileTranslator() {
return new Translator(JAR_FILE, PERSISTENCE_PKG.getPersistenceUnit_JarFiles());
}
private static Translator createClassTranslator() {
return new JavaClassRefTranslator(CLASS, PERSISTENCE_PKG.getPersistenceUnit_Classes());
}
private static Translator createExcludeUnlistedClassesTranslator() {
return new BooleanTranslator(EXCLUDE_UNLISTED_CLASSES, PERSISTENCE_PKG.getPersistenceUnit_ExcludeUnlistedClasses(), UNSET_IF_NULL);
}
private static Translator createPropertiesTranslator() {
GenericTranslator translator = new GenericTranslator(PROPERTIES, PERSISTENCE_PKG.getPersistenceUnit_Properties());
translator.setChildren(
new Translator[] {
createPropertyTranslator()
}
);
return translator;
}
private static Translator createPropertyTranslator() {
GenericTranslator translator = new GenericTranslator(PROPERTY, PERSISTENCE_PKG.getProperties_Properties());
translator.setChildren(
new Translator[] {
createPropertyNameTranslator(),
createPropertyValueTranslator()
}
);
return translator;
}
private static Translator createPropertyNameTranslator() {
return new Translator(PROPERTY_NAME, PERSISTENCE_PKG.getProperty_Name());
}
private static Translator createPropertyValueTranslator() {
return new Translator(PROPERTY_VALUE, PERSISTENCE_PKG.getProperty_Value());
}
}