Comment vérifier si un noeud existe déja dans Neo4j avant de le créer en Java
Bonjour,
en fait , je dois contruire mon graphdatabase à partir d'un fichier. Donc je dois parcourir le fichier ligne par ligne et à chaque ligne je dois créer deux nodes une pour adresse Ip et l'autre pour page visité et une realation entre ces deux nodes de type visite mais la probléme qu'un meme noeud peut se reproduire dans une autre ligne c'est pour cela que avant de créer les noeuds il faut vérifier s'ils n'existent pas. Il une fonction graph.findNodesByLabelAndProperty qui cherche tous les noeuds qui vérifient certaines conditions s'il existent ou non mais je ne sais pas comment l'utiliser parse que j'ai lu qu'elle retourne un iterator
voici mon premier code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| import java.io.BufferedReader;
import java.io.FileReader;
import org.neo4j.cypher.ExecutionEngine;
import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.ResourceIterable;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class FR {
private static final String DB_Path="C:\\Users/hiba/Downloads/neo4j-community-2.0.1-windows/neo4j-community-2.0.1/data";
String myString;
static GraphDatabaseService Graph2;
static Node ClientIpp;
static Node PageVisitée;
static Relationship myRelationshipp;
void createDb()
{
Graph2 = new GraphDatabaseFactory().newEmbeddedDatabase(DB_Path);
}
private static enum RelTypes implements RelationshipType
{
regarde
}
public static void main(String[] args) throws Exception {
FR blabla=new FR();
blabla.createDb();
FileReader file= new FileReader("c:/exemple.txt");
BufferedReader reader= new BufferedReader(file);
String ligne;
String myString ;
String[] splitArray=null;
boolean existe=false;
int lignenumber=0;
while ((ligne = reader.readLine()) != null )
{
splitArray=ligne.split("[;:///]");
for(int i = 0; i< splitArray.length;i++){
// On affiche chaque élément du tableau
System.out.println("élement n° " + i + "=[" + splitArray[i]+"]");
}
Transaction tx = Graph2.beginTx();
try
{
ResourceIterable <Node> result;
Label client = null; //initialisation
String name = null; //initialisation
result = Graph2.findNodesByLabelAndProperty(client, name, splitArray[2]); //spliArray[2] c'est le champs @Ipp
if (result != null)
{
// ici c'est à dire que le noeud avec ces conditions existe donc je dois retourner le noeud en question
//mais result est de type iterator qui contient tous les noeuds qui vérifient ces conditions
//et je peux pas faire ceci PageVisitée = result
}
else
{ ClientIpp = Graph2.createNode();
ClientIpp.setProperty( "name", splitArray[2]);
ClientIpp.addLabel(client);
}
Label page = null;
result = Graph2.findNodesByLabelAndProperty(page, name, splitArray[11]); //spliArray[11] c'est le champs Page visité par l'@Ipp
if (result != null)
{
// ici c'est à dire que le noeud avec ces conditions existe donc je dois retourner le noeud en question
//mais result est de type iterator qui contient tous les noeuds qui vérifient ces conditions
//et je peux pas faire ceci PageVisitée = result
}
else // le noeud n'existe pas je dois le créer
{
PageVisitée = Graph2.createNode();
PageVisitée.addLabel(page);
PageVisitée.setProperty( "name", splitArray[11]);
}
myRelationshipp = ClientIpp.createRelationshipTo( PageVisitée, RelTypes.regarde);
myRelationshipp.setProperty( "relationship-type", "regarde");
myString = (ClientIpp.getProperty("name").toString())+" "+( myRelationshipp.getProperty("relationship-type").toString()) + " "+ (PageVisitée.getProperty( "name").toString() );
System.out.println(myString);
tx.success();
}
finally
{
tx.finish();
}
lignenumber++;
}
reader.close();
}
} |
Svp aidez moi à resoudre ceci