org.eclipse.persistence.sdo.types.SDOPropertyType Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 180e602
/*******************************************************************************
* Copyright (c) 1998, 2012 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* bdoughan - May 6/2008 - 1.0M7 - Initial implementation
******************************************************************************/
package org.eclipse.persistence.sdo.types;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import commonj.sdo.Type;
import org.eclipse.persistence.oxm.XMLField;
import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;
import org.eclipse.persistence.oxm.schema.XMLSchemaClassPathReference;
import org.eclipse.persistence.oxm.schema.XMLSchemaReference;
import org.eclipse.persistence.sdo.SDOConstants;
import org.eclipse.persistence.sdo.SDODataObject;
import org.eclipse.persistence.sdo.SDOProperty;
import org.eclipse.persistence.sdo.SDOType;
import org.eclipse.persistence.sdo.helper.SDOTypeHelper;
import org.eclipse.persistence.sdo.helper.metadata.TypeStringConverter;
public class SDOPropertyType extends SDOType implements Type {
private boolean initialized = false;
private SDOTypeHelper typeHelper;
public SDOPropertyType(SDOTypeHelper sdoTypeHelper, SDOType typeType) {
super(SDOConstants.SDO_URL, SDOConstants.PROPERTY, sdoTypeHelper);
this.typeHelper = sdoTypeHelper;
this.javaImplClass = PropertyImpl.class;
xmlDescriptor.setJavaClass(javaImplClass);
xmlDescriptor.setInstantiationPolicy(new TypeInstantiationPolicy(this));
XMLSchemaReference schemaReference = new XMLSchemaClassPathReference();
schemaReference.setSchemaContext("/sdo:Property");
xmlDescriptor.setSchemaReference(schemaReference);
// these properties are ordered as listed page 74 sect. 8.3 of the spec in "SDO Model for Types and Properties"
SDOProperty aliasNameProperty = new SDOProperty(aHelperContext);
aliasNameProperty.setName("aliasName");
aliasNameProperty.setMany(true);
aliasNameProperty.setType(SDOConstants.SDO_STRING);
addDeclaredProperty(aliasNameProperty);
SDOProperty propNameProperty = new SDOProperty(aHelperContext);
propNameProperty.setName("name");
propNameProperty.setType(SDOConstants.SDO_STRING);
addDeclaredProperty(propNameProperty);
SDOProperty manyProperty = new SDOProperty(aHelperContext);
manyProperty.setName("many");
manyProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(manyProperty);
SDOProperty containmentProperty = new SDOProperty(aHelperContext);
containmentProperty.setName("containment");
containmentProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(containmentProperty);
SDOProperty defaultProperty = new SDOProperty(aHelperContext);
defaultProperty.setName("default");
defaultProperty.setType(SDOConstants.SDO_OBJECT);
addDeclaredProperty(defaultProperty);
SDOProperty readOnlyProperty = new SDOProperty(aHelperContext);
readOnlyProperty.setName("readOnly");
readOnlyProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(readOnlyProperty);
SDOProperty typeProperty = new SDOProperty(aHelperContext);
typeProperty.setName("type");
typeProperty.setType(typeType);
typeProperty.setContainment(false);
addDeclaredProperty(typeProperty);
SDOProperty oppositeProperty = new SDOProperty(aHelperContext);
oppositeProperty.setName("opposite");
oppositeProperty.setType(this);
addDeclaredProperty(oppositeProperty);
SDOProperty nullableProperty = new SDOProperty(aHelperContext);
nullableProperty.setName("nullable");
nullableProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(nullableProperty);
setOpen(true);
setFinalized(true);
}
public List getAliasNames() {
return Collections.EMPTY_LIST;
}
public List getBaseTypes() {
return Collections.EMPTY_LIST;
}
public String getName() {
return SDOConstants.PROPERTY;
}
public String getURI() {
return SDOConstants.SDO_URL;
}
public boolean isAbstract() {
return false;
}
public boolean isDataType() {
return false;
}
public boolean isOpen() {
return true;
}
public boolean isSequenced() {
return false;
}
public void initializeMappings() {
Iterator propIterator = this.getDeclaredProperties().iterator();
while(propIterator.hasNext()) {
SDOProperty nextProp = (SDOProperty)propIterator.next();
if(nextProp.getName().equals("type")) {
XMLDirectMapping mapping = new XMLDirectMapping();
mapping.setAttributeName(nextProp.getName());
String xpath = nextProp.getQualifiedXPath(SDOConstants.SDO_URL, true);
mapping.setXPath(xpath);
mapping.setConverter(new TypeStringConverter(this.typeHelper));
if (getXsdType() != null) {
((XMLField)mapping.getField()).setSchemaType(getXsdType());
}
nextProp.setXmlMapping(mapping);
nextProp.addMappingToOwner(true, -1);
} else if(nextProp.getName().equals("opposite")) {
} else {
nextProp.buildMapping(SDOConstants.SDO_URL);
}
}
initialized = true;
}
public boolean isInitialized() {
return this.initialized;
}
public static class PropertyImpl extends SDODataObject {}
}