/* * This file is part of the openSCADA project * Copyright (C) 2006-2011 TH4 SYSTEMS GmbH (http://th4-systems.com) * * openSCADA is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * openSCADA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with openSCADA. If not, see * <http://opensource.org/licenses/lgpl-3.0.html> for a copy of the LGPLv3 License. */ package org.openscada.vi.ui.draw2d.loader; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.openscada.vi.model.VisualInterface.Symbol; import org.openscada.vi.model.VisualInterface.VisualInterfacePackage; import org.openscada.vi.ui.draw2d.Activator; public class XMISymbolLoader implements SymbolLoader { private final URI uri; private Symbol symbol; private final ClassLoader classLoader; public XMISymbolLoader ( final String uri ) { this ( URI.createURI ( uri ) ); } public XMISymbolLoader ( final URI uri ) { this.uri = uri; this.classLoader = findClassLoader ( uri ); } private ClassLoader findClassLoader ( final URI uri ) { return Activator.class.getClassLoader (); } @Override public ClassLoader getClassLoader () { return this.classLoader; } @Override public Symbol getSymbol () { return this.symbol; } @Override public void load () throws Exception { // load VisualInterfacePackage.eINSTANCE.eClass (); this.symbol = null; final ResourceSet resourceSet = new ResourceSetImpl (); resourceSet.getResourceFactoryRegistry ().getExtensionToFactoryMap ().put ( "vi", new XMIResourceFactoryImpl () ); //$NON-NLS-1$ final Resource resource = resourceSet.getResource ( this.uri, true ); for ( final EObject o : resource.getContents () ) { if ( o instanceof Symbol ) { this.symbol = (Symbol)o; } } } }