package edu.isi.karma.kr2rml.template; import java.util.List; import edu.isi.karma.kr2rml.mapping.KR2RMLMappingColumnNameHNodeTranslator; import edu.isi.karma.rep.HNode; import edu.isi.karma.rep.RepFactory; import edu.isi.karma.transformation.tokenizer.PythonTransformationAsURITokenizer; import edu.isi.karma.transformation.tokenizer.PythonTransformationColumnToken; import edu.isi.karma.transformation.tokenizer.PythonTransformationInvalidToken; import edu.isi.karma.transformation.tokenizer.PythonTransformationStringToken; import edu.isi.karma.transformation.tokenizer.PythonTransformationToken; import edu.isi.karma.transformation.tokenizer.PythonTransformationTokenVistor; public class PythonTransformationToTemplateTermSetBuilder extends PythonTransformationTokenVistor{ private HNode referenceHNode; private RepFactory factory; private KR2RMLMappingColumnNameHNodeTranslator translator; private TemplateTermSet tts; public PythonTransformationToTemplateTermSetBuilder(KR2RMLMappingColumnNameHNodeTranslator translator, RepFactory factory) { this.translator = translator; this.factory = factory; } @Override protected void visit(PythonTransformationToken pythonTransformationToken) { } protected void visit(PythonTransformationColumnToken pythonTransformationToken) { HNode columnHNode = referenceHNode.getNeighborByColumnName(pythonTransformationToken.toString(), factory); String columnName = translator.getColumnNameForHNodeId(columnHNode.getId()); tts.addTemplateTermToSet(new ColumnTemplateTerm(columnName)); } protected void visit(PythonTransformationStringToken pythonTransformationToken) { tts.addTemplateTermToSet(new StringTemplateTerm(pythonTransformationToken.toString())); } protected void visit(PythonTransformationInvalidToken pythonTransformationToken) { } public TemplateTermSet translate(String transformationCode, String referenceHNodeId) { List<PythonTransformationToken> tokens = PythonTransformationAsURITokenizer.tokenize(transformationCode); return translate(tokens, referenceHNodeId); } public TemplateTermSet translate(List<PythonTransformationToken> tokens, String referenceHNodeId) { tts = new TemplateTermSet(); referenceHNode = factory.getHNode(referenceHNodeId); this.visit(tokens); return tts; } }