package org.lrg.hindsight.classes.version; import java.util.Iterator; import org.lrg.outcode.builder.RelTypes; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; import com.salexandru.xcore.utils.interfaces.IPropertyComputer; import com.salexandru.xcore.utils.metaAnnotation.PropertyComputer; import outcode.metamodel.entity.XClassVersion; @PropertyComputer public class ClassVersionATFD implements IPropertyComputer<Integer, XClassVersion> { @Override public Integer compute(XClassVersion entity) { int atfd = 0; Node node = entity.getUnderlyingObject(); Iterable<Relationship> contains = node.getRelationships(RelTypes.CONTAINS, Direction.OUTGOING); Iterator<Relationship> iterator = contains.iterator(); while (iterator.hasNext()) { Relationship next = iterator.next(); Node member = next.getEndNode(); if (member.hasLabel(Label.label("Method"))) { System.out.println(member); if (member.hasProperty("foreignAccesses")) { Object foreignAccesses = member.getProperty("foreignAccesses"); atfd += (Integer) foreignAccesses; } } } return atfd; } }