/* * Copyright 2010 Network Engine for Objects in Lund AB [neotechnology.com] * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.neo4j.graphalgo.competition; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.RelationshipType; /** * An entry in the competition. */ public interface CompetitionEntry { /** * Thrown for methods that are not implemented. */ @SuppressWarnings( "serial" ) public class NotImplementedException extends Exception { } /** * Return an implementation of a shortest path algorithm. * * @param maxlength the maximum length to allow searching for shortest paths * @param type the {@link RelationshipType} to traverse. * @param dir the {@link Direction} to traverse relationships in. * @return An implementation of a shortest path algorithm. * @throws NotImplementedException if the method is not implemented. */ ShortestPath shortestPath( int maxlength, RelationshipType type, Direction dir ) throws NotImplementedException; /** * Return an implementation of a shortest path algorithm. * * @param maxlength the maximum length to allow searching for shortest paths * @param type1 the first {@link RelationshipType} * @param dir1 the {@link Direction} for the first {@link RelationshipType} * @param type2 the second {@link RelationshipType} * @param dir2 the {@link Direction} for the second {@link RelationshipType} * @return An implementation of a shortest path algorithm. * @throws NotImplementedException if the method is not implemented. */ ShortestPath shortestPath( int maxlength, RelationshipType type1, Direction dir1, RelationshipType type2, Direction dir2 ) throws NotImplementedException; /** * Return an implementation of a shortest path algorithm. * * @param maxlength the maximum length to allow searching for shortest paths * @param type1 the first {@link RelationshipType} * @param dir1 the {@link Direction} for the first {@link RelationshipType} * @param type2 the second {@link RelationshipType} * @param dir2 the {@link Direction} for the second {@link RelationshipType} * @param more more {@link RelationshipType}s and {@link Direction}s * @return An implementation of a shortest path algorithm. * @throws NotImplementedException if the method is not implemented. */ ShortestPath shortestPath( int maxlength, RelationshipType type1, Direction dir1, RelationshipType type2, Direction dir2, Object... more ) throws NotImplementedException; }