/*******************************************************************************
* Copyright (c) 2004-2011 Abel Hegedus and Daniel Varro
* 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:
* Abel Hegedus - initial API and implementation
*******************************************************************************/
package org.eclipse.viatra.query.application.generic;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import org.eclipse.viatra.query.application.common.ViatraQueryHeadlessAdvanced;
/**
* @author Abel Hegedus
*
*/
public class GenericViatraQueryApplication {
private static String modelParam = "-m";
private static String patternParam = "-p";
private static String eiqFileParam = "-e";
public static void main(String[] args) {
String model = null;
String eiqFile = null;
String patternFQN = null;
if (args == null || args.length == 0) {
displayHelp();
return;
}
int i = 0;
while (i < args.length) {
if (args[i].equals(modelParam)) {
model = args[i + 1];
i += 2;
continue;
} else if (args[i].equals(patternParam)) {
patternFQN = args[i + 1];
i += 2;
continue;
} else if (args[i].equals(eiqFileParam)) {
eiqFile = args[i + 1];
i += 2;
continue;
} else {
i++;
continue;
}
}
if (model == null) {
System.out.println("Model parameter not set");
displayHelp();
return;
}
if (patternFQN == null) {
System.out.println("PatternFQN parameter not set");
displayHelp();
return;
}
if (eiqFile == null) {
System.out.println("EIQ file parameter not set");
displayHelp();
return;
}
ViatraQueryHeadlessAdvanced hla = new ViatraQueryHeadlessAdvanced();
// Initializing metamodel
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl());
URI fileURI = URI.createFileURI(eiqFile);
URI modelURI = URI.createFileURI(model);
System.out.println(hla.executeDemo_GenericAPI_LoadFromVQL(modelURI, fileURI, patternFQN));
System.out.println(hla.executeTrackChangesDemo_Advanced(modelURI, patternFQN));
}
private static void displayHelp() {
System.out.println("Usage:\n<call> -m <modelFilePath> -e <eiqFilePath> -p <patternFQN>");
System.out.println(" -m : Required, the model to match on.");
System.out.println(" -e : Required, the pattern definition file (.eiq) to match on.");
System.out.println(" -p : Required, the pattern fqn to match");
}
}