Skip to content

Commit

Permalink
Update traversal strategy interfaces
Browse files Browse the repository at this point in the history
Id Validation strategy does not throw
  • Loading branch information
BrynCooke committed May 7, 2015
1 parent 759ac78 commit 0666c46
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 29 deletions.
Expand Up @@ -21,7 +21,7 @@
/** /**
* @author Matthias Broecheler (me@matthiasb.com) * @author Matthias Broecheler (me@matthiasb.com)
*/ */
public class TitanGraphStepStrategy extends AbstractTraversalStrategy<TraversalStrategy> { public class TitanGraphStepStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {


private static final TitanGraphStepStrategy INSTANCE = new TitanGraphStepStrategy(); private static final TitanGraphStepStrategy INSTANCE = new TitanGraphStepStrategy();


Expand Down Expand Up @@ -69,12 +69,12 @@ public static TitanGraphStepStrategy instance() {
} }


@Override @Override
public Set<Class<? extends TraversalStrategy>> applyPrior() { public Set<Class<? extends OptimizationStrategy>> applyPrior() {
return TitanTraversalUtil.PRIORS; return TitanTraversalUtil.PRIORS;
} }


@Override @Override
public Set<Class<? extends TraversalStrategy>> applyPost() { public Set<Class<? extends OptimizationStrategy>> applyPost() {
return TitanTraversalUtil.POSTS; return TitanTraversalUtil.POSTS;
} }


Expand Down
Expand Up @@ -16,54 +16,46 @@
/** /**
* Created by bryn on 06/05/15. * Created by bryn on 06/05/15.
*/ */
public class TitanIdsValidationStrategy extends AbstractTraversalStrategy<TraversalStrategy> { public class TitanIdsValidationStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {




private static final TitanIdsValidationStrategy INSTANCE = new TitanIdsValidationStrategy(); private static final TitanIdsValidationStrategy INSTANCE = new TitanIdsValidationStrategy();


static final Set<Class<? extends TraversalStrategy>> POST = ImmutableSet.<Class<? extends TraversalStrategy>>of(
TitanGraphStepStrategy.class);


@Override @Override
public void apply(Traversal.Admin traversal) { public void apply(Traversal.Admin traversal) {
TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(step -> { TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(step -> {
boolean elementFound = false; boolean elementFound = false;
boolean idFound = false; boolean idFound = false;
if(step.returnsVertices()) { if (step.returnsVertices()) {
for (Object id : step.getIds()) { for (Object id : step.getIds()) {
if (id instanceof Long || id instanceof String) { if (id instanceof Long) {
idFound = true; idFound = true;
} else if(id instanceof Vertex) { } else if (id instanceof Vertex) {
elementFound = true; elementFound = true;
} } else {
else {
throw Graph.Exceptions.idArgsMustBeEitherIdOrElement();
} }
} }
} }
if(step.returnsEdges()) { if (step.returnsEdges()) {
for (Object id : step.getIds()) { for (Object id : step.getIds()) {
if (id instanceof RelationIdentifier || id instanceof String) { if (id instanceof RelationIdentifier) {
idFound = true; idFound = true;
} else if(id instanceof Edge) { } else if (id instanceof Edge) {
elementFound = true; elementFound = true;
} } else {
else {
throw Graph.Exceptions.idArgsMustBeEitherIdOrElement();
} }
} }
} }
if(elementFound && idFound) { if (elementFound && idFound) {
throw Graph.Exceptions.idArgsMustBeEitherIdOrElement(); throw Graph.Exceptions.idArgsMustBeEitherIdOrElement();
} }
}); });
} }


@Override
public Set<Class<? extends TraversalStrategy>> applyPost() {
return POST;
}

public static TitanIdsValidationStrategy instance() { public static TitanIdsValidationStrategy instance() {
return INSTANCE; return INSTANCE;
} }
Expand Down
Expand Up @@ -21,7 +21,7 @@
* @author Marko A. Rodriguez (http://markorodriguez.com) * @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Matthias Broecheler (http://matthiasb.com) * @author Matthias Broecheler (http://matthiasb.com)
*/ */
public class TitanLocalQueryOptimizerStrategy extends AbstractTraversalStrategy<TraversalStrategy> { public class TitanLocalQueryOptimizerStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy{


private static final TitanLocalQueryOptimizerStrategy INSTANCE = new TitanLocalQueryOptimizerStrategy(); private static final TitanLocalQueryOptimizerStrategy INSTANCE = new TitanLocalQueryOptimizerStrategy();


Expand Down Expand Up @@ -138,12 +138,12 @@ public static TitanLocalQueryOptimizerStrategy instance() {
} }


@Override @Override
public Set<Class<? extends TraversalStrategy>> applyPrior() { public Set<Class<? extends OptimizationStrategy>> applyPrior() {
return TitanTraversalUtil.PRIORS; return TitanTraversalUtil.PRIORS;
} }


@Override @Override
public Set<Class<? extends TraversalStrategy>> applyPost() { public Set<Class<? extends OptimizationStrategy>> applyPost() {
return TitanTraversalUtil.POSTS; return TitanTraversalUtil.POSTS;
} }


Expand Down
Expand Up @@ -33,9 +33,9 @@
*/ */
public class TitanTraversalUtil { public class TitanTraversalUtil {


static final Set<Class<? extends TraversalStrategy>> POSTS = ImmutableSet.<Class<? extends TraversalStrategy>>of( static final Set<Class<? extends TraversalStrategy.OptimizationStrategy>> POSTS = ImmutableSet.<Class<? extends TraversalStrategy.OptimizationStrategy>>of(
); );
static final Set<Class<? extends TraversalStrategy>> PRIORS = ImmutableSet.<Class<? extends TraversalStrategy>>of( static final Set<Class<? extends TraversalStrategy.OptimizationStrategy>> PRIORS = ImmutableSet.<Class<? extends TraversalStrategy.OptimizationStrategy>>of(
IdentityRemovalStrategy.class); IdentityRemovalStrategy.class);


public static TitanVertex getTitanVertex(Traverser<Vertex> traverser) { public static TitanVertex getTitanVertex(Traverser<Vertex> traverser) {
Expand Down

0 comments on commit 0666c46

Please sign in to comment.