Package com.tinkerpop.blueprints.pgm

Examples of com.tinkerpop.blueprints.pgm.Vertex


   * @param objectsBeingAccessed map of objects currently being accessed, it avoid some loops during loading, but is absolutely NOT a persistent cache
   * @see #loadObject(String, Vertex, Map)
   */
  public DataType loadObject(String objectVertexId, Map<String, Object> objectsBeingAccessed) {
    // If cast fails, well, that's some fuckin mess, no ?
    Vertex objectVertex = GraphUtils.locateVertex(database, Properties.vertexId, objectVertexId);
    return loadObject(objectVertexId, objectVertex, objectsBeingAccessed);
  }
View Full Code Here


   */
  private void loadSingle(Property p, DataType returned, Vertex objectVertex, Map<String, Object> objectsBeingAccessed) {
    Iterator<Edge> iterator = objectVertex.getOutEdges(GraphUtils.getEdgeNameFor(p)).iterator();
    if(iterator.hasNext()) {
      // yeah, there is a value !
      Vertex firstVertex = iterator.next().getInVertex();
      Object value = GraphUtils.createInstance(containedClass.getClassLoader(), firstVertex, repository);
      if(repository.containsKey(value.getClass())) {
        // value requires fields loading
        BluePrintsBackedFinderService blueprints= (BluePrintsBackedFinderService) repository.get(value.getClass());
        p.set(returned, loadObject(firstVertex, objectsBeingAccessed));
View Full Code Here

                  }
                }
            }
        }
        /* We try to locate vertex in graph before to delete it. Indeed, mainly due cascade delete, this vertex may have already been removed */
        Vertex notYetDeleted = service.getDriver().loadVertexFor(objectVertexId, service.getContainedClass().getName());
        if(notYetDeleted!=null)
          database.removeVertex(notYetDeleted);
    }
View Full Code Here

     */
    private void deleteSingle(AbstractBluePrintsBackedFinderService<? extends Graph, ?, ?> service, Graph database, Property p, Object toDelete, Vertex objectVertex, Collection<CascadeType> toCascade, Map<String, Object> objectsBeingAccessed) {
        // there should be only one vertex to delete
        Iterable<Edge> edges = service.getStrategy().getOutEdgesFor(objectVertex, p);
        for (Edge e : edges) {
            Vertex valueVertex = e.getInVertex();
            database.removeEdge(e);
            // Now what to do with vertex ? Delete it ?
            if (toCascade.contains(CascadeType.REMOVE)) {
                // yes, delete it forever (but before, see if there aren't more datas to delete
                Object value = p.get(toDelete);
                if(value!=null) {
                  Vertex knownValueVertex = service.getVertexFor(value, CascadeType.REFRESH, objectsBeingAccessed);
                  if(knownValueVertex.equals(valueVertex))
                    service.deleteOutEdgeVertex(objectVertex, valueVertex, value, objectsBeingAccessed);
                }

            }
        }
View Full Code Here

    private void deleteMap(AbstractBluePrintsBackedFinderService<? extends Graph, ?, ?> service, Graph database, Property p, Object toDelete, Vertex objectVertex, Collection<CascadeType> toCascade, Map<String, Object> objectsBeingAccessed) {
        Iterable<Edge> edges = service.getStrategy().getOutEdgesFor(objectVertex, p);
        Map<?, ?> values = (Map<?, ?>) p.get(toDelete);
        Map<Vertex, Edge> oldVertices = new HashMap<Vertex, Edge>();
        for (Edge e : edges) {
            Vertex inVertex = e.getInVertex();
            oldVertices.put(inVertex, e);
        }
        for (Object v : values.entrySet()) {
            Vertex valueVertex = service.getVertexFor(v, CascadeType.REFRESH, objectsBeingAccessed);
            if (oldVertices.containsKey(valueVertex)) {
                Edge oldEdge = oldVertices.remove(valueVertex);
                database.removeEdge(oldEdge);
                if (toCascade.contains(CascadeType.REMOVE)) {
                    service.deleteOutEdgeVertex(objectVertex, valueVertex, v, objectsBeingAccessed);
View Full Code Here

    private void deleteCollection(AbstractBluePrintsBackedFinderService<? extends Graph, ?, ?> service, Graph database, Property p, Object toDelete, Vertex objectVertex, Collection<CascadeType> toCascade, Map<String, Object> objectsBeingAccessed) {
        Iterable<Edge> edges = service.getStrategy().getOutEdgesFor(objectVertex, p);
        Collection<?> values = (Collection<?>) p.get(toDelete);
        Map<Vertex, Edge> oldVertices = new HashMap<Vertex, Edge>();
        for (Edge e : edges) {
            Vertex inVertex = e.getInVertex();
            oldVertices.put(inVertex, e);
        }
        for (Object v : values) {
          // already heard about null-containing collections ? I do know them, and they're pure EVIL
          if(v!=null) {
              Vertex valueVertex = service.getVertexFor(v, CascadeType.REFRESH, objectsBeingAccessed);
              if (oldVertices.containsKey(valueVertex)) {
                  Edge oldEdge = oldVertices.remove(valueVertex);
                  database.removeEdge(oldEdge);
                  if (toCascade.contains(CascadeType.REMOVE)) {
                      service.deleteOutEdgeVertex(objectVertex, valueVertex, v, objectsBeingAccessed);
View Full Code Here

            // Which is done in that call : as vertex is always looked up before creation, there is little duplication risk
            // or at last that risk should be covered by selected Blueprints implementation
            Collection<Vertex> newVertices = createMapVerticesFor(service, value, cascade, objectsBeingAccessed);
            Map<Vertex, Edge> oldVertices = new HashMap<Vertex, Edge>();
            for (Edge e : existingIterator) {
                Vertex inVertex = e.getInVertex();
                if (newVertices.contains(inVertex)) {
                    newVertices.remove(inVertex);
                } else {
                    oldVertices.put(inVertex, e);
                }
View Full Code Here

            // Which is done in that call : as vertex is always looked up before creation, there is little duplication risk
            // or at elast that risk should be covered by selected Blueprints implementation
            Collection<Vertex> newVertices = createCollectionVerticesFor(service, value, cascade, objectsBeingAccessed);
            Map<Vertex, Edge> oldVertices = new HashMap<Vertex, Edge>();
            for (Edge e : existingIterator) {
                Vertex inVertex = e.getInVertex();
                if (newVertices.contains(inVertex)) {
                    newVertices.remove(inVertex);
                } else {
                    oldVertices.put(inVertex, e);
                }
View Full Code Here

     */
    public <DataType> void updateSingle(AbstractBluePrintsBackedFinderService<? extends Graph, DataType, ?> service, Graph database, Property p, Object toUpdate, Vertex rootVertex, CascadeType cascade, Map<String, Object> objectsBeingAccessed) {
        Object value = p.get(toUpdate);
        // As a convention, null values are never stored but they may replace existing ones, in which case previous values must be removed
        // as a consequenc,v alueVertex is loaded only for non null values
        Vertex valueVertex = null;
        if (value != null) {
            valueVertex = service.getVertexFor(value, cascade, objectsBeingAccessed);
        }
        Edge link = null;
        // Get previously existing vertex
View Full Code Here

    private <DataType> void loadSingle(GraphDatabaseDriver driver, GraphMappingStrategy strategy, ClassLoader classloader, ServiceRepository repository, Property p, DataType returned, Vertex objectVertex, Map<String, Object> objectsBeingAccessed) {
        Iterator<Edge> iterator = strategy.getOutEdgesFor(objectVertex, p).iterator();
        if (iterator.hasNext()) {
            // yeah, there is a value !
            Edge edge = iterator.next();
            Vertex firstVertex = edge.getInVertex();
            Object value = GraphUtils.createInstance(driver, strategy, classloader, firstVertex, p.getType(), repository, objectsBeingAccessed);
            if (repository.containsKey(value.getClass())) {
                // value requires fields loading
                AbstractBluePrintsBackedFinderService<IndexableGraph, DataType, ?> blueprints = (AbstractBluePrintsBackedFinderService<IndexableGraph, DataType, ?>) repository.get(value.getClass());
                value = loadObject(blueprints, firstVertex, objectsBeingAccessed);
View Full Code Here

TOP

Related Classes of com.tinkerpop.blueprints.pgm.Vertex

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.