/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* DefaultResultHandler.java
*
* Created on 26. September 2003, 15:04
*/
package Sirius.server.sql;
import Sirius.server.search.*;
import java.sql.*;
import java.util.*;
/**
* DOCUMENT ME!
*
* @author schlob
* @version $Revision$, $Date$
*/
public class DefaultResultHandler implements ResultHandler {
//~ Instance fields --------------------------------------------------------
private final transient org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass());
//~ Methods ----------------------------------------------------------------
/**
* Creates a new instance of DefaultResultHandler.
*
* @param rs DOCUMENT ME!
* @param q DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws SQLException DOCUMENT ME!
* @throws Exception DOCUMENT ME!
*/
@Override
public Object handle(final ResultSet rs, final Query q) throws SQLException, Exception {
// java.lang.Class resultType =q.getResultType();
final Vector handledResult = new Vector(100, 100);
// konstruktorparameter
final int length = rs.getMetaData().getColumnCount();
// rs.beforeFirst();
while (rs.next()) {
final Object[] values = new Object[length];
for (int i = 0; i < values.length; i++) {
values[i] = rs.getObject(i + 1);
}
handledResult.add(values);
}
handledResult.trimToSize();
if (logger.isDebugEnabled()) {
logger.debug("search result" + handledResult); // NOI18N
}
// if(!(resultType.newInstance() instanceof Createable))
// {
// return handledResult;
//
// }
// else //result is Createable
// {
// Createable c = (Createable )resultType.newInstance();
//
// Vector tmp = new Vector(handledResult.size());
//
// for(int i =0;i < handledResult.size();i++)
// tmp.add(c.newInstance((Object[])handledResult.get(i)));
// //xxx vielleicht in die Schleife oben mit reinziehen
//
// return tmp;
//
//
// }
// auskommentieren wenn obiges wieder aktuell
return handledResult;
}
/**
* DOCUMENT ME!
*
* @param v DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private String toString(final Vector v) {
final StringBuffer buf = new StringBuffer();
buf.append("("); // NOI18N
final Iterator i = v.iterator();
boolean hasNext = i.hasNext();
while (hasNext) {
final Object o = i.next();
buf.append(String.valueOf(o));
hasNext = i.hasNext();
if (hasNext) {
buf.append(","); // NOI18N
}
}
buf.append(")"); // NOI18N
return buf.toString();
}
}