Package com.springone.myrestaurants.domain

Source Code of com.springone.myrestaurants.domain.TopRatedRestaurantTraverser

package com.springone.myrestaurants.domain;

import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.traversal.BranchOrderingPolicy;
import org.neo4j.graphdb.traversal.BranchSelector;
import org.neo4j.graphdb.traversal.TraversalBranch;
import org.neo4j.graphdb.traversal.TraversalDescription;
import org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl;
import org.springframework.data.graph.core.FieldTraversalDescriptionBuilder;
import org.springframework.data.graph.core.NodeBacked;

import java.lang.reflect.Field;

/**
* @author Michael Hunger
* @since 02.10.2010
* TODO: calculate a rating assigned to each restaurant that is the sum of its stars
* the stars are multiplied by pow(1/2,distance to startNode==path.depth)
*/
class TopRatedRestaurantTraverser implements FieldTraversalDescriptionBuilder {
    @Override
    public TraversalDescription build(NodeBacked start, Field field, String... params) {
        return new TraversalDescriptionImpl()
                .breadthFirst()
                .relationships(DynamicRelationshipType.withName("friends"))
                .order(new BranchOrderingPolicy() {
                    @Override
                    public BranchSelector create(final TraversalBranch startBranch) {
                        return new BranchSelector(){
                            @Override
                            public TraversalBranch next() {
                                TraversalBranch branch=startBranch;
                                while (branch!=null) {
                                    if (branch.depth()<branch.next().depth()) return branch;
                                    branch=branch.next();
                                }
                                return null;
                            }
                        };
                    }
                });
    }

}
TOP

Related Classes of com.springone.myrestaurants.domain.TopRatedRestaurantTraverser

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.