blob: 8817ce6bcc33cce41203eb74c2ad90bbe2233fae [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Robert Bosch GmbH.
* 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:
* Robert Bosch GmbH - initial API and implementation
*******************************************************************************/
package templates
import java.io.BufferedWriter
import java.io.File
import java.io.FileWriter
import org.apache.felix.service.command.CommandProcessor
import org.eclipse.app4mc.amalthea.model.Amalthea
import org.eclipse.app4mc.transformation.extensions.ICustomObjectsStore
import org.eclipse.app4mc.transformation.extensions.base.templates.Model2TextRootTransformer
import org.eclipse.emf.ecore.resource.ResourceSet
import org.osgi.service.component.annotations.Component
import org.osgi.service.component.annotations.Reference
import org.osgi.service.component.annotations.ReferencePolicyOption
@Component(property=#[
// CommandProcessor.COMMAND_SCOPE + ":String=app4mc",
"transformation=Amalthea2Text"
], service=Model2TextRootTransformer)
class AmaltheaModel2TextTransformer extends Model2TextRootTransformer {
@Reference
ICustomObjectsStore customObjsStore
@Reference
M2T_Output_Transformer textGenerator
override m2tTransformation(ResourceSet inputResourceSet) {
for (resource : inputResourceSet.resources) {
for (model : resource.contents) {
// TODO: model is a Amalthea model
// check javadoc : https://www.eclipse.org/xtend/documentation/204_activeannotations.html#active-annotations-expression
customObjsStore.getLogger().info("Processing file : " + resource.URI)
var String outputFolder = getProperty("m2t_output_folder", customObjsStore);
// val textGenerator = new M2T_Output_Transformer
// ===== output 1 =====
var outputFile1 = new File(outputFolder, "1.txt")
outputFile1.parentFile.mkdirs
outputFile1.createNewFile
if (model instanceof Amalthea) {
val text = textGenerator.generateOutput1(model as Amalthea)
/*saving buffer into file */
val bufferedWriter = new BufferedWriter(new FileWriter(outputFile1))
bufferedWriter.write(text)
bufferedWriter.close
}
// ===== output 2 =====
var outputFile2 = new File(outputFolder, "2.txt")
outputFile2.parentFile.mkdirs
outputFile2.createNewFile
if (model instanceof Amalthea) {
val text = textGenerator.generateOutput2(model)
/*saving buffer into file */
val bufferedWriter = new BufferedWriter(new FileWriter(outputFile2))
bufferedWriter.write(text)
bufferedWriter.close
}
// TODO: save the file here
customObjsStore.logger.info("Script file generated at : " + outputFolder)
}
}
}
}