blob: c4e18c165d867a174ed7a7882f36e18cac3801a0 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// 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.NamespaceResolver;
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;
public class SDOTypeType extends SDOType implements Type {
private boolean initialized = false;
public SDOTypeType(SDOTypeHelper sdoTypeHelper) {
super(SDOConstants.SDO_URL, SDOConstants.TYPE, sdoTypeHelper);
this.javaImplClass = TypeImpl.class;
xmlDescriptor.setJavaClass(javaImplClass);
xmlDescriptor.setInstantiationPolicy(new TypeInstantiationPolicy(this));
xmlDescriptor.setDefaultRootElement("sdo:type");
XMLSchemaReference schemaReference = new XMLSchemaClassPathReference();
schemaReference.setSchemaContext("/sdo:Type");
xmlDescriptor.setSchemaReference(schemaReference);
NamespaceResolver namespaceResolver = new NamespaceResolver();
namespaceResolver.put(SDOConstants.SDO_PREFIX, SDOConstants.SDO_URL);
SDOType propertyType = new SDOPropertyType(sdoTypeHelper, this);
sdoTypeHelper.addType(propertyType);
// these properties are ordered as listed page 74 sect. 8.3 of the spec in "SDO Model for Types and Properties"
SDOProperty baseTypeProperty = new SDOProperty(aHelperContext);
baseTypeProperty.setName("baseType");
baseTypeProperty.setMany(true);
baseTypeProperty.setType(this);
baseTypeProperty.setContainment(true);
addDeclaredProperty(baseTypeProperty);
SDOProperty propertiesProperty = new SDOProperty(aHelperContext);
propertiesProperty.setName("property");
propertiesProperty.setMany(true);
propertiesProperty.setContainment(true);
propertiesProperty.setType(propertyType);
addDeclaredProperty(propertiesProperty);
SDOProperty typeAliasNameProperty = new SDOProperty(aHelperContext);
typeAliasNameProperty.setName("aliasName");
typeAliasNameProperty.setMany(true);
typeAliasNameProperty.setType(SDOConstants.SDO_STRING);
addDeclaredProperty(typeAliasNameProperty);
SDOProperty nameProperty = new SDOProperty(aHelperContext);
nameProperty.setName("name");
nameProperty.setType(SDOConstants.SDO_STRING);
addDeclaredProperty(nameProperty);
SDOProperty uriProperty = new SDOProperty(aHelperContext);
uriProperty.setName("uri");
uriProperty.setType(SDOConstants.SDO_STRING);
addDeclaredProperty(uriProperty);
SDOProperty dataTypeProperty = new SDOProperty(aHelperContext);
dataTypeProperty.setName("dataType");
dataTypeProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(dataTypeProperty);
SDOProperty openProperty = new SDOProperty(aHelperContext);
openProperty.setName("open");
openProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(openProperty);
SDOProperty sequencedProperty = new SDOProperty(aHelperContext);
sequencedProperty.setName("sequenced");
sequencedProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(sequencedProperty);
SDOProperty abstractProperty = new SDOProperty(aHelperContext);
abstractProperty.setName("abstract");
abstractProperty.setType(SDOConstants.SDO_BOOLEAN);
addDeclaredProperty(abstractProperty);
// set the XMLAnyCollectionMapping on the descriptor on SDO_TYPE
setOpen(true);
setFinalized(true);
}
@Override
public List getAliasNames() {
return Collections.EMPTY_LIST;
}
@Override
public List getBaseTypes() {
return Collections.EMPTY_LIST;
}
@Override
public String getName() {
return SDOConstants.TYPE;
}
@Override
public String getURI() {
return SDOConstants.SDO_URL;
}
@Override
public boolean isAbstract() {
return false;
}
@Override
public boolean isDataType() {
return false;
}
@Override
public boolean isOpen() {
return true;
}
@Override
public boolean isSequenced() {
return false;
}
@Override
public boolean isTypeType() {
return true;
}
public void initializeMappings() {
Iterator propIterator = this.getDeclaredProperties().iterator();
while(propIterator.hasNext()) {
SDOProperty nextProp = (SDOProperty)propIterator.next();
nextProp.buildMapping(SDOConstants.SDO_URL);
}
initialized = true;
}
public boolean isInitialized() {
return this.initialized;
}
/**
* SDO Type
*/
public static class TypeImpl extends SDODataObject {
/**
* Default constructor.
*/
public TypeImpl() {
super();
}
}
}