private String option;
private String type;
private int string_size;
+ private boolean isIndex;
public DBColumn(String name, String option, String type) {
this.name = name;
this.option = option;
this.type = type;
this.string_size = 0;
+ this.isIndex = false;
}
public DBColumn(String name, String option, String type, int size) {
this.option = option;
this.type = type;
this.string_size = size;
+ this.isIndex = false;
}
-
+
public String getName() {
return name;
}
public int getStringSize() {
return string_size;
}
+
+ public boolean isIndex() {
+ return isIndex;
+ }
+
+ public void setIndex(boolean isIndex) {
+ this.isIndex = isIndex;
+ }
public String getColumnString() {
if (DBConstants.VARCHAR.equals(type)) {
protected final void addColumn(DBColumn col) {
columns.add(col);
}
+
+ protected final void setIndexColumn(int index) {
+ columns.get(index).setIndex(true);
+ }
protected final String clipString(String colstr, int str_len, String key) {
String retstr = colstr;
return SqlConnectionManager.executeQuery(query.toString());
}
- public final void createIndexTable(String indexColumn) {
- String queryString = "create index " + getTableName() + "_index on "//$NON-NLS-1$//$NON-NLS-2$
- + getTableName() + CommonConstants.OPEN_BRACKET + indexColumn
- + CommonConstants.CLOSE_BRACKET;
-
- SqlConnectionManager.executeUpdate(queryString);
+ public final void createIndexTable() {
+ int size = columns.size();
+ StringBuffer indexColumns = new StringBuffer();
+
+ for (int i = 0; i < size; i++) {
+ if (columns.get(i).isIndex()) {
+ if (indexColumns.length() > 0) {
+ indexColumns.append(", ");
+ }
+ indexColumns.append(columns.get(i).getName());
+ }
+ }
+
+ if (indexColumns.length() > 0) {
+ String queryString = "create index " + getTableName() + "_index on "//$NON-NLS-1$//$NON-NLS-2$
+ + getTableName() + CommonConstants.OPEN_BRACKET + indexColumns.toString()
+ + CommonConstants.CLOSE_BRACKET;
+
+ SqlConnectionManager.executeUpdate(queryString);
+ }
}
}
for (Map.Entry<String, DBTable> entry : tables.entrySet()) {
DBTable table = entry.getValue();
table.createTable();
+ table.createIndexTable();
}
}
addColumn(new DBColumn(COLUMN.PCADDR.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));
addColumn(new DBColumn(COLUMN.ARGUMENT.name, DBConstants.EMPTY,
DBConstants.VARCHAR, DALimit.FUNCTION_ARGUMENTS_VALUE_LENGTH));
+ setIndexColumn(COLUMN.STARTTIME.index);
}
public List<List<Object>> getFunctionEntryFromDB() {
FunctionEntryDBTable.COLUMN.PCADDR.name;
public static final String SELECT_QUERY =
- "select limit %s %s " + SELECT_COLUMN + " from " + FunctionEntryDBTable.TABLENAME +
- CommonConstants.COMMA + TABLENAME + " where " +
+ "select limit %s %s " + SELECT_COLUMN + " from " + TABLENAME +
+ CommonConstants.COMMA + FunctionEntryDBTable.TABLENAME + " where " +
COLUMN.ENTRYSEQ.name + CommonConstants.EQUAL + FunctionEntryDBTable.COLUMN.SEQ.name +
" and " + COLUMN.ENDTIME.name + " >= %s and " + COLUMN.ENDTIME.name + " <= %s";
addColumn(new DBColumn(COLUMN.ENDTIME.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));
addColumn(new DBColumn(COLUMN.RETURN.name, DBConstants.EMPTY,
DBConstants.DBTYPE_VARCHAR, FUNCTION_RETURN_VALUE_LENGTH));
+ setIndexColumn(COLUMN.ENDTIME.index);
}
public List<List<Object>> getFunctionExitFromDB() {