public static String getVertexAnnotations(Config config) {
   return "SELECT TO_TIMESTAMP(V.TIME_A,'SSSSS') ARRIVAL_TIME, TO_TIMESTAMP(V.TIME_D,'SSSSS') DEPARTURE_TIME, R.ROUTE_SHORT_NAME, R.ROUTE_TYPE FROM "
       + config.getDestinationVertexAnnotatedTableEntry().getTableName()
       + " V, "
       + config.getRouteTable()
       + " R WHERE V.ROUTE_ID=R.ROUTE_ID";
 }
 /**
  * Method getInsertVertexString
  *
  * @param config
  * @return
  */
 public static String getInsertVertexString(Config config) {
   return "INSERT INTO "
       + config.getDestinationVertexTableEntry().getTableName()
       + " (\"ID\",\"DISTANCE\",\"ROUTE_ID\",\"STATE\",\"GEOMETRY\") (SELECT ?,?,?,?,GEOMETRY FROM "
       + config.getVertexTable()
       + " WHERE ID=?)";
 }
 /**
  * Method getNodeRouteAnnotations
  *
  * @param config
  * @return
  */
 public static final String getNodeRoutesAnnotations(Config config) {
   return "SELECT R.ROUTE_SHORT_NAME,R.ROUTE_TYPE FROM "
       + config.getRouteTable()
       + " R, "
       + config.getProperty("result.route_vertices")
       + " V"
       + " WHERE R.ID=V.ROUTE_ID";
 }
 public static String getIsoEdges(Config config) {
   return "SELECT E.\"ID\", E.\"SOURCE\", V.\"DISTANCE\" DISTANCE, E.\"TARGET\", E.\"OFFSET\", E.\"LENGTH\",E.\"GEOMETRY\" FROM "
       + config.getDestinationEdgeTableEntry().getTableName()
       + " E, "
       + config.getDestinationVertexTableEntry().getTableName()
       + " V "
       // + " WHERE E.SOURCE = V.ID ORDER BY SOURCE_DISTANCE DESC";
       + " WHERE E.\"SOURCE\" = V.\"ID\" ORDER BY \"OFFSET\" "
       + (config.isIncoming() ? "DESC" : "ASC");
 }
 /**
  * Method getAdjacentLinksQueryString
  *
  * @param config
  * @return
  */
 public static final String getAdjacentLinksQueryString(Config config) {
   if (config.isIncoming()) {
     return "SELECT ID,SOURCE NODE_ID,SOURCE_OUTDEGREE NODE_DEGREE,LENGTH,EDGE_MODE,ROUTE_ID FROM "
         + config.getEdgeTable()
         + " WHERE TARGET=?";
   } else {
     return "SELECT ID,TARGET NODE_ID,TARGET_INDEGREE NODE_DEGREE, LENGTH,EDGE_MODE,ROUTE_ID FROM "
         + config.getEdgeTable()
         + " WHERE SOURCE=?";
   }
 }
 /**
  * Method getNodeQueryString
  *
  * @param config
  * @return
  */
 public static final String getNodeQueryString(Config config) {
   if (config.isIncoming()) {
     return "SELECT SOURCE_C_OUTDEGREE NODE_DEGREE FROM "
         + config.getEdgeTable()
         + " WHERE SOURCE=?";
   } else {
     return "SELECT TARGET_C_INDEGREE  NODE_DEGREE FROM "
         + config.getEdgeTable()
         + " WHERE TARGET=?";
   }
 }
 /**
  * Method getContinuousNodeQueryString
  *
  * @param config
  * @return
  */
 public static final String getContinuousNodeQueryString(Config config) {
   if (config.isIncoming()) {
     return "SELECT SOURCE_C_OUTDEGREE NODE_DEGREE FROM "
         + config.getEdgeTable()
         + " WHERE SOURCE=? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   } else {
     return "SELECT TARGET_C_INDEGREE  NODE_DEGREE FROM "
         + config.getEdgeTable()
         + " WHERE TARGET=? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   }
 }
 /**
  * Method getLinkQueryString
  *
  * @param config
  * @return
  */
 public static String getLinkQueryString(Config config) {
   if (config.isIncoming()) {
     return "SELECT SOURCE,TARGET,SOURCE_OUTDEGREE NODE_DEGREE,LENGTH FROM "
         + config.getEdgeTable()
         + " WHERE ID = ? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   } else {
     return "SELECT SOURCE,TARGET,TARGET_INDEGREE  NODE_DEGREE, LENGTH FROM "
         + config.getEdgeTable()
         + " WHERE ID = ? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   }
 }
 /**
  * Method getAdjacentContinuousLinksQueryString
  *
  * @param config
  * @return
  */
 public static final String getAdjacentContinuousLinksQueryString(Config config) {
   if (config.isIncoming()) {
     return "SELECT ID,SOURCE NODE_ID,SOURCE_C_OUTDEGREE NODE_DEGREE,LENGTH FROM "
         + config.getEdgeTable()
         + " WHERE TARGET=? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   } else {
     return "SELECT ID,TARGET NODE_ID, TARGET_C_INDEGREE NODE_DEGREE,LENGTH FROM "
         + config.getEdgeTable()
         + " WHERE SOURCE=? AND EDGE_MODE="
         + NWMode.CONTINUOUS;
   }
 }
 public static String getEarliestArrivalTimeHeteroString(Config config) {
   return "SELECT TARGET, MIN(TIME_D) TIME_D, MIN(TIME_A) TIME_A, ROUTE_ID FROM ("
       + " SELECT TARGET,TIME_D,TIME_A,ROUTE_ID FROM "
       + config.getScheduleTable()
       + " WHERE SOURCE = ? AND ROUTE_ID IN (%S) AND TIME_D>=? AND TIME_D<=?"
       + " AND SERVICE_ID IN (%S)) C WHERE TIME_A <= ? GROUP BY TARGET, ROUTE_ID";
 }
 public static String getLatestDepartureTimeHeteroString(Config config) {
   return "SELECT SOURCE, MAX(TIME_D) TIME_D, MAX(TIME_A) TIME_A, ROUTE_ID FROM ("
       + " SELECT SOURCE,TIME_D,TIME_A,ROUTE_ID FROM "
       + config.getScheduleTable()
       + " WHERE TARGET = ? AND ROUTE_ID IN (%S) AND TIME_A>=? AND TIME_A<=?"
       + " AND SERVICE_ID IN (%S)) C WHERE TIME_D >= ? GROUP BY SOURCE, ROUTE_ID";
 }
 public static String getLatestDepartureTimeExactString(Config config) {
   return "SELECT MAX(TIME_D) TIME_D, MAX(TIME_A) TIME_A FROM ("
       + " SELECT TIME_D, TIME_A FROM "
       + config.getScheduleTable()
       + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND TIME_A>=? AND TIME_A<=?"
       + " AND SERVICE_ID IN (%S)) C WHERE TIME_D >= ?";
 }
 /**
  * Method getInsertVertexAnnotationString
  *
  * @param config
  * @return
  */
 public static String getInsertVertexAnnotationString(Config config) {
   return "INSERT INTO "
       + config.getDestinationVertexAnnotatedTableEntry().getTableName()
       + " (\"ID\", \"ROUTE_ID\",\"TIME_A\",\"TIME_D\") VALUES (?,?,?,?)";
 }