package de.open4me.depot.sql;
import java.rmi.RemoteException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import de.willuhn.datasource.GenericObject;
public class GenericObjectSQL implements GenericObject {
private HashMap<String, Object> data;
private String idfeld;
private String table;
private String pa;
public String getIdfeld() {
return idfeld;
}
public String getTable() {
return table;
}
public GenericObjectSQL(String idfeld, String primaryattr, String table, ResultSet ret) throws SQLException {
this(idfeld, table, ret);
pa = primaryattr;
}
public GenericObjectSQL(String idfeld, String table, ResultSet ret) throws SQLException {
this.idfeld = idfeld;
this.table = table;
this.pa = idfeld;
ResultSetMetaData rsmd = ret.getMetaData();
data = new HashMap<String, Object>();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String name = rsmd.getColumnLabel(i).toLowerCase();
// Doppelte Spaltennamen ggf. umbenennen
if (data.containsKey(name)) {
int nr = 0;
while (data.containsKey(name + nr)) {
nr++;
}
name = (name + nr);
}
data.put(name, ret.getObject(i));
}
}
@Override
public Object getAttribute(String name) throws RemoteException {
return data.get(name);
}
@Override
public String[] getAttributeNames() throws RemoteException {
return data.keySet().toArray(new String[0]);
}
@Override
public String getID() throws RemoteException {
return data.get(idfeld).toString();
}
@Override
public String getPrimaryAttribute() throws RemoteException {
return pa;
}
@Override
public boolean equals(GenericObject other) throws RemoteException {
return false;
}
@Override
public String toString() {
return data.entrySet().toString();
}
public boolean isEmpty(String s) throws RemoteException {
Object o = getAttribute(s);
return (o == null || o.toString().isEmpty());
}
public void setAttribute(String key, Object value) {
data.put(key, value);
}
}