private boolean fillUIPersistFieldsPersons() {
boolean upgraded = false;
ResultSet rs;
DcField fldPersist;
String ID;
String referencedID;
String sql;
for (DcModule module : DcModules.getAllModules()) {
if (module.isAbstract() || module.getType() == DcModule._TYPE_TEMPLATE_MODULE) continue;
DcObject dco = module.getItem();
for (DcField fld : module.getFields()) {
logger.info("Creating persistant field for module: " + module.getTableName() + ": " + fld);
if (fld.getValueType() == DcRepository.ValueTypes._DCOBJECTCOLLECTION) {
if (DcModules.get(fld.getReferenceIdx()).getType() != DcModule._TYPE_ASSOCIATE_MODULE)
continue;
fldPersist = module.getPersistentField(fld.getIndex());
try {
DcModule mm = DcModules.get(DcModules.getMappingModIdx(fld.getModule(), fld.getReferenceIdx(), fld.getIndex()));
sql =
" select objectid, referencedid from " + mm.getTableName() +
" inner join " + DcModules.get(fld.getReferenceIdx()).getTableName() +
" on " + DcModules.get(fld.getReferenceIdx()).getTableName() + ".ID = " + mm.getTableName() + ".referencedID " +
" order by objectid, name";
rs = DatabaseManager.executeSQL(sql);
String prevID = null;
while (rs.next()) {
ID = rs.getString(1);
referencedID = rs.getString(2);
if (!ID.equals(prevID)) {
sql = "update " + dco.getModule().getTableName() + " set " +
fldPersist.getDatabaseFieldName() + " = '" + referencedID + "' " +
"where ID ='" + ID + "'";
DatabaseManager.executeSQL(sql);
}
prevID = ID;