| /**
|
| * Copyright (c) 2009, 2019 Mia-Software and others.
|
| * All rights reserved. This program and the accompanying materials
|
| * are made available under the terms of the Eclipse Public License v2.0
|
| * which accompanies this distribution, and is available at
|
| * http://www.eclipse.org/legal/epl-v20.html
|
| *
|
| * Contributors:
|
| * Frederic Madiot (Mia-Software) - meta-model design
|
| * Gregoire DUPE (Mia-Software) - design and implementation
|
| *
|
| *
|
| * $Id$
|
| */ |
| package org.eclipse.modisco.infra.query.runtime.emf.tests;
|
|
|
| import java.io.File;
|
| import java.io.IOException;
|
|
|
| import org.eclipse.emf.common.util.Diagnostic;
|
| 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.util.Diagnostician;
|
|
|
| import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
| import org.eclipse.modisco.infra.query.runtime.ModelQueryContext;
|
| import org.eclipse.modisco.infra.query.runtime.RuntimeFactory;
|
| import org.eclipse.modisco.infra.query.runtime.RuntimePackage;
|
|
|
| /**
|
| * <!-- begin-user-doc -->
|
| * A sample utility for the '<em><b>runtime</b></em>' package.
|
| * <!-- end-user-doc -->
|
| * @generated
|
| */
|
| public class RuntimeExample {
|
| /**
|
| * <!-- begin-user-doc -->
|
| * Load all the argument file paths or URIs as instances of the model.
|
| * <!-- end-user-doc -->
|
| * @param args the file paths or URIs.
|
| * @generated
|
| */
|
| public static void main(String[] args) {
|
| // Create a resource set to hold the resources.
|
| //
|
| ResourceSet resourceSet = new ResourceSetImpl();
|
|
|
| // Register the appropriate resource factory to handle all file extensions.
|
| //
|
| resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
|
| (Resource.Factory.Registry.DEFAULT_EXTENSION,
|
| new XMIResourceFactoryImpl());
|
|
|
| // Register the package to ensure it is available during loading.
|
| //
|
| resourceSet.getPackageRegistry().put
|
| (RuntimePackage.eNS_URI,
|
| RuntimePackage.eINSTANCE);
|
|
|
| // If there are no arguments, emit an appropriate usage message.
|
| //
|
| if (args.length == 0) {
|
| System.out.println(Messages.RuntimeExample_0);
|
| try {
|
| Resource resource = resourceSet.createResource(URI.createURI("http:///My.runtime")); //$NON-NLS-1$
|
| ModelQueryContext root = RuntimeFactory.eINSTANCE.createModelQueryContext();
|
| resource.getContents().add(root);
|
| resource.save(System.out, null);
|
| }
|
| catch (IOException exception) {
|
| exception.printStackTrace();
|
| }
|
| }
|
| else {
|
| // Iterate over all the arguments.
|
| //
|
| for (int i = 0; i < args.length; ++i) {
|
| // Construct the URI for the instance file.
|
| // The argument is treated as a file path only if it denotes an existing file.
|
| // Otherwise, it's directly treated as a URL.
|
| //
|
| File file = new File(args[i]);
|
| URI uri = file.isFile() ? URI.createFileURI(file.getAbsolutePath()): URI.createURI(args[0]);
|
|
|
| try {
|
| // Demand load resource for this file.
|
| //
|
| Resource resource = resourceSet.getResource(uri, true);
|
| System.out.println(Messages.RuntimeExample_2 + uri);
|
|
|
| // Validate the contents of the loaded resource.
|
| //
|
| for (EObject eObject : resource.getContents()) {
|
| Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
|
| if (diagnostic.getSeverity() != Diagnostic.OK) {
|
| printDiagnostic(diagnostic, ""); //$NON-NLS-1$
|
| }
|
| }
|
| }
|
| catch (RuntimeException exception) {
|
| System.out.println(Messages.RuntimeExample_4 + uri);
|
| exception.printStackTrace();
|
| }
|
| }
|
| }
|
| }
|
|
|
| /**
|
| * <!-- begin-user-doc -->
|
| * Prints diagnostics with indentation.
|
| * <!-- end-user-doc -->
|
| * @param diagnostic the diagnostic to print.
|
| * @param indent the indentation for printing.
|
| * @generated
|
| */
|
| protected static void printDiagnostic(Diagnostic diagnostic, String indent) {
|
| System.out.print(indent);
|
| System.out.println(diagnostic.getMessage());
|
| for (Diagnostic child : diagnostic.getChildren()) {
|
| printDiagnostic(child, indent + " "); //$NON-NLS-1$
|
| }
|
| }
|
|
|
| } //RuntimeExample
|