Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins/facade/org.eclipse.papyrus.facade.codegen/src-templates/org/eclipse/papyrus/facade/codegen/genfacade/LoaderClass.mtl')
-rw-r--r--extraplugins/facade/org.eclipse.papyrus.facade.codegen/src-templates/org/eclipse/papyrus/facade/codegen/genfacade/LoaderClass.mtl128
1 files changed, 128 insertions, 0 deletions
diff --git a/extraplugins/facade/org.eclipse.papyrus.facade.codegen/src-templates/org/eclipse/papyrus/facade/codegen/genfacade/LoaderClass.mtl b/extraplugins/facade/org.eclipse.papyrus.facade.codegen/src-templates/org/eclipse/papyrus/facade/codegen/genfacade/LoaderClass.mtl
new file mode 100644
index 00000000000..0be27c265bd
--- /dev/null
+++ b/extraplugins/facade/org.eclipse.papyrus.facade.codegen/src-templates/org/eclipse/papyrus/facade/codegen/genfacade/LoaderClass.mtl
@@ -0,0 +1,128 @@
+[comment]Copyright (c) 2013 CEA LIST.
+
+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:
+ Obeo - Initial API and implementation
+ CEA LIST - Modification to support Facade code generation[/comment]
+[comment encoding = UTF-8 /]
+[module LoaderClass('http://www.eclipse.org/emf/2002/GenModel', 'http://www.eclipse.org/emf/2002/Ecore')/]
+
+[import org::eclipse::emf::eef::codegen::ecore::services::common /]
+[import org::eclipse::emf::eef::codegen::ecore::services::header /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenModel /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenPackage /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenClass /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenClassifier /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenFeature /]
+[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenDataType /]
+[import org::eclipse::emf::eef::codegen::ecore::services::StringUtil /]
+
+
+[template public loaderClass(genPackage : GenPackage) { genModel : GenModel = genPackage.genModel; packageName : String = genPackage.getUtilitiesPackageName(); className : String = 'Loader'} ]
+[genModel.initializeImportManager(packageName, className)/]
+
+[genModel.getImportedName('org.eclipse.emf.common.util.URI')/]
+
+[file (genPackage.loaderPath(className), false, 'UTF-8')]
+[genModel.includeHeader()/]
+package [packageName/];
+[let content : String = genPackage.loaderFileContent(genModel, className)]
+[genModel.genSortedImports()/]
+[content/]
+[/let]
+[/file]
+[/template]
+
+[template protected loaderFileContent(genPackage : GenPackage, genModel : GenModel, className : String)]
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+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.util.InternalEList;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+
+public class Loader {
+
+ public static Resource doLoad(InputStream inputStream, Map<?, ?> options, EFactory inputFactory, Resource res) throws IOException {
+ //System.err.println("Load : " + res);
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db;
+
+ // Open XML
+ try {
+ db = dbf.newDocumentBuilder();
+ Document document = db.parse(inputStream);
+ Element root = document.getDocumentElement();
+
+ if(root.getNodeName().equals("source")) {
+ String umlFileURIAtt = root.getAttribute("uri");
+ URI umlFileURI = URI.createURI(umlFileURIAtt);
+
+ ResourceSet resSetUML = new ResourceSetImpl();
+ Resource resUML = resSetUML.getResource(umlFileURI, true);
+ if(resUML != null) {
+
+ Iterator<EObject> content = resUML.getContents().iterator();
+ ArrayList internalEObjectList = new ArrayList<>();
+
+ while(content.hasNext()) {
+ EObject umlModelElement = (EObject)content.next();
+ if(umlModelElement instanceof org.eclipse.uml2.uml.Element) {
+ EObject representing = Wrapper.getInstance().findOrCreateSpecific((org.eclipse.uml2.uml.Element)umlModelElement);
+
+ if(representing != null) {
+ internalEObjectList.add(representing);
+ }
+ }
+ }
+
+ InternalEList<InternalEObject> internalEObjects = (InternalEList<InternalEObject>)(InternalEList<?>)res.getContents();
+ internalEObjects.addAllUnique(internalEObjectList);
+
+ return resUML;
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SAXException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return null;
+
+ }
+}
+
+
+[/template]
+
+[query public loaderPath(genPackage : GenPackage, className : String) : String
+ = genPackage.genModel.extractSourceDirectory(genPackage.genModel.modelDirectory) + '/'+ genPackage.getUtilitiesPackageName().toPath() + '/' +
+ className+ '.java'/]

Back to the top