From ee5defdbef05226fe317f8263f1471004963b291 Mon Sep 17 00:00:00 2001 From: Dean Fi <djf@informatik.uni-kiel.de> Date: Fri, 11 Dec 2015 11:10:08 +0100 Subject: [PATCH] added matcher --- NeoSuit/src/main/java/controller/Matcher.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 NeoSuit/src/main/java/controller/Matcher.java diff --git a/NeoSuit/src/main/java/controller/Matcher.java b/NeoSuit/src/main/java/controller/Matcher.java new file mode 100644 index 0000000..7fb0412 --- /dev/null +++ b/NeoSuit/src/main/java/controller/Matcher.java @@ -0,0 +1,60 @@ +package controller; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.graphdb.Result; +import org.neo4j.graphdb.Transaction; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import java2sdg.db.Neo4Jdb; + +public class Matcher { + + public ArrayList<String> applyCP(String pathToDB, String pathToPatternFolder) + throws ParserConfigurationException, SAXException, IOException { + + File dir = new File(pathToPatternFolder); + ArrayList<String> matchingCPs = new ArrayList<String>(); + + if (dir.isDirectory()) { + File[] patterns = dir.listFiles(); + + if (patterns.length > 0) { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc; + Element root; + + GraphDatabaseService db = new Neo4Jdb(pathToDB).getGraphDatabaseService(); + + for (int i = 0; i < patterns.length; i++) { + doc = dBuilder.parse(patterns[i]); + doc.normalize(); + root = doc.getDocumentElement(); + String name = root.getElementsByTagName("name").item(0).getTextContent(); + String cpQuery = root.getElementsByTagName("cp").item(0).getTextContent(); + + try (Transaction tx = db.beginTx(); Result result = db.execute(cpQuery)) { + if (result.hasNext()) { + matchingCPs.add(name); + } + tx.success(); + } + } + + db.shutdown(); + } + } + + return matchingCPs; + } +} \ No newline at end of file -- GitLab