Package com.dooapp.gaedo.properties

Examples of com.dooapp.gaedo.properties.Property


     * @param objectsBeingAccessed map containing subgraph of objects currently being delete, this is used to avoid loops, and NOT as a cache
     */
    public <DataType> void performDelete(AbstractBluePrintsBackedFinderService<? extends Graph, DataType, ?> service, String objectVertexId, Vertex objectVertex, Class<?> valueClass, Map<Property, Collection<CascadeType>> containedProperties, DataType toDelete, CascadeType cascade, Map<String, Object> objectsBeingAccessed) {
        Graph database = service.getDatabase();
        for (Map.Entry<Property, Collection<CascadeType>> entry : containedProperties.entrySet()) {
          Property p = entry.getKey();
            // Static properties are by design not written
            if (!p.hasModifier(Modifier.STATIC) && !Annotations.TRANSIENT.is(p)) {
                // Per default, no operation is cascaded
                CascadeType used = null;
                // However, if property supports that cascade type, we cascade operation
                if (entry.getValue().contains(cascade)) {
                    used = cascade;
                }
                if(used!=null) {
                  Class<?> rawPropertyType = p.getType();
                  Collection<CascadeType> toCascade = containedProperties.get(p);
                  if (Collection.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a collection one");
                      }
                      deleteCollection(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                      // each value should be written as an independant value
                  } else if (Map.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a map one");
                      }
                      deleteMap(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                  } else {
                      deleteSingle(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                  }
View Full Code Here


     * @param cascade              cascade type used to perform this operation, depend if this method is called from a {@link #create(Object)} or an {@link #update(Object)}
     * @param objectsBeingAccessed cache of objects being accessed during that write
     */
    private <DataType> void updateProperties(AbstractBluePrintsBackedFinderService<? extends Graph, DataType, ?> service, Graph database, Object toUpdate, Vertex objectVertex, Map<Property, Collection<CascadeType>> containedProperties, CascadeType cascade, Map<String, Object> objectsBeingAccessed) {
        for (Map.Entry<Property, Collection<CascadeType>> entry : containedProperties.entrySet()) {
            Property p = entry.getKey();
            // Static properties are by design not written
            if (!p.hasModifier(Modifier.STATIC) && !Annotations.TRANSIENT.is(p)) {
                // Per default, no operation is cascaded
                CascadeType used = null;
                // However, if property supports that cascade type, we cascade operation
                if (entry.getValue().contains(cascade)) {
                    used = cascade;
                }
                // We only perform operations on cascaded fields
                if(used!=null) {
                  Class<?> rawPropertyType = p.getType();
                  if (Collection.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a collection one");
                      }
                      updateCollection(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                      // each value should be written as an independant value
                  } else if (Map.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a map one");
                      }
                      updateMap(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                  } else {
                      updateSingle(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                  }
View Full Code Here

      builder.append("\t");
    }
    if(path!=null) {
      Iterator<Property> pathIter = path.iterator();
      while (pathIter.hasNext()) {
        Property property = (Property) pathIter.next();
        builder.append(property.getName());
        if(pathIter.hasNext()) {
          builder.append(".");
        }
      }
    }
View Full Code Here

    boolean returned = getInitialReturned();
    if(path.size()==0) {
      // we've reeached the end
      return matchesVertex(examined, last);
    } else {
      Property evaluated = path.get(0);
      List<Property> remaining =  path.size()>1 ? path.subList(1, path.size()) : new LinkedList<Property>();
      Iterable<Edge> edges = strategy.getOutEdgesFor(examined, evaluated);
      for(Edge e : edges) {
        returned = combineReturnedWith(matchesCollection(e.getVertex(Direction.IN), remaining, evaluated), returned);
      }
View Full Code Here

   */
  @Override
  public boolean matches(Vertex examined) {
    // Navigates to the first target edge and perform etest when reached
    Vertex currentVertex = examined;
    Property finalProperty = null;
    // Counting path length allows us to check if we expect a null value
    int currentPathLength = 0;
    for(Property currentProperty : path) {
      Iterator<Edge> edges = strategy.getOutEdgesFor(currentVertex, currentProperty).iterator();
      if(edges.hasNext()) {
View Full Code Here

    return arrayList;
  }
 
  private void getValues(Entry<Iterable<Vertex>, Iterable<Property>> entry, Iterator<Property> pathIterator, List<Vertex> vertexAccumulator) {
    if(pathIterator.hasNext()) {
      Property current = pathIterator.next();
      getValues(entry, pathIterator, vertexAccumulator);
      List<Vertex> toScan = new LinkedList<Vertex>(vertexAccumulator);
      // clear parameter to let it be populated by result
      vertexAccumulator.clear();
      for(Vertex v : toScan) {
View Full Code Here

   * @param usingProperty property that should be used to find the vertex in the graph (instead of simply relying upon valye type (which is especially useful for numbers). This property can be null
   * @return
   */
  private VertexValueRange findBestMatch(Entry<Iterable<Vertex>, Iterable<Property>> entry, AtomicLong edgesCount, ArrayList<Vertex> verticesToCountEdgesIn, Iterator<Property> pathIterator) {
    if(pathIterator.hasNext()) {
      Property current = pathIterator.next();
      VertexValueRange matching = findBestMatch(entry, edgesCount, verticesToCountEdgesIn, pathIterator);
      // If previous level already returned this entryscore, there is no chance for new one to have less edges ... or we guess so
      if(matching==this) {
        return matching;
      } else {
View Full Code Here

   * Get text associated to field part of basic expression
   * @param expression input expression
   * @return a view of the field
   */
  private String getFieldText(AbstractBasicExpression expression) {
    Property f = expression.getField();
    if(f==null)
      return "this";
    else
      return f.toGenericString();
  }
View Full Code Here

     * @param objectsBeingAccessed map containing subgraph of objects currently being delete, this is used to avoid loops, and NOT as a cache
     */
    public <DataType> void performDelete(AbstractBluePrintsBackedFinderService<? extends Graph, DataType, ?> service, String objectVertexId, Vertex objectVertex, Class<?> valueClass, Map<Property, Collection<CascadeType>> containedProperties, DataType toDelete, CascadeType cascade, Map<String, Object> objectsBeingAccessed) {
        Graph database = service.getDatabase();
        for (Map.Entry<Property, Collection<CascadeType>> entry : containedProperties.entrySet()) {
          Property p = entry.getKey();
            // Static properties are by design not written
            if (!p.hasModifier(Modifier.STATIC) && !Annotations.TRANSIENT.is(p)) {
                // Per default, no operation is cascaded
                CascadeType used = null;
                // However, if property supports that cascade type, we cascade operation
                if (entry.getValue().contains(cascade)) {
                    used = cascade;
                }
                if(used!=null) {
                  Class<?> rawPropertyType = p.getType();
                  Collection<CascadeType> toCascade = containedProperties.get(p);
                  if (Collection.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a collection one");
                      }
                      deleteCollection(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                      // each value should be written as an independant value
                  } else if (Map.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a map one");
                      }
                      deleteMap(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                  } else {
                      deleteSingle(service, database, p, toDelete, objectVertex, toCascade, objectsBeingAccessed);
                  }
View Full Code Here

     * @param cascade              cascade type used to perform this operation, depend if this method is called from a {@link #create(Object)} or an {@link #update(Object)}
     * @param objectsBeingAccessed cache of objects being accessed during that write
     */
    private <DataType> void updateProperties(AbstractBluePrintsBackedFinderService<? extends Graph, DataType, ?> service, Graph database, Object toUpdate, Vertex objectVertex, Map<Property, Collection<CascadeType>> containedProperties, CascadeType cascade, Map<String, Object> objectsBeingAccessed) {
        for (Map.Entry<Property, Collection<CascadeType>> entry : containedProperties.entrySet()) {
            Property p = entry.getKey();
            // Static properties are by design not written
            if (!p.hasModifier(Modifier.STATIC) && !Annotations.TRANSIENT.is(p)) {
                // Per default, no operation is cascaded
                CascadeType used = null;
                // However, if property supports that cascade type, we cascade operation
                if (entry.getValue().contains(cascade)) {
                    used = cascade;
                }
                // We only perform operations on cascaded fields
                if(used!=null) {
                  Class<?> rawPropertyType = p.getType();
                  if (Collection.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a collection one");
                      }
                      updateCollection(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                      // each value should be written as an independant value
                  } else if (Map.class.isAssignableFrom(rawPropertyType)) {
                      if (logger.isLoggable(Level.FINEST)) {
                          logger.log(Level.FINEST, "property " + p.getName() + " is considered a map one");
                      }
                      updateMap(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                  } else {
                      updateSingle(service, database, p, toUpdate, objectVertex, used, objectsBeingAccessed);
                  }
View Full Code Here

TOP

Related Classes of com.dooapp.gaedo.properties.Property

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.