Provando ad utilizzare il wizard che consente di modificare in blocco le relazioni di varie entità nel database ho verificato un comportamento anomalo: avendo 2 oggetti di tipo "Server" associati a un oggetto di tipo "Armadio"
tramite la relazione "è contenuto in", e volendo associare i 2 oggetti a un oggetto di tipo "Armadio" diverso, mi è stata presentata la seguente eccezione:
******************************************************************************
Exception Information
Exception Class: class org.postgresql.util.PSQLException
Message: Il valore «"Server"» non è adeguato al tipo «int».
*******************************************************************************
Verificando il contenuto del database ho constatato che nella tabella "Map_ArmadioServer" i campi IdClass1 e IdClass2 degli oggetti coinvolti nella relazione vengono effettivamente memorizzati sotto forma di stringa.
Tuttavia il codice che esegue la query per estrarli si aspetta di ricevere un intero (riga 372 della classe CMDBMap, con invocazione dalla classe WizardMR), e ciò genera l'eccezione.
Ho pertanto risolto il problema modificando così il codice racchiuso nel ciclo while (a partire dalla riga 370 della classe CMDBMap):
while( rs.next() ) {
CMDBclass cl = new CMDBclass(db); //added
cl.selectClassByName(rs.getString(1).replaceAll("\"", "")); //added
ClassBean bean = cl.getBean(); //added
int classID = bean.getId(); //added
ib = new IdBean();
ib.setClassId(/*rs.getInt(1)*/classID); //modified
ib.setId(rs.getInt(2));
ib.setName(rs.getString(3)); // count
result.add(ib);
}
Tutto ciò succede nella versione 0.80, ma ad una rapida visione del sorgente non mi pare che tali linee di codice siano state modificate nella versione 0.90.
Cordiali saluti
Andrea B.