List<DcObject> items = get(df, new int[] {DcObject._ID});
return items.size() > 0 ? items.get(0) : null;
}
public static DcObject getObjectByExternalID(int moduleIdx, String type, String externalID) {
DcModule module = DcModules.get(moduleIdx);
if (module.getField(DcObject._SYS_EXTERNAL_REFERENCES) == null) return null;
DcModule extRefModule = DcModules.get(moduleIdx + DcModules._EXTERNALREFERENCE);
String sql = "SELECT ID FROM " + extRefModule.getTableName() + " WHERE " +
"UPPER(" + extRefModule.getField(ExternalReference._EXTERNAL_ID).getDatabaseFieldName() + ") = UPPER(?) AND " +
"UPPER(" + extRefModule.getField(ExternalReference._EXTERNAL_ID_TYPE).getDatabaseFieldName() + ") = UPPER(?)";
Connection conn = DatabaseManager.getConnection();
DcObject result = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, externalID);
ps.setString(2, type);
ResultSet rs = ps.executeQuery();
String referenceID;
while (rs.next()) {
referenceID = rs.getString(1);
int idx = DcModules.getMappingModIdx(extRefModule.getIndex() - DcModules._EXTERNALREFERENCE, extRefModule.getIndex(), DcObject._SYS_EXTERNAL_REFERENCES);
DcModule mappingMod = DcModules.get(idx);
sql = "SELECT * FROM " + DcModules.get(moduleIdx) + " WHERE ID IN (" +
"SELECT OBJECTID FROM " + mappingMod.getTableName() +
" WHERE " + mappingMod.getField(DcMapping._B_REFERENCED_ID).getDatabaseFieldName() + " = ?)";
PreparedStatement ps2 = conn.prepareStatement(sql);
ps2.setString(1, referenceID);
List<DcObject> items = WorkFlow.getInstance().convert(ps2.executeQuery(), new int[] {DcObject._ID});