package org.simantics.document.linking.report.evaluator; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.simantics.db.ReadGraph; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.Variable; import org.simantics.document.linking.Activator; import org.simantics.document.linking.ontology.DocumentLink; import org.simantics.document.linking.report.DocumentLine; import org.simantics.objmap.graph.annotations.OrderedSetType; /** * Combines child node contents to separate lines. * * If all children return null, the return value is null. * * @author Marko Luukkainen * */ @OrderedSetType(DocumentLink.URIs.EvaluatorTree_Lines) public class Lines extends EvaluatorNode { @Override public String getValue(ReadGraph graph, Variable variable, Map context) throws DatabaseException { String s = ""; for (int i = 0 ; i < children.size(); i++) { String s2 = children.get(i).getValue(graph, variable, context); if (s2 != null) { s+= s2; if (i < children.size()-1) s+=System.getProperty("line.separator"); } } if (s.length() == 0) return null; return s; } @Override public String toString() { return "Lines" ; } @Override public List getLines(ReadGraph graph, Variable variable, Map context) throws DatabaseException { List result = new ArrayList(); for (int i = 0 ; i < children.size(); i++) { result.addAll(children.get(i).getLines(graph, variable, context)); } return result; } @Override public EvaluatorItem copy() { Lines lines = new Lines(); copyChildren(lines); return lines; } @Override public ImageDescriptor getImage() { return Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/text_linespacing.png"); } }