/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package biblivre3.z3950;
import com.k_int.sql.data_dictionary.DatabaseColAttribute;
import com.k_int.sql.data_dictionary.EntityKey;
import com.k_int.sql.data_dictionary.EntityTemplate;
import com.k_int.sql.data_dictionary.UnknownAccessPointException;
import java.io.StringWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
/**
*
* @author Danniel
*/
public class BiblivreEntityKey extends EntityKey {
private java.util.Map key_components = new java.util.HashMap();
public BiblivreEntityKey(EntityTemplate et, ResultSet rs) {
try {
for (Iterator e = et.getKeyAttrs(); e.hasNext();) {
String key_attr_name = (String) e.next();
DatabaseColAttribute dca = (DatabaseColAttribute) et.getAttributeDefinition(key_attr_name);
int colpos = rs.findColumn(dca.getColName());
Object o = null;
switch (rs.getMetaData().getColumnType(colpos)) {
case 2:
o = new Integer(rs.getInt(colpos));
break;
case java.sql.Types.VARCHAR:
try {
o = new String(rs.getBytes(colpos), "UTF-8");
} catch (Exception ex) {
o = rs.getString(colpos);
}
break;
default:
o = rs.getObject(colpos);
break;
}
key_components.put(key_attr_name, o);
}
} catch (SQLException sqle) {
log.error(sqle.getMessage(), sqle);
} catch (NullPointerException npe) {
log.error(npe.getMessage(), npe);
} catch (UnknownAccessPointException uape) {
log.error(uape.getMessage(), uape);
}
}
@Override
public String toString() {
StringWriter sw = new StringWriter();
try {
for (Iterator e = getAttrNames(); e.hasNext();) {
String attrname = (String) e.next();
Object attrval = key_components.get(attrname);
sw.write(attrname);
sw.write("='");
sw.write("" + attrval);
sw.write("'");
if (e.hasNext()) {
sw.write(",");
}
}
} catch (Exception e) {
log.warn("Unable to assemble key string", e);
}
return sw.toString();
}
@Override
public java.util.Map getKeyMap() {
return key_components;
}
@Override
public void addKeyComponent(String attrname, Object attrval) {
key_components.put(attrname, attrval);
}
@Override
public int numComponents() {
return key_components.size();
}
@Override
public Iterator getAttrNames() {
return key_components.keySet().iterator();
}
@Override
public Object getAttrValue(String attrname) {
return key_components.get(attrname);
}
}