public Complaint search(Long code) throws RepositoryException, ObjectNotFoundException {
// Query montada para obten��o do tipo de queixa referente ao
// c�digo informado
String sql = "SELECT tipoqueixa FROM scbs_queixa WHERE codigo = '" + code + "'";
int tipoQueixa;
Complaint q = null;
try {
Statement stmt = (Statement) this.mp.getCommunicationChannel();
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
tipoQueixa = (new Integer(rs.getString("tipoqueixa"))).intValue();
} else {
throw new ObjectNotFoundException(ExceptionMessages.EXC_FALHA_PROCURA + " code: "
+ code);
}
rs.close();
stmt.close();
} catch (PersistenceMechanismException e) {
throw new RepositoryException(ExceptionMessages.EXC_FALHA_PROCURA);
} catch (SQLException e) {
throw new SQLPersistenceMechanismException(ExceptionMessages.EXC_FALHA_PROCURA,sql);
}
// Dependendo do tipo da queixa o acesso aos dados � feito
// por um m�todo espec�fico
switch (tipoQueixa) {
case Complaint.QUEIXA_ALIMENTAR:
q = accessFood(code);
break;
case Complaint.QUEIXA_ANIMAL:
q = accessAnimal(code);
break;
case Complaint.QUEIXA_DIVERSA:
q = accessSpecial(code);
break;
default:
throw new IllegalArgumentException();
}
long timestamp = searchTimestamp("scbs_queixa", q.getCodigo() + "");
q.setTimestamp(timestamp);
return q;
}