boHQL).setString(0, buildingObjectId.toString()).list();
}
Map<Integer, BuildingObject> boMap = new HashMap<Integer, BuildingObject>();
for(Object o : buildingObjectList){
BuildingObject bo = (BuildingObject) o;
List objectAnswers = getSession().createQuery("select new ObjectAnswer(objectAnswerId,objectConstructionId,answerContents,answerComment,buildingObjectId,question) from ObjectAnswer where objectId=?").setString(0, String.valueOf(bo.getObjectId())).list();
for (int j = 0; j < objectAnswers.size(); j++) {
ObjectAnswer objectAnswer = (ObjectAnswer) objectAnswers.get(j);
objectAnswer.setAnswers(super.getSession().createQuery("from Answer where answerId in (select answers.answerId from ObjectAnswer objectAnswer inner join objectAnswer.answers as answers where objectAnswer.objectAnswerId=?)").setString(0, objectAnswer.getObjectAnswerId().toString()).list());
}
bo.setDocumentationQuestions(objectAnswers);
//we have already lazy list
//bo.setDocQuestions(new ArrayList<ObjectAnswer>());
//bo.setObjectQuestions(new ArrayList<ObjectAnswer>());
//bo.setDocumentationQuestions(new ArrayList<ObjectAnswer>());
boMap.put(bo.getObjectId(), bo);
}
String oaHQL = "select objectAnswerId, " +
" buildingObjectId, " +
" answerContents, " +
" answerComment, " +
" question.questionId from ObjectAnswer";
List<?> oqustion = null;
if (buildingObjectId ==null) {
oqustion = getSession().createQuery(
oaHQL).list();
} else {
oaHQL = oaHQL + " where buildingObjectId=?";
oqustion = getSession().createQuery(
oaHQL).setString(0, buildingObjectId.toString()).list();
}
Map<Integer, ObjectAnswer> oaMap = new HashMap<Integer, ObjectAnswer>();
for (Object o : oqustion) {
Object[] cols = (Object[]) o;
ObjectAnswer oa = new ObjectAnswer();
oa.setObjectAnswerId((Integer) cols[0]);
oa.setBuildingObjectId((Integer) cols[1]);
oa.setAnswerContents((String) cols[2]);
oa.setAnswerComment((String) cols[3]);
// oa.setAnswers(new ArrayList<Answer>());
Question q = qmap.get((Integer) cols[4]);
if (q != null) {
oa.setQuestion(q);
BuildingObject bo = boMap.get(oa.getBuildingObjectId());
if (bo != null) {
oa.setBuildingObject(bo);
if (q.isForObjectStructure()) {
bo.getObjectQuestions().add(oa);
} else {
bo.getDocQuestions().add(oa);
}
if (q.getQuestionType().getQuestionTypeId() == 1){
bo.getDocumentationQuestions().add(oa);
}
}
}
oaMap.put(oa.getObjectAnswerId(), oa);
}