package net.notdot.bdbdatastore.server; import net.notdot.bdbdatastore.Indexing; import com.google.appengine.entity.Entity; import com.google.protobuf.Message; public class KeyPredicate implements MessagePredicate { protected Indexing.EntityKey key; public KeyPredicate(Indexing.EntityKey key) { this.key = key; } public boolean evaluate(Message msg) { Indexing.EntityKey testkey = (Indexing.EntityKey)msg; Entity.Path path = testkey.getPath(); if(this.key.hasPath()) { if(this.key.getPath().getElementCount() > testkey.getPath().getElementCount()) return false; for(int i = 0; i < this.key.getPath().getElementCount(); i++) { if(!this.key.getPath().getElement(i).equals(path.getElement(i))) return false; } } Entity.Path.Element lastel = path.getElement(path.getElementCount() - 1); if(!this.key.getKind().equals(lastel.getType())) return false; return true; } }