private Node setupEnd( Double lat2, Double lon2 )
{
Node endNode = db.createNode();
endNode.setProperty( Hub.LATITUDE, lat2);
endNode.setProperty( Hub.LONGITUDE, lon2 );
RelationshipType lat2lon2 = DynamicRelationshipType.withName( lat2.toString() + lon2.toString() );
expander = Traversal.expanderForTypes(
Type.WALK1, Direction.OUTGOING,
Type.HUBBUS1, Direction.OUTGOING,
Type.TRANSFER, Direction.OUTGOING,
Type.WALK2, Direction.OUTGOING,
lat2lon2, Direction.OUTGOING );
Set<String> hubSet = new HashSet<String>();
Map<Node, Double> hits = spatialService.queryWithinDistance( lat2, lon2 );
int i = 0;
for ( Entry<Node, Double> entry : hits.entrySet() )
{
String hubID = (String) entry.getKey().getProperty( Stop.FROMHUB );
if ( !hubSet.contains( hubID ) )
{
for(Node endHub : hubLayer2.query( Hub.HUBID, hubID ) )
{
Relationship walk = endHub.createRelationshipTo( endNode, lat2lon2);
double distanceInKm = (entry.getValue() );
double distanceInMins = Math.round( 20 * distanceInKm * 1e2 ) / 1e2;
walk.setProperty( Connection.COST, distanceInMins*5 );
walk.setProperty( Connection.DISTANCE, distanceInKm );
walk.setProperty( Stop.STOPID, (String)entry.getKey().getProperty( Stop.STOPID ) );
walk.setProperty( Stop.LATITUDE, (Double)entry.getKey().getProperty( Stop.LATITUDE ) );
walk.setProperty( Stop.LONGITUDE, (Double)entry.getKey().getProperty( Stop.LONGITUDE ) );
RelationshipType routeId = DynamicRelationshipType.withName((String) entry.getKey().getProperty( Stop.ROUTEID ));
expander = expander.add( routeId, Direction.OUTGOING );
hubSet.add( hubID );
if ( ++i == 50 ) break;
}