package org.archstudio.xarchadt.variability.core;
import java.io.IOException;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import javax.xml.xpath.XPathException;
import org.archstudio.xadl3.variability_3_0.AttributeChange;
import org.archstudio.xadl3.variability_3_0.Change;
import org.archstudio.xadl3.variability_3_0.ElementChange;
import org.archstudio.xarchadt.IXArchADT;
import org.archstudio.xarchadt.IXArchADTPackageMetadata;
import org.archstudio.xarchadt.IXArchADTSubstitutionHint;
import org.archstudio.xarchadt.IXArchADTTypeMetadata;
import org.archstudio.xarchadt.ObjRef;
import org.archstudio.xarchadt.XArchADTProxy;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jdt.annotation.Nullable;
import org.xml.sax.SAXException;
public class XArchADTVariabilityElementImpl implements IXArchADT {
IXArchADT xarch;
public XArchADTVariabilityElementImpl(IXArchADT xarch) {
this.xarch = xarch;
}
@Override
public boolean isValidObjRef(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef createDocument(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef createDocument(URI uri, String nsURI) {
throw new UnsupportedOperationException();
}
@Override
@Nullable
public Serializable get(ObjRef baseObjRef, String typeOfThing) {
ElementChange elementChange = XArchADTProxy.proxy(xarch, baseObjRef);
for (Change change : elementChange.getChange()) {
if (typeOfThing.equals(change.getName())) {
if (change instanceof AttributeChange) {
return XArchADTVariabilityImpl.deserialize(((AttributeChange) change).getValue());
}
if (change instanceof ElementChange) {
return XArchADTProxy.unproxy(change);
}
break;
}
}
return null;
}
@Override
public ObjRef load(URI uri) throws SAXException, IOException {
throw new UnsupportedOperationException();
}
@Override
public ObjRef load(URI uri, byte[] content) throws SAXException, IOException {
throw new UnsupportedOperationException();
}
@Override
public void save(URI uri) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void close(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public void add(ObjRef baseObjRef, String typeOfThing, Serializable thingToAddRef) {
throw new UnsupportedOperationException();
}
@Override
public void add(ObjRef baseObjRef, String typeOfThing, Collection<? extends Serializable> thingsToAddRefs) {
throw new UnsupportedOperationException();
}
@Override
public void clear(ObjRef baseObjRef, String typeOfThing) {
throw new UnsupportedOperationException();
}
@Override
public void remove(ObjRef baseObjRef, String typeOfThing, Serializable valueToRemove) {
throw new UnsupportedOperationException();
}
@Override
public Serializable resolve(ObjRef objRef) {
throw new UnsupportedOperationException();
}
@Override
public List<Serializable> getAll(ObjRef baseObjRef, String typeOfThing) {
throw new UnsupportedOperationException();
}
@Override
public void remove(ObjRef baseObjRef, String typeOfThing, Collection<? extends Serializable> thingsToRemove) {
throw new UnsupportedOperationException();
}
@Override
public boolean hasAncestor(ObjRef childRef, ObjRef ancestorRef) {
throw new UnsupportedOperationException();
}
@Override
public boolean isAttached(ObjRef childRef) {
throw new UnsupportedOperationException();
}
@Override
public void set(ObjRef baseObjRef, String typeOfThing, @Nullable Serializable value) {
throw new UnsupportedOperationException();
}
@Override
public List<ObjRef> getAllAncestors(ObjRef targetObjRef) {
throw new UnsupportedOperationException();
}
@Override
public List<ObjRef> getLineage(ObjRef targetObjRef) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef getParent(ObjRef targetObjRef) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef getByID(ObjRef documentRootRef, String id) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef create(String nsURI, String typeOfThing) {
throw new UnsupportedOperationException();
}
@Override
public void renameXArch(String oldURI, String newURI) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef getByID(String id) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef resolveHref(ObjRef documentRootRef, String href) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef getDocumentRootRef(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public String getTagName(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public String getContainingFeatureName(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public String getTagsOnlyPathString(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public IXArchADTPackageMetadata getPackageMetadata(String nsURI) {
throw new UnsupportedOperationException();
}
@Override
public Collection<IXArchADTPackageMetadata> getAvailablePackageMetadata() {
throw new UnsupportedOperationException();
}
@Override
public IXArchADTTypeMetadata getTypeMetadata(String nsURI, String typeName) {
return xarch.getTypeMetadata(nsURI, typeName);
}
@Override
public IXArchADTTypeMetadata getTypeMetadata(ObjRef objRef) {
ElementChange elementChange = XArchADTProxy.proxy(xarch, objRef);
String[] typeParts = elementChange.getType().split("#", 2);
return getTypeMetadata(typeParts[0], typeParts[1]);
}
@Override
public boolean isInstanceOf(@Nullable Serializable object, String sourceNsURI, String sourceTypeName) {
if (object instanceof ObjRef) {
IXArchADTTypeMetadata type = getTypeMetadata((ObjRef) object);
return xarch.isAssignable(sourceNsURI, sourceTypeName, type.getNsURI(), type.getTypeName());
}
return false;
}
@Override
public boolean isAssignable(String sourceNsURI, String sourceTypeName, String targetNsURI, String targetTypeName) {
return xarch.isAssignable(sourceNsURI, sourceTypeName, targetNsURI, targetTypeName);
}
@Override
public List<IXArchADTSubstitutionHint> getAllSubstitutionHints() {
throw new UnsupportedOperationException();
}
@Override
public List<IXArchADTSubstitutionHint> getSubstitutionHintsForSource(String sourceNsURI, String sourceTypeName) {
throw new UnsupportedOperationException();
}
@Override
public List<IXArchADTSubstitutionHint> getSubstitutionHintsForTarget(String targetNsURI, String targetTypeName) {
throw new UnsupportedOperationException();
}
@Override
public ObjRef getDocumentRootRef(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public Collection<URI> getOpenURIs() {
throw new UnsupportedOperationException();
}
@Override
public URI getURI(ObjRef ref) {
throw new UnsupportedOperationException();
}
@Override
public byte[] serialize(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public List<ObjRef> resolveObjRefs(ObjRef contextObjRef, String xPath) throws XPathException {
throw new UnsupportedOperationException();
}
@Override
public List<Serializable> resolveSerializables(ObjRef contextObjRef, String xPath) throws XPathException {
throw new UnsupportedOperationException();
}
@Override
public String getXPath(ObjRef toObjRef) {
throw new UnsupportedOperationException();
}
}