/** * Copyright (c) 2002-2011 IBM Corporation, CEA, and others. * 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: * IBM - Initial API and implementation * Kenn Hussey (CEA) - 351783 */ package org.eclipse.emf.ecore.xmi.impl; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.xmi.XMIResource; import org.eclipse.emf.ecore.xmi.XMLHelper; import org.eclipse.emf.ecore.xmi.XMLLoad; import org.eclipse.emf.ecore.xmi.XMLSave; /** * This class represents an XMIResource. */ public class XMIResourceImpl extends XMLResourceImpl implements XMIResource { String version = XMIResource.VERSION_VALUE; /** * Constructor for XMIResourceImpl. */ public XMIResourceImpl() { super(); } /** * Constructor for XMIResourceImpl. * @param uri */ public XMIResourceImpl(URI uri) { super(uri); } @Override protected XMLHelper createXMLHelper() { return new XMIHelperImpl(this); } @Override protected XMLLoad createXMLLoad() { return new XMILoadImpl(createXMLHelper()); } @Override protected XMLLoad createXMLLoad(Map<?, ?> options) { if (options != null && Boolean.TRUE.equals(options.get(OPTION_SUPPRESS_XMI))) { return new XMLLoadImpl(new XMLHelperImpl(this)); } else { return super.createXMLLoad(options); } } @Override protected XMLSave createXMLSave() { return new XMISaveImpl(createXMLHelper()); } @Override protected XMLSave createXMLSave(Map<?, ?> options) { if (options != null && Boolean.TRUE.equals(options.get(OPTION_SUPPRESS_XMI))) { return new XMLSaveImpl(new XMLHelperImpl(this)); } else { return super.createXMLSave(options); } } @Override protected boolean useIDs() { return true; } public String getXMIVersion() { return version; } public void setXMIVersion(String version) { this.version = version; } public String getXMINamespace() { if (version.equals(XMIResource.VERSION_VALUE)) { return XMIResource.XMI_URI; } else if (version.equals(XMIResource.VERSION_2_1_VALUE)) { return XMIResource.XMI_2_1_URI; } else { return XMIResource.XMI_2_4_NAMESPACE_PREFIX + version; } } public void setXMINamespace(String namespace) { if (namespace.startsWith(XMIResource.XMI_2_4_NAMESPACE_PREFIX)) { this.setXMIVersion(namespace.substring(XMIResource.XMI_2_4_NAMESPACE_PREFIX.length())); } else if (namespace.equals(XMIResource.XMI_2_1_URI)) { this.setXMIVersion(XMIResource.VERSION_2_1_VALUE); } else if (namespace.equals(XMIResource.XMI_URI)) { this.setXMIVersion(XMIResource.VERSION_VALUE); } else { throw new IllegalArgumentException("Invalid XMI namespace: '"+namespace+"'"); } } }