/*******************************************************************************
* Copyright (c) 2014 Imperial College London
* 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:
* Raul Castro Fernandez - initial API and implementation
******************************************************************************/
package uk.ac.imperial.lsds.java2sdg.codegenerator;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.ac.imperial.lsds.java2sdg.Main;
import uk.ac.imperial.lsds.java2sdg.bricks.SDG.OperatorBlock;
public class CodeGenerator {
private final static Logger log = LoggerFactory.getLogger(CodeGenerator.class.getCanonicalName());
public static List<OperatorBlock> assemble(List<OperatorBlock> ops){
List<OperatorBlock> assembled = CodeGenerator.assembleTE(ops);
return assembled;
}
private static List<OperatorBlock> assembleTE(List<OperatorBlock> ops){
for(OperatorBlock op : ops){
// Check if it is multi-TE
String builtCode = null;
if(op.getTEs().size() > 1){
builtCode = SeepOperatorInternalCodeTemplate.getCodeForMultiOp(op.getTEs());
}
// In case it is single te
else{
builtCode = SeepOperatorInternalCodeTemplate.getCodeForSingleOp(op.getTE());
}
try {
if(builtCode == null){
System.out.println("ERROR HERE");
}
op.setCode(builtCode);
}
catch (Exception e) {
e.printStackTrace();
log.error("Invalid code assigment: "+e.getMessage());
}
}
return ops;
}
private static OperatorBlock getOb(int obId, int workflowId, List<OperatorBlock> obs){
for(int i = 0; i<obs.size(); i++){
OperatorBlock ob = obs.get(i);
if(ob.getId() == obId && ob.getWorkflowId() == workflowId){
return ob;
}
}
return null;
}
}