in rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultSetRow.java [203:260]
private void getTablesWithNoPK(){
//case when result set omits PK column, take care of compound PKs too
boolean tableRSHasPK;
Iterator itr = allTableNames.iterator();
while(itr.hasNext()){
tableRSHasPK = false;
String currentTableName = (String)itr.next();
HashSet pks = metadata.getAllPKsForTable(currentTableName);
HashSet pksInRS = new HashSet();
for(int j=1; j<=resultSetSize; j++){
if(currentTableName.equals(tablePropertyNames[j]) &&
isPKColumn[j] ){
pksInRS.add(columnPropertyNames[j]);
}
}
//if pks null, means its classic case when all cols should be PKs
if(pks == null){
tableRSHasPK = true;
}
//case when there were cols in cfg but could not find any PK in it and no ID column in cfg
else if(pks != null && pks.size()==1 && pks.contains("")){
tableRSHasPK = false;
}
else if(pks != null && pksInRS.size() == pks.size()){
Iterator itr1 = pks.iterator();
int indx=0;
while(itr1.hasNext()){
if(!pksInRS.contains((String)itr1.next())){
indx++;
}
}
if(indx == 0){
if (this.logger.isDebugEnabled()) {
this.logger.debug("has PK TRUE - matched");
}
tableRSHasPK = true;
}else{
if (this.logger.isDebugEnabled()) {
this.logger.debug("has PK FALSE- mismatched");
}
tableRSHasPK = false;
}
}
else{
if (this.logger.isDebugEnabled()) {
this.logger.debug("has PK FALSE - rest all cases");
}
}
if (!tableRSHasPK) tablesWithNoPK.add(currentTableName);
if (this.logger.isDebugEnabled()) {
this.logger.debug("table "+currentTableName+" hasValidPK "+tableRSHasPK);
}
}
}