Package er.neo4jadaptor.query.neo4j_eval.retrievers

Source Code of er.neo4jadaptor.query.neo4j_eval.retrievers.PrimaryKeyRetriever

package er.neo4jadaptor.query.neo4j_eval.retrievers;

import java.util.Iterator;

import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.PropertyContainer;
import org.neo4j.graphdb.Relationship;

import com.webobjects.eoaccess.EOAttribute;
import com.webobjects.eoaccess.EOEntity;
import com.webobjects.foundation.NSArray;

import er.neo4jadaptor.ersatz.neo4j.Neo4JTranslator;
import er.neo4jadaptor.query.neo4j_eval.Cost;
import er.neo4jadaptor.storage.neo4j.RelationshipStore;
import er.neo4jadaptor.utils.iteration.Iterators;

/**
* Retrieves object ID.
*
* @author Jedrzej Sobanski
*
* @param <T>
*/
public abstract class PrimaryKeyRetriever<T> implements Retriever<T, Number> {
  @SuppressWarnings("unused")
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(PrimaryKeyRetriever.class);

  private final EOAttribute attribute;
  protected abstract long getId(T t);
 
  public PrimaryKeyRetriever(EOAttribute att) {
    this.attribute = att;
  }
 
  public Iterator<Number> retrieve(T t) {
    long id = getId(t);
    Number ret = (Number) Neo4JTranslator.instance.toNeutralValue(id, attribute);
   
    return Iterators.singleton(ret);
  }
 
  @Override
  public String toString() {
    return attribute.name();
  }
 
  public Cost getCost() {
    return Cost.PRIMARY_KEY;
  }
 
  public static PrimaryKeyRetriever<? extends PropertyContainer> create(EOEntity entity) {
    NSArray<EOAttribute> pks = entity.primaryKeyAttributes();
    EOAttribute pk = pks.get(0);
   
    if (RelationshipStore.shouldBeStoredAsRelationship(entity)) {
      return new PrimaryKeyRetriever<Relationship>(pk) {
        @Override
        protected long getId(Relationship t) {
          return t.getId();
        }
      };
    } else {
      return new PrimaryKeyRetriever<Node>(pk) {
        @Override
        protected long getId(Node t) {
          return t.getId();
        }
      };
    }
  }
}
TOP

Related Classes of er.neo4jadaptor.query.neo4j_eval.retrievers.PrimaryKeyRetriever

TOP
Copyright © 2018 www.massapi.com. 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.