use of com.github.javaparser.ast.Node in project javaparser by javaparser.
the class LexicalDifferenceCalculator method calculatedSyntaxModelAfterListAddition.
// Visible for testing
CalculatedSyntaxModel calculatedSyntaxModelAfterListAddition(CsmElement csm, ObservableProperty observableProperty, NodeList nodeList, int index, Node nodeAdded) {
List<CsmElement> elements = new LinkedList<>();
Node container = nodeList.getParentNodeForChildren();
calculatedSyntaxModelForNode(csm, container, elements, new ListAdditionChange(observableProperty, index, nodeAdded));
return new CalculatedSyntaxModel(elements);
}
use of com.github.javaparser.ast.Node in project javaparser by javaparser.
the class LexicalDifferenceCalculator method calculateListAdditionDifference.
Difference calculateListAdditionDifference(ObservableProperty observableProperty, NodeList nodeList, int index, Node nodeAdded) {
Node container = nodeList.getParentNodeForChildren();
CsmElement element = ConcreteSyntaxModel.forClass(container.getClass());
CalculatedSyntaxModel original = calculatedSyntaxModelForNode(element, container);
CalculatedSyntaxModel after = calculatedSyntaxModelAfterListAddition(element, observableProperty, nodeList, index, nodeAdded);
return Difference.calculate(original, after);
}
use of com.github.javaparser.ast.Node in project javaparser by javaparser.
the class LexicalDifferenceCalculator method calculateListRemovalDifference.
Difference calculateListRemovalDifference(ObservableProperty observableProperty, NodeList nodeList, int index) {
Node container = nodeList.getParentNodeForChildren();
CsmElement element = ConcreteSyntaxModel.forClass(container.getClass());
CalculatedSyntaxModel original = calculatedSyntaxModelForNode(element, container);
CalculatedSyntaxModel after = calculatedSyntaxModelAfterListRemoval(element, observableProperty, nodeList, index);
return Difference.calculate(original, after);
}
use of com.github.javaparser.ast.Node in project javaparser by javaparser.
the class DotPrinter method output.
public void output(Node node, String parentNodeName, String name, StringBuilder builder) {
assertNotNull(node);
NodeMetaModel metaModel = node.getMetaModel();
List<PropertyMetaModel> allPropertyMetaModels = metaModel.getAllPropertyMetaModels();
List<PropertyMetaModel> attributes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isAttribute).filter(PropertyMetaModel::isSingular).collect(toList());
List<PropertyMetaModel> subNodes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNode).filter(PropertyMetaModel::isSingular).collect(toList());
List<PropertyMetaModel> subLists = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNodeList).collect(toList());
String ndName = nextNodeName();
if (outputNodeType)
builder.append(System.lineSeparator() + ndName + " [label=\"" + name + " (" + metaModel.getTypeName() + ")\"];");
else
builder.append(System.lineSeparator() + ndName + " [label=\"" + name + "\"];");
if (parentNodeName != null)
builder.append(System.lineSeparator() + parentNodeName + " -> " + ndName + ";");
for (PropertyMetaModel a : attributes) {
String attrName = nextNodeName();
builder.append(System.lineSeparator() + attrName + " [label=\"" + a.getName() + "='" + a.getValue(node).toString() + "'\"];");
builder.append(System.lineSeparator() + ndName + " -> " + attrName + ";");
}
for (PropertyMetaModel sn : subNodes) {
Node nd = (Node) sn.getValue(node);
if (nd != null)
output(nd, ndName, sn.getName(), builder);
}
for (PropertyMetaModel sl : subLists) {
NodeList<? extends Node> nl = (NodeList<? extends Node>) sl.getValue(node);
if (nl != null && nl.isNonEmpty()) {
String ndLstName = nextNodeName();
builder.append(System.lineSeparator() + ndLstName + " [label=\"" + sl.getName() + "\"];");
builder.append(System.lineSeparator() + ndName + " -> " + ndLstName + ";");
String slName = sl.getName().substring(0, sl.getName().length() - 1);
for (Node nd : nl) output(nd, ndLstName, slName, builder);
}
}
}
use of com.github.javaparser.ast.Node in project javaparser by javaparser.
the class JsonPrinter method output.
public String output(Node node, String name, int level) {
assertNotNull(node);
NodeMetaModel metaModel = node.getMetaModel();
List<PropertyMetaModel> allPropertyMetaModels = metaModel.getAllPropertyMetaModels();
List<PropertyMetaModel> attributes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isAttribute).filter(PropertyMetaModel::isSingular).collect(toList());
List<PropertyMetaModel> subNodes = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNode).filter(PropertyMetaModel::isSingular).collect(toList());
List<PropertyMetaModel> subLists = allPropertyMetaModels.stream().filter(PropertyMetaModel::isNodeList).collect(toList());
final List<String> content = new ArrayList<>();
if (outputNodeType) {
content.add(q("type") + ":" + q(metaModel.getTypeName()));
}
for (PropertyMetaModel attributeMetaModel : attributes) {
content.add(q(attributeMetaModel.getName()) + ":" + q(attributeMetaModel.getValue(node).toString()));
}
for (PropertyMetaModel subNodeMetaModel : subNodes) {
Node value = (Node) subNodeMetaModel.getValue(node);
if (value != null) {
content.add(output(value, subNodeMetaModel.getName(), level + 1));
}
}
for (PropertyMetaModel subListMetaModel : subLists) {
NodeList<? extends Node> subList = (NodeList<? extends Node>) subListMetaModel.getValue(node);
if (subList != null && !subList.isEmpty()) {
final List<String> listContent = new ArrayList<>();
for (Node subListNode : subList) {
listContent.add(output(subListNode, null, level + 1));
}
content.add(listContent.stream().collect(Collectors.joining(",", q(subListMetaModel.getName()) + ":[", "]")));
}
}
if (name == null) {
return content.stream().collect(Collectors.joining(",", "{", "}"));
}
return content.stream().collect(Collectors.joining(",", q(name) + ":{", "}"));
}
Aggregations