package com.vst.dao.hibernate;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import com.vst.dao.BuildingObjectDao;
import com.vst.model.Answer;
import com.vst.model.BuildingObject;
import com.vst.model.ConstructionDefect;
import com.vst.model.ConstructionExample;
import com.vst.model.ConstructionType;
import com.vst.model.DangerCategory;
import com.vst.model.DefectType;
import com.vst.model.DefectVarity;
import com.vst.model.DefectZone;
import com.vst.model.DocumentType;
import com.vst.model.Material;
import com.vst.model.ObjectAnswer;
import com.vst.model.ObjectConstruction;
import com.vst.model.ObjectPhoto;
import com.vst.model.Question;
import com.vst.model.QuestionType;
public class BuildingObjectDaoHibernate extends BaseDaoHibernate<BuildingObject> implements BuildingObjectDao {
public List getDocAnswers(String objectId) {
return super.getSession().createQuery("from ObjectAnswer where buildingObjectId =? and question.forObjectStructure=0").setString(0, objectId).list();
}
public List getObjectAnswersAnswers(String objectId) {
return super.getSession().createQuery("from ObjectAnswer where buildingObjectId =? and question.forObjectStructure=1").setString(0, objectId).list();
}
public List getBuildingObjectsForList() {
// List buildingObjectList = getSession().createQuery("select new BuildingObject(objectId,technicalTask,wayToTechnicalTask,(select object(user) from User user where user.id=buildingObject.user.id),name,description,country,region,city,street,house,block,organizationName,organizationZip,organizationCountry,organizationRegion,organizationCity,organizationHouse,organizationStreet,organizationBlock,organizationFlat,headerFamily,headerMiddleName,headerName,organozationPhone,(select object(dangerCategory) from DangerCategory dangerCategory where dangerCategory.dangerCategoryId=buildingObject.dangerCategory.dangerCategoryId),(select object(objectType) from ObjectType objectType where objectType.objectTypeId=buildingObject.objectType.objectTypeId)) from BuildingObject buildingObject").list();
// for (int i = 0; i < buildingObjectList.size(); i++) {
// BuildingObject buildingObject = (BuildingObject) buildingObjectList.get(i);
// List objectAnswers = getSession().createQuery("select new ObjectAnswer(objectAnswerId,objectConstructionId,answerContents,answerComment,buildingObjectId,question) from ObjectAnswer where objectId=?").setString(0, String.valueOf(buildingObject.getObjectId())).list();
// //filling answer 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());
//
// }
// buildingObject.setDocumentationQuestions(objectAnswers);
//
// }
// return buildingObjectList;
return loadObjectsList(null);
}
private List<?> loadObjectsList(Integer buildingObjectId){
List<?> qlist = getSession().createQuery(
"select " +
" q.questionId," +
" q.questionPriority," +
" q.contents," +
" q.forObjectStructure," +
" q.forAllConstructions," +
" q.necessary," +
" q.noVariants," +
" q.fewAnswers," +
" q.questionType," +
" q.documentType" +
" from Question as q left join q.documentType").list();
Map<Integer, Question> qmap = new HashMap<Integer, Question>();
for (Object o : qlist){
Object[] cols = (Object[]) o;
Question question = new Question();
question.setQuestionId((Integer) cols[0]);
question.setQuestionPriority((Integer) cols[1]);
question.setContents((String) cols[2]);
question.setForAllConstructions((Boolean) cols[3]);
question.setForObjectStructure((Boolean) cols[4]);
question.setNecessary((Boolean) cols[5]);
question.setNoVariants((Boolean) cols[6]);
question.setFewAnswers((Boolean) cols[7]);
question.setQuestionType((QuestionType) cols[8]);
if (cols[9] != null) {
question.setDocumentType((DocumentType) cols[9]);
} else {
question.setDocumentType(new DocumentType());
}
// q.setAnswers(new ArrayList<Answer>());
qmap.put(question.getQuestionId(), question);
}
Map<Integer, Answer> amap = new HashMap<Integer, Answer>();
List<?> alist = getSession().createQuery(
"select " +
" answerId, "+
" contents, "+
" answerInterpritation, "+
" letter," +
" question.questionId" +
" from Answer").list();
for (Object o : alist){
Object[] cols = (Object[]) o;
Answer answer = new Answer();
answer.setAnswerId((Integer) cols[0]);
answer.setContents((String) cols[1]);
answer.setAnswerInterpritation((String) cols[2]);
answer.setLetter((String) cols[3]);
Question question = qmap.get((Integer) cols[4]);
if (question!=null) {
question.getAnswers().add(answer);
answer.setQuestion(question);
}
amap.put(answer.getAnswerId(), answer);
}
getSession().createQuery(
"from DangerCategory").list();
getSession().createQuery(
"from ObjectType").list();
getSession().createQuery(
"from User u left join fetch u.roles").list();
String boHQL =
"select new BuildingObject(objectId," +
" technicalTask,wayToTechnicalTask, " +
"(select object(user) from User user " +
" where user.id=buildingObject.user.id), " +
" name, " +
" description, " +
" country, " +
" region, " +
" city, " +
" street, " +
" house, " +
" block, " +
" organizationName, " +
" organizationZip, " +
" organizationCountry, " +
" organizationRegion, " +
" organizationCity, " +
"organizationHouse,organizationStreet,organizationBlock,organizationFlat, " +
"headerFamily,headerMiddleName,headerName,organozationPhone, " +
"(select object(dangerCategory) from DangerCategory dangerCategory " +
" where dangerCategory.dangerCategoryId=buildingObject.dangerCategory.dangerCategoryId), " +
" (select object(objectType) from ObjectType objectType where objectType.objectTypeId=buildingObject.objectType.objectTypeId))" +
" from BuildingObject buildingObject";
List<?> buildingObjectList = null;
if (buildingObjectId ==null) {
buildingObjectList = getSession().createQuery(
boHQL).list();
} else {
boHQL = boHQL + " where buildingObject.objectId=?";
buildingObjectList = getSession().createQuery(
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);
}
List<?> oanswer = null;
String oanswerHQL =
"select oa.objectAnswerId, " +
" a.answerId " +
" from ObjectAnswer oa left join oa.answers as a ";
if (buildingObjectId ==null) {
oanswer = getSession().createQuery(
oanswerHQL).list();
} else {
oanswerHQL = oanswerHQL + " where oa.buildingObjectId=?";
oanswer = getSession().createQuery(
oanswerHQL).setString(0, buildingObjectId.toString()).list();
}
for (Object o : oanswer) {
Object[] cols = (Object[]) o;
ObjectAnswer oa = oaMap.get((Integer) cols[0]);
if (oa != null) {
Answer a = amap.get((Integer) cols[1]);
if (a!=null){
oa.getAnswers().add(a);
}
}
}
return buildingObjectList;
}
public BuildingObject getBuildingObjectForList(Integer buildingObjectId) {
List<?> l = loadObjectsList(buildingObjectId);
if (l.isEmpty()) {
return null;
} else {
return (BuildingObject) l.get(0);
}
}
public BuildingObject getBuildingObjectForBreadCrump(final String objectId) {
return (BuildingObject) super.getSession().createQuery("select new BuildingObject(objectId,name) from BuildingObject where objectId=?").setString(0, objectId).uniqueResult();
}
public List getConstructionDefectsOfType(String constructionTypeId, String buildingObjectId) {
return super.getSession().createQuery("from ConstructionDefect constructionDefect where constructionDefect.exampleId in (select constructionExample.exampleId from ConstructionExample constructionExample where constructionExample.constructionType.constructionTypeId=? AND constructionExample.objectConstructionId in (select objectConstruction.typeId from ObjectConstruction objectConstruction where objectConstruction.objectId=?))").setString(0, constructionTypeId).setString(1, buildingObjectId).list();
}
public DangerCategory getConstructionRecommendedDangerCategory(String buildingObjectId) {
if (getHibernateTemplate().find("from ConstructionExample constructionExample inner join fetch constructionExample.exampleDefects as defects where (defects.dangerCategory.categoryName='A' OR defects.dangerCategory.categoryName='А') AND constructionExample.buildObjectId=" + buildingObjectId).size() != 0) {
return (DangerCategory) super.getSession().createQuery("from DangerCategory dangerCategory where dangerCategory.categoryName='A' OR dangerCategory.categoryName='А'").uniqueResult();
} else {
if (getHibernateTemplate().find("from ConstructionExample constructionExample inner join fetch constructionExample.exampleDefects as defects where (defects.dangerCategory.categoryName='B' OR defects.dangerCategory.categoryName='Б') AND constructionExample.buildObjectId=" + buildingObjectId).size() != 0) {
return (DangerCategory) super.getSession().createQuery("from DangerCategory dangerCategory where dangerCategory.categoryName='B' OR dangerCategory.categoryName='Б'").uniqueResult();
}
}
return (DangerCategory) super.getSession().createQuery("from DangerCategory dangerCategory where dangerCategory.categoryName='C' OR dangerCategory.categoryName='В'").uniqueResult();
}
public List getObjectConstructionsByTypeId(String buildingObjectId, String typeId) {
return super.getSession().createQuery("from ObjectConstruction objConstr where objConstr.objectId=? AND objConstr.constructionType.constructionTypeId=?").setString(0, buildingObjectId).setString(1, typeId).list();
}
public List getObjectGroupedConstructionTypes(String objectId) {
return super.getSession().createQuery("select objConstr.constructionType from ObjectConstruction objConstr where objConstr.objectId=? group by objConstr.constructionType").setString(0, objectId).list();
}
public Integer getObjectConstructionTypeExampleNum(String objectId, String typeId) {
Long res = (Long) super.getSession().createQuery("select count(*) from ConstructionExample example where example.buildObjectId=? AND example.constructionType.constructionTypeId=?").setString(0, objectId).setString(1, typeId).uniqueResult();
return res.intValue();
}
public Integer getExampleNumberByConstructionType(String constructionTypeId, String buildObjectId) {
Long size =
(Long) super.getSession().createQuery("select count(*) from ConstructionExample constructionExample where constructionExample.objectConstructionId=? and constructionExample.buildObjectId=?").setString(0, constructionTypeId).setString(1, buildObjectId).uniqueResult();
return size.intValue();
}
public Integer getObjectConstructionTypeExampleByCategory(String objectId, String typeId, String dangerCategoryName) {
return new Integer(super.getSession().createQuery("from ConstructionExample example inner join fetch example.exampleDefects as defects where example.buildObjectId=? AND example.constructionType.constructionTypeId=? AND defects.dangerCategory.categoryName=?").setString(0, objectId).setString(1, typeId).setString(2, dangerCategoryName).list().size());
}
public List getDocumentationQuestions() {
return getHibernateTemplate().find(
"from Question question " +
" inner join fetch question.questionType as questionType " +
" where questionType.questionTypeId=1 " +
" order by questionPriority,forObjectStructure asc");
}
public void savePreparedDocumentationQuestions(Integer objectId) {
Long objcnt = (Long) getSession().createQuery(
"select count(*) from BuildingObject " +
" where objectId=?")
.setInteger(0, objectId)
.uniqueResult();
if(objcnt==0){
return;
}
Long qcnt = (Long) getSession().createQuery(
"select count(*) from ObjectAnswer as oa" +
" where oa.question.questionType.questionTypeId=1" +
" and oa.buildingObject.objectId=?")
.setInteger(0, objectId)
.uniqueResult();
if (qcnt > 0){
return;
}
List<?> qlist = getSession().createQuery(
"select " +
" q.questionId," +
" q.questionPriority," +
" q.contents," +
" q.forObjectStructure," +
" q.forAllConstructions," +
" q.necessary," +
" q.noVariants," +
" q.fewAnswers," +
" q.questionType" +
" from Question as q").list();
Map<Integer, Question> qmap = new HashMap<Integer, Question>();
for (Object o : qlist){
Object[] cols = (Object[]) o;
Question q = new Question();
q.setQuestionId((Integer) cols[0]);
q.setQuestionPriority((Integer) cols[1]);
q.setContents((String) cols[2]);
q.setForAllConstructions((Boolean) cols[3]);
q.setForObjectStructure((Boolean) cols[4]);
q.setNecessary((Boolean) cols[5]);
q.setNoVariants((Boolean) cols[6]);
q.setFewAnswers((Boolean) cols[7]);
q.setQuestionType((QuestionType) cols[8]);
// q.setAnswers(new ArrayList<Answer>());
qmap.put(q.getQuestionId(), q);
}
Map<Integer, Answer> amap = new HashMap<Integer, Answer>();
List<?> alist = getSession().createQuery(
"select " +
" answerId, "+
" contents, "+
" answerInterpritation, "+
" letter," +
" question.questionId" +
" from Answer").list();
for (Object o : alist){
Object[] cols = (Object[]) o;
Answer answer = new Answer();
answer.setAnswerId((Integer) cols[0]);
answer.setContents((String) cols[1]);
answer.setAnswerInterpritation((String) cols[2]);
answer.setLetter((String) cols[3]);
Question question = qmap.get((Integer) cols[4]);
if (question!=null) {
question.getAnswers().add(answer);
answer.setQuestion(question);
}
amap.put(answer.getAnswerId(), answer);
}
// BuildingObject bo = new BuildingObject(objectId, "dummy");
BuildingObject bo = (BuildingObject) getSession()
.createCriteria(BuildingObject.class)
.add(Restrictions.idEq(objectId))
.setFetchMode("photoes", FetchMode.SELECT)
.setFetchMode("constructionTypes", FetchMode.SELECT)
.setFetchMode("documentationQuestions", FetchMode.SELECT)
.setFetchMode("currentDocumentationQuestions", FetchMode.SELECT)
.setFetchMode("constructionExamples", FetchMode.SELECT)
.setFetchMode("objectQuestions", FetchMode.SELECT)
.setFetchMode("docQuestions", FetchMode.SELECT)
.setFetchMode("currentObjectQuestions", FetchMode.SELECT)
.setFetchMode("levelPlanList", FetchMode.SELECT)
.uniqueResult();
Session sess = getSession();
for(Question question: qmap.values()){
if(question.getQuestionType().getQuestionTypeId()==1){
ObjectAnswer objectAnswer = new ObjectAnswer();
objectAnswer.setBuildingObject(bo);
objectAnswer.setObjectConstruction(null);
objectAnswer.setQuestion(question);
bo.getDocumentationQuestions().add(objectAnswer);
}
}
sess.saveOrUpdate(bo);
}
public List getAnswersByDocumentation(String objectId, String type) {
return super.getSession().createQuery("from ObjectAnswer objectAnswer where objectAnswer.question.questionType.questionTypeId=1 AND objectAnswer.question.forObjectStructure=? AND objectAnswer.buildingObjectId=? order by objectAnswer.question.documentType.documentTypeId asc").setString(0, type).setString(1, objectId).list();
}
public List findBuildingObjectsByName(BuildingObject buildingObject) {
Criteria criteria = super.getSession().createCriteria(BuildingObject.class);
if (buildingObject.isByFragments()) {
criteria.add(Expression.like("name", buildingObject.getName(), MatchMode.ANYWHERE));
} else {
criteria.add(Expression.eq("name", buildingObject.getName()));
}
return criteria.list();
}
public void evict(BuildingObject buildingObject) {
super.getSession().evict(buildingObject);
}
/**
* @see com.vst.dao.BuildingObjectDao#getBuildingObjects(com.vst.model.BuildingObject)
*/
public List getBuildingObjects(final BuildingObject buildingObject) {
return getHibernateTemplate().find("from BuildingObject order by region");
/* Remove the line above and uncomment this code block if you want
to use Hibernate's Query by Example API.
if (buildingObject == null) {
return getHibernateTemplate().find("from BuildingObject");
} else {
// filter on properties set in the buildingObject
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Example ex = Example.create(buildingObject).ignoreCase().enableLike(MatchMode.ANYWHERE);
return session.createCriteria(BuildingObject.class).add(ex).list();
}
};
return (List) getHibernateTemplate().execute(callback);
}*/
}
public List getBuildingObjectsForTree() {
// load light buildings list
List<?> bdList = getSession().createQuery(
"select new BuildingObject( bo.objectId," +
"bo.name," +
"bo.region" +
") " +
"from BuildingObject bo order by region").list();
//index building list
Map<Integer, BuildingObject> ceMap =
new HashMap<Integer, BuildingObject>();
for (Object n : bdList){
BuildingObject bo =
(BuildingObject) n;
// bo.setConstructionTypes(new ArrayList<ObjectConstruction>());
ceMap.put(bo.getObjectId(), bo);
}
// load constructions list
List<?> crows = getSession().createQuery(
"select oc.typeId," +
"oc.description," +
"oc.objectId," +
"m.materialId," +
"m.materialName," +
"ct.constructionTypeId," +
"ct.name" +
" " +
"from ObjectConstruction oc, ConstructionType ct,"+
" Material m where "+
" ct.material.materialId = m.materialId"+
" and oc.constructionType.constructionTypeId = ct.constructionTypeId"+
" and oc.objectId in (select objectId from BuildingObject)").list();
// process references
Map<Integer, ObjectConstruction> coMap =
new HashMap<Integer, ObjectConstruction>();
for (Object o : crows) {
Object[] cols = (Object[]) o;
ObjectConstruction oc = new ObjectConstruction(
(Integer) cols[0],
(String) cols[1], new ConstructionType());
oc.setObjectId((Integer) cols[2]);
// oc.setConstructionExamples(new ArrayList<ConstructionExample>());
coMap.put(oc.getTypeId(), oc);
Material m = new Material();
m.setMaterialId((Integer) cols[3]);
m.setMaterialName((String) cols[4]);
ConstructionType ct = oc.getConstructionType();
ct.setConstructionTypeId((Integer) cols[5]);
ct.setName((String) cols[6]);
oc.setNumberInObject(getExampleNumberByConstructionType(oc.getTypeId().toString(),oc.getObjectId().toString()).intValue());
//System.out.println("NIO:"+oc.getNumberInObject());
BuildingObject bo = ceMap.get(oc.getObjectId());
if (bo !=null) {
bo.getConstructionTypes().add(oc);
}
}
//process examples
List<?> allExamples = getAllExamplesList();
for (Object o : allExamples) {
ConstructionExample ce =
(ConstructionExample) o;
ObjectConstruction oc = coMap.get(ce.getObjectConstructionId());
if(oc != null){
oc.getConstructionExamples().add(ce);
}
}
return bdList;
}
protected List getAllExamplesList(){
List<?> cerows = getSession().createQuery
( // (Integer exampleId, String exampleNumber, String exampleName
"select " +
" ce.exampleId, " +
" ce.exampleRelativeNumber, " +
" ce.exampleName, "+
" ce.objectId, " +
" ce.objectConstructionId " +
"from ConstructionExample as ce "
).list();
List<ConstructionExample> ceList = new ArrayList<ConstructionExample>();
Map<Integer, ConstructionExample> ceMap =
new HashMap<Integer, ConstructionExample>();
for (Object o : cerows) {
Object[] cols = (Object[]) o;
ConstructionExample ce = new ConstructionExample();
ce.setExampleId((Integer) cols[0]);
ce.setExampleRelativeNumber((Integer) cols[1]);
ce.setExampleName((String) cols[2]);
ce.setObjectId((Integer) cols[3]);
ce.setObjectConstructionId((Integer) cols[4]);
ceList.add(ce);
ceMap.put(ce.getExampleId(), ce);
}
List<?> res = getSession().createQuery(
"select "+
" cd.constructionDefectId, "+
" cd.comment, "+
" dt.defectTypeId, "+
" dt.defectTypeName,"+
" dv.varityId, "+
" dv.varityName,"+
" dz.defectZoneId, "+
" dz.defectZoneName,"+
" cd.exampleId"+
" from ConstructionDefect as cd, DefectType as dt, " +
" DefectZone as dz, DefectVarity dv"+
" where cd.defectType.defectTypeId = dt.defectTypeId " +
" and cd.defectZone.defectZoneId = dz.defectZoneId " +
" and cd.defectVarity.varityId = dv.varityId")
.list();
for (Object r : res){
Object[] rescolumns = (Object[]) r;
ConstructionDefect cd = new ConstructionDefect(
(Integer) rescolumns[0], (String) rescolumns[1]);
DefectType dt = new DefectType(
(Integer) rescolumns[2], (String) rescolumns[3]);
DefectVarity dv = new DefectVarity(
(Integer) rescolumns[4], (String) rescolumns[5]);
DefectZone dz = new DefectZone(
(Integer) rescolumns[6], (String) rescolumns[7]);
cd.setDefectType(dt);
cd.setDefectVarity(dv);
cd.setDefectZone(dz);
ConstructionExample ce =
ceMap.get((Integer) rescolumns[8]);
if (ce != null) {
ce.getExampleDefects().add(cd);
}
}
return ceList;
}
public List getConstructionTypesForTree(Integer objectId) {
return getSession().createQuery(
"select new ObjectConstruction( oc.typeId," +
"oc.description," +
"oc.constructionType" +
") " +
"from ObjectConstruction oc where oc.objectId=?").setInteger(0, objectId.intValue()).list();
}
/**
* @see com.vst.dao.BuildingObjectDao#getBuildingObject(Integer objectId)
*/
public BuildingObject getBuildingObject(final Integer objectId) {
BuildingObject buildingObject = (BuildingObject) getObject(objectId);
return buildingObject;
}
/**
* @see com.vst.dao.BuildingObjectDao#saveBuildingObject(BuildingObject buildingObject)
*/
public void saveBuildingObject(final BuildingObject buildingObject) {
super.saveObject(buildingObject);
// super.getSession().flush();
}
/**
* @see com.vst.dao.BuildingObjectDao#removeBuildingObject(Integer objectId)
*/
public void removeBuildingObject(final Integer objectId) {
super.removeObject(objectId);
}
// private Connection getConnection(Properties props) {
//
// String driverURL = "jdbc:mysql://localhost/vstbase?useUnicode=true&characterEncoding=UTF-8";
// Connection dbConn = null;
// try {
// Class.forName("com.mysql.jdbc.Driver");
// dbConn = (Connection) DriverManager.getConnection(driverURL, props);
// return dbConn;
// }
// catch (Exception e) {
// e.printStackTrace();
// return null;
// }
// }
public boolean haveNecessaryQuestionsWithOutAnswers(Integer buildingObjectId, Properties props) throws SQLException {
//
// Connection dbConn = getConnection(props);
// Statement st = (Statement) dbConn.createStatement();
// ResultSet rs = (ResultSet) st.executeQuery("select objectAnswers.* from objectAnswers, questions, answerObjectRelations where objectAnswers.objectId=" + buildingObjectId + " and objectAnswers.questionId=questions.questionId and questions.necessary=true and answerObjectRelations.objectAnswerId=objectAnswers.objectAnswerId and answerObjectRelations.answerId=-1");
//
// if (rs.next()) {
// return true; //есть не отв вопросы
// } else {
// return false;
// }
//
//
return false;
}
public List<ObjectPhoto> getObjectPhotoes(Integer objectId) {
List<ObjectPhoto> res = getSession()
.createQuery(" from ObjectPhoto where objectId=?")
.setString(0, objectId.toString()).list();
return res;
}
private String StringParam(String val){
return val==null ? "" : val;
}
public void updateBuildingObjectByMainForm(Integer objectId,
BuildingObject formObject) {
getSession().createQuery(
"update BuildingObject b set "+
" b.name=:name," +
" b.description=:description," +
" b.country=:country," +
" b.region=:region," +
" b.city=:city," +
" b.street=:street," +
" b.house=:house," +
" b.block=:block," +
" b.organizationName=:organizationName," +
" b.organizationZip=:organizationZip," +
" b.organizationCountry=:organizationCountry," +
" b.organizationRegion=:organizationRegion," +
" b.organizationCity=:organizationCity," +
" b.organizationStreet=:organizationStreet," +
" b.organizationHouse=:organizationHouse," +
" b.organizationBlock=:organizationBlock," +
" b.organizationFlat=:organizationFlat," +
" b.headerFamily=:headerFamily," +
" b.headerMiddleName=:headerMiddleName," +
" b.headerName=:headerName," +
" b.organozationPhone=:organozationPhone," +
" b.researchCompanyName=:researchCompanyName," +
" b.researchCompanyPrincipal=:researchCompanyPrincipal," +
" b.objectType.objectTypeId=:objectType," +
" b.dangerCategory.dangerCategoryId=:dangerCategory," +
" b.user.id=:user" +
" where b.objectId=:objectId")
.setInteger("objectId", objectId)
.setString("name", StringParam(formObject.getName()))
.setString("description", StringParam(formObject.getDescription()))
.setString("country", StringParam(formObject.getCountry()))
.setString("region", StringParam(formObject.getRegion()))
.setString("city", StringParam(formObject.getCity()))
.setString("street", StringParam(formObject.getStreet()))
.setString("house", StringParam(formObject.getHouse()))
.setString("block", StringParam(formObject.getBlock()))
.setString("organizationName", StringParam(formObject.getOrganizationName()))
.setString("organizationZip", StringParam(formObject.getOrganizationZip()))
.setString("organizationCountry", StringParam(formObject.getOrganizationCountry()))
.setString("organizationRegion", StringParam(formObject.getOrganizationRegion()))
.setString("organizationCity", StringParam(formObject.getOrganizationCity()))
.setString("organizationStreet", StringParam(formObject.getOrganizationStreet()))
.setString("organizationHouse", StringParam(formObject.getOrganizationHouse()))
.setString("organizationBlock", StringParam(formObject.getOrganizationBlock()))
.setString("organizationFlat", StringParam(formObject.getOrganizationFlat()))
.setString("headerFamily", StringParam(formObject.getHeaderFamily()))
.setString("headerMiddleName", StringParam(formObject.getHeaderMiddleName()))
.setString("headerName", StringParam(formObject.getHeaderName()))
.setString("organozationPhone", StringParam(formObject.getOrganozationPhone()))
.setString("researchCompanyName", StringParam(formObject.getResearchCompanyName()))
.setString("researchCompanyPrincipal", StringParam(formObject.getResearchCompanyPrincipal()))
.setInteger("objectType", formObject.getObjectType()==null?-1:formObject.getObjectType().getObjectTypeId())
.setInteger("dangerCategory", formObject.getDangerCategory()==null?-1:formObject.getDangerCategory().getDangerCategoryId())
.setInteger("user", formObject.getUser().getId())
.executeUpdate();
}
@Override
Class<BuildingObject> getServiceClass() {
return BuildingObject.class;
}
}