ResultSet result = null;
PreparedStatement ps = null;
List<TaggingDO> taggingDOs = new ArrayList<TaggingDO>();
try {
TaggingDO taggingDO;
if (resource instanceof CollectionImpl) {
String sql =
"SELECT T.REG_ID, T.REG_TAGGED_TIME FROM REG_TAG T, REG_RESOURCE_TAG RT " +
" WHERE RT.REG_PATH_ID = ? AND RT.REG_RESOURCE_NAME IS NULL " +
"AND RT.REG_TAG_ID=T.REG_ID AND T.REG_TAG_NAME=? ";
if (!userID.equals("*")) {
sql = sql + "AND T.REG_USER_ID=? ";
}
sql = sql + " AND T.REG_TENANT_ID=? AND RT.REG_TENANT_ID=? ";
ps = conn.prepareStatement(sql);
ps.setInt(1, resource.getPathID());
ps.setString(2, tag);
int nextParam = 3;
if (!userID.equals("*")) {
ps.setString(nextParam, userID);
nextParam++;
}
ps.setInt(nextParam, CurrentSession.getTenantId());
nextParam++;
ps.setInt(nextParam, CurrentSession.getTenantId());
} else {
String sql =
"SELECT T.REG_ID, T.REG_TAGGED_TIME FROM REG_TAG T, REG_RESOURCE_TAG RT " +
" WHERE RT.REG_PATH_ID = ? AND RT.REG_RESOURCE_NAME = ? " +
"AND RT.REG_TAG_ID=T.REG_ID AND T.REG_TAG_NAME=? ";
if (!userID.equals("*")) {
sql = sql + "AND T.REG_USER_ID=?";
}
sql = sql + " AND T.REG_TENANT_ID=? AND RT.REG_TENANT_ID=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, resource.getPathID());
ps.setString(2, resource.getName());
ps.setString(3, tag);
int nextParam = 4;
if (!userID.equals("*")) {
ps.setString(nextParam, userID);
nextParam++;
}
ps.setInt(nextParam, CurrentSession.getTenantId());
nextParam++;
ps.setInt(nextParam, CurrentSession.getTenantId());
}
result = ps.executeQuery();
while (result.next()) {
java.util.Date taggedTime = new java.util.Date(
result.getTimestamp(DatabaseConstants.TAGGED_TIME_FIELD).getTime());
taggingDO = new TaggingDO();
taggingDO.setResourcePath(resource.getPath());
taggingDO.setTagName(tag);
taggingDO.setTaggedTime(taggedTime);
taggingDO.setTaggedUserName(userID);
taggingDO.setTagID(result.getLong(DatabaseConstants.ID_FIELD));
taggingDOs.add(taggingDO);
}
return taggingDOs.toArray(new TaggingDO[taggingDOs.size()]);