1818import org .apache .tinkerpop .gremlin .structure .Element ;
1919import org .apache .tinkerpop .gremlin .structure .Graph ;
2020import org .apache .tinkerpop .gremlin .structure .Vertex ;
21+ import org .jnosql .artemis .Converters ;
2122import org .jnosql .artemis .Param ;
2223import org .jnosql .artemis .PreparedStatement ;
2324import org .jnosql .artemis .Query ;
3031import java .lang .reflect .InvocationHandler ;
3132import java .lang .reflect .Method ;
3233import java .lang .reflect .Parameter ;
34+ import java .util .Arrays ;
3335import java .util .HashMap ;
3436import java .util .List ;
3537import java .util .Map ;
4749abstract class AbstractGraphRepositoryProxy <T , ID > implements InvocationHandler {
4850
4951
52+ private final SelectQueryConverter converter = new SelectQueryConverter ();
53+ private final DeleteQueryConverter deleteConverter = new DeleteQueryConverter ();
54+
5055 protected abstract ClassRepresentation getClassRepresentation ();
5156
5257 protected abstract Repository getRepository ();
5358
54- protected abstract GraphQueryParser getQueryParser ();
55-
5659 protected abstract Graph getGraph ();
5760
5861 protected abstract GraphConverter getConverter ();
5962
6063 protected abstract GraphTemplate getTemplate ();
6164
65+ protected abstract Converters getConverters ();
66+
6267
6368 @ Override
6469 public Object invoke (Object instance , Method method , Object [] args ) throws Throwable {
@@ -70,9 +75,9 @@ public Object invoke(Object instance, Method method, Object[] args) throws Throw
7075 case DEFAULT :
7176 return method .invoke (getRepository (), args );
7277 case FIND_BY :
73- return executeFindByMethod (method , args , methodName );
78+ return executeFindByMethod (method , args );
7479 case DELETE_BY :
75- return executeDeleteMethod (args , methodName );
80+ return executeDeleteMethod (method , args );
7681 case FIND_ALL :
7782 return executeFindAll (method , args );
7883 case OBJECT_METHOD :
@@ -86,26 +91,24 @@ public Object invoke(Object instance, Method method, Object[] args) throws Throw
8691 }
8792 }
8893
89- private Object executeDeleteMethod (Object [] args , String methodName ) {
90- GraphTraversal <Vertex , Vertex > traversal = getGraph ().traversal ().V ();
91- getQueryParser ().deleteByParse (methodName , args , getClassRepresentation (), traversal );
94+ private Object executeDeleteMethod (Method method , Object [] args ) {
9295
93- List <?> vertices = traversal .toList ();
96+ GraphQueryMethod queryMethod = new GraphQueryMethod (getClassRepresentation (),
97+ getGraph ().traversal ().V (),
98+ getConverters (), method , args );
9499
95- for (Object element : vertices ) {
96- if (Element .class .isInstance (element )) {
97- Element .class .cast (element ).remove ();
98- }
99- }
100+ List <Vertex > vertices = deleteConverter .apply (queryMethod );
101+ vertices .forEach (Vertex ::remove );
100102 return Void .class ;
101103 }
102104
103- private Object executeFindByMethod (Method method , Object [] args , String methodName ) {
105+ private Object executeFindByMethod (Method method , Object [] args ) {
104106 Class <?> classInstance = getClassRepresentation ().getClassInstance ();
105- GraphTraversal <Vertex , Vertex > traversal = getGraph ().traversal ().V ();
106- getQueryParser ().findByParse (methodName , args , getClassRepresentation (), traversal );
107+ GraphQueryMethod queryMethod = new GraphQueryMethod (getClassRepresentation (),
108+ getGraph ().traversal ().V (),
109+ getConverters (), method , args );
107110
108- List <Vertex > vertices = traversal . hasLabel ( getClassRepresentation (). getName ()). toList ( );
111+ List <Vertex > vertices = converter . apply ( queryMethod );
109112 Stream <T > stream = vertices .stream ().map (getConverter ()::toEntity );
110113
111114 return returnObject (stream , classInstance , method );
0 commit comments