Skip to content
Snippets Groups Projects
Commit f7c788d2 authored by User expired's avatar User expired
Browse files

added precaching for placeholder preparation

parent c93241ab
No related branches found
No related tags found
No related merge requests found
...@@ -42,6 +42,7 @@ import java.util.Set; ...@@ -42,6 +42,7 @@ import java.util.Set;
* @version 2.2 * @version 2.2
*/ */
public class Database { public class Database {
private static final String[] PRECACHED_PLACEHOLDERS;
protected static final byte NW_MODE_CONTINUOUS = 0; protected static final byte NW_MODE_CONTINUOUS = 0;
protected static final byte NW_MODE_DISCRETE = 1; protected static final byte NW_MODE_DISCRETE = 1;
private final String queryEarliestArrivalTimeHomo; private final String queryEarliestArrivalTimeHomo;
...@@ -67,6 +68,16 @@ public class Database { ...@@ -67,6 +68,16 @@ public class Database {
protected Mode mode; protected Mode mode;
protected boolean isIncoming; protected boolean isIncoming;
// Static block
static {
final int preachingLength = 10;
PRECACHED_PLACEHOLDERS = new String[preachingLength];
for (int i = 0; i < preachingLength; ++i) {
PRECACHED_PLACEHOLDERS[i] = preparePlaceHolders(i);
}
}
// Constructor // Constructor
public Database(final ConfigDataset config, final Mode mode, final Direction direction) { public Database(final ConfigDataset config, final Mode mode, final Direction direction) {
...@@ -84,7 +95,7 @@ public class Database { ...@@ -84,7 +95,7 @@ public class Database {
+ " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_D BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_A <= ?"; + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_D BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_A <= ?";
queryLatestDepartureTimeHomo = "SELECT TIME_D, TIME_A, ROUTE_ID FROM " + configSchedule queryLatestDepartureTimeHomo = "SELECT TIME_D, TIME_A, ROUTE_ID FROM " + configSchedule
+ " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_A BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_D >= ?"; + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_A BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_D >= ?";
queryGetAllEdges = "SELECT ID, SOURCE, TARGET, LENGTH, EDGE_MODE, ROUTE_ID FROM " + configEdges; queryGetAllEdges = "SELECT ID, SOURCE, TARGET, LENGTH, EDGE_MODE, ROUTE_ID FROM " + configEdges;
...@@ -742,6 +753,9 @@ public class Database { ...@@ -742,6 +753,9 @@ public class Database {
if (length <= 0) { if (length <= 0) {
return ""; return "";
} }
if (length < PRECACHED_PLACEHOLDERS.length) {
return PRECACHED_PLACEHOLDERS[length];
}
final StringBuilder builder = new StringBuilder((2 * length) - 1); final StringBuilder builder = new StringBuilder((2 * length) - 1);
builder.append("?"); builder.append("?");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment