Code:
@Repository
public class JdbcObjectDAO implements ObjectDAO {
//****************************************************//
//**********CLASS ATTRIBUTES AND CONTRUCTOR **********//
//****************************************************//
private static final String STORED_PROCEDURE = "dbo.GUI_GET_OBJECT";
private JdbcTemplate jdbcTemplate;
@Autowired
public JdbcObjectDAO(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
//********************************//
//**********DAO METHODS **********//
//********************************//
@Override
public MyObjectCollection getObjectInit(String xmlMessage, String userId) {
CustomStoredProcedureWithRSExtractor proc = new CustomStoredProcedureWithRSExtractor(
jdbcTemplate, STORED_PROCEDURE,
new CustomResultSetExtractorGetListInit());
Map<String, Object> result = proc.execute(xmlMessage, userId);
return (MyObjectCollection) result.get("rs");
}
//*************************************************//
//**********MAPPERS/RESULTSET EXTRACTORS **********//
//*************************************************//
private static final class CustomResultSetExtractorGetListInit implements
ResultSetExtractor<MyObjectCollection> {
@Override
public MyObjectCollection extractData(ResultSet rs) throws SQLException,
DataAccessException {
MyObject myObject = null;
MyObjectCollection objectCollection = new MyObjectCollection();
//This starts after the storedProcedure is executed (almost 50 sec after service is called)
if (rs != null)
while (rs.next())
if (rs.getString("QSDF").equalsIgnoreCase("QSDF")
|| rs.getString("QSDF").equalsIgnoreCase("QSDF")) {
myObject = new MyObject(rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getInt("QSDF"), rs.getInt("QSDF"),rs.getInt("QSDF"), rs.getInt("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"), rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"), rs.getString("QSDF"),rs.getDouble("QSDF"), rs.getDouble("QSDF"),
rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"));
objectCollection.addItem(myObject);
} else if (rs.getString("QSDF").equalsIgnoreCase("QSDF"))
myObject.addStuff(rs.getString("QSDF"),rs.getInt("QSDF"), rs.getInt("QSDF"),rs.getInt("QSDF"), rs.getInt("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),rs.getInt("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"), rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"), rs.getString("QSDF"),rs.getDouble("QSDF"), rs.getDouble("QSDF"),
rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"),rs.getDouble("QSDF"), rs.getString("QSDF"),rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"),rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"),
rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"), rs.getString("QSDF"));
return objectCollection;
}
}
}
And here is the CustomStoredProcedureWithRSExtractor Class I use (I did it this way for architecture reasons):