/*******************************************************************************
* Copyright (c) 2014-2016 IncQuery Labs Ltd.
* 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:
* Akos Horvath, Abel Hegedus, Marton Bur, Zoltan Ujhelyi, Robert Doczi - initial API and implementation
*******************************************************************************/
package org.eclipse.viatra.examples.cps.xform.m2t.api;
import java.util.List;
import org.eclipse.viatra.examples.cps.deployment.Deployment;
import org.eclipse.viatra.examples.cps.deployment.DeploymentApplication;
import org.eclipse.viatra.examples.cps.deployment.DeploymentBehavior;
import org.eclipse.viatra.examples.cps.deployment.DeploymentHost;
import org.eclipse.viatra.examples.cps.xform.m2t.exceptions.CPSGeneratorException;
import com.google.common.collect.Lists;
public class DefaultM2TOutputProvider implements IM2TOutputProvider {
Deployment deployment;
ICPSGenerator generator;
String folder;
@Override
public List<M2TOutputRecord> getOutput() {
return generateAll();
}
public DefaultM2TOutputProvider(Deployment deployment, ICPSGenerator generator, String folder) {
super();
this.deployment = deployment;
this.generator = generator;
this.folder = folder;
}
public List<M2TOutputRecord> generateAll() {
List<M2TOutputRecord> ret = Lists.newArrayList();
try {
for (DeploymentHost host : deployment.getHosts()) {
ret.add(new M2TOutputRecord(folder, "Host" + purify(host.getIp()) + ".java", generator
.generateHostCode(host), false));
for (DeploymentApplication app : host.getApplications()) {
ret.add(new M2TOutputRecord(folder, purify(app.getId()) + "Application.java", generator
.generateApplicationCode(app), false));
DeploymentBehavior behavior = app.getBehavior();
if (behavior != null) {
ret.add(new M2TOutputRecord(folder, "Behavior" + purify(behavior.getDescription()) + ".java",
generator.generateBehaviorCode(behavior), false));
}
}
}
} catch (CPSGeneratorException e) {
e.printStackTrace();
}
return ret;
}
private String purify(String string) {
return string.replaceAll("[^A-Za-z0-9]", "");
}
}