public CampusCourseVO insertCampusCourse(BaseExam exam, String protectedCourseId) throws Exception {
CampusCourseVO campusCourse = new CampusCourseVO();
final TermVO term = new TermVO();
CampusVO campus = new CampusVO();
CourseVO course = new CourseVO();
term.setTermId(DEFUALT_SYS_TERM_ID);
campus = campusService.findByProtectedId(exam.getEscoId());
course = courseService.findByProtectedId(protectedCourseId);
campusCourse.setTerm(term);
campusCourse.setCampus(campus);
campusCourse.setCourse(course);
Integer termId = campusCourse.getTerm().getTermId();
Integer campusId = campusCourse.getCampus().getCampusId();
Integer courseId = campusCourse.getCourse().getCourseId();
String key = termId.toString() + "|" + campusId.toString() + "|" + courseId.toString();
final CampusCourseVO temp = campusCourseMap.get(key);
if (temp == null) {
campusCourseService.insert(campusCourse);
campusCourseMap.put(key, campusCourse);
return campusCourse;
} else {
return temp;
}
}
In essence, I'm now storing CampusCourse value objects in a HashMap after they have been posted. This works quite well because out of the 400,000 student exams that were taken for the given course, only 1500 campuses gave the exam.
BatchControllerDao dao;
public BatchControllerServiceImpl() {
dao = (BatchControllerDao) daoManager.getDao(BatchControllerDao.class);
}
public void startBatch() {
dao.startBatch();
}
public int executeBatch() {
return dao.executeBatch();
}
}
public class SqlMapBatchControllerDao extends SqlMapBaseDao implements BatchControllerDao {
public SqlMapBatchControllerDao(DaoManager daoManager) {
super(daoManager);
}
public void startBatch() {
try {
getSqlMapExecutor().startBatch();
} catch (SQLException e) {
throw new DaoException("Unable to startBatch", e);
}
}
public int executeBatch() {
try {
return getSqlMapExecutor().executeBatch();
} catch (SQLException e) {
throw new DaoException("Unable to startBatch", e);
}
}
}
So, I now only have two questions:
1) Are my above assumption correct?
2) Is this a good way to handle batching using IBatis Dao's?
Thank you for your patients.
Hycel
