Skip to content

Instantly share code, notes, and snippets.

@paoloyx
Created July 16, 2015 10:22
Show Gist options
  • Save paoloyx/2b5ff8c2ab2ef05d4db0 to your computer and use it in GitHub Desktop.
Save paoloyx/2b5ff8c2ab2ef05d4db0 to your computer and use it in GitHub Desktop.
Codice generato
package it.menarini.coaching.dao;
import .MISCOACHINGanswersDAO; // import errato generato
import it.menarini.coaching.model.CoachAnswer;
import it.menarini.coaching.model.CoachAssessment;
import it.menarini.coaching.model.CoachQuestion;
import it.menarini.coaching.model.CoachQuestionGroup;
import it.menarini.coaching.model.CoachQuestionnaire;
import it.menarini.coaching.model.CoachQuestionnaireProduct;
import it.menarini.coaching.model.ComboBox;
import it.menarini.coaching.model.frontend.MainGridItem;
import it.menarini.ws.helper.Utils;
import it.menarini.ws.runtime.DatasourceManager;
import it.menarini.ws.runtime.SearchExpressionManager;
import it.menarini.ws.runtime.annotations.WsgDao;
import it.menarini.ws.runtime.annotations.WsgOperation;
import it.menarini.ws.runtime.annotations.WsgParameter;
import it.menarini.ws.runtime.beans.SearchRequest;
import it.menarini.ws.runtime.sql.PageManagerWrapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
@Component
@WsgDao("MISCOACHINGassessments")
public class MISCOACHINGassessmentsDAOImpl implements MISCOACHINGassessmentsDAO {
@Autowired
private DatasourceManager datasourceManager;
@Autowired
private ApplicationContext ctx;
@Autowired
private SearchExpressionManager searchExpressionManager;
final Logger L = LoggerFactory.getLogger(getClass());
@Autowired
private MISCOACHINGanswersDAO miscoachinganswersdao;
private final String serviceName="MIS.COACHING.assessments";
@Override
@WsgOperation("Get the assessments - Return all assessments")
public List<CoachAssessment> searchAssessment (
@WsgParameter("The Context ID") final String contextId,
SearchRequest searchReq
) {
DataSource ds = datasourceManager.getDatasource(serviceName,contextId);
PageManagerWrapper pmw = null;
String jdbcClass = datasourceManager.getDatasourceProperties(serviceName,contextId).getJdbcClass();
try {
pmw = ctx.getBean("PageManagerWrapper."+jdbcClass, PageManagerWrapper.class);
} catch (NoSuchBeanDefinitionException ee) {}
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(ds);
JdbcTemplate jdbcs = new JdbcTemplate(ds);
String sql="select * from coach_assessment";
Map parameters = new HashMap();
if (searchReq!=null) {
//Build attributeMap to be used in the filtering operation: attribuName / db_column_name
HashMap<String,String> attributeMap = new HashMap();
attributeMap.put("compilerCode","COMPILER_CODE/Long");
attributeMap.put("periodStartDate","PERIOD_START_DATE/Timestamp");
attributeMap.put("status","STATUS/String");
attributeMap.put("periodEndDate","PERIOD_START_END/Timestamp");
attributeMap.put("repCode","REP_CODE/Long");
attributeMap.put("compilerRole","COMPILER_ROLE/String");
attributeMap.put("questionnaireId","QUESTIONNAIRE_ID/Long");
attributeMap.put("dateIns","DATE_INS/Timestamp");
attributeMap.put("id","ID/Long");
attributeMap.put("dateUpd","DATE_UPD/Timestamp");
attributeMap.put("answers","$assessments.answersByAssessmentId(ID)/null");
sql = "select * from ("+sql+") view_alias ";
if (searchReq.getFilter()!=null) {
//Build valueMap: map filtering attributes to their values and add as jdbcTemplate namedParameter...
HashMap<String,Object> valueMap = new HashMap<String,Object> ();
String whereClause = searchExpressionManager.renderFilterExpression(searchReq.getFilter(),attributeMap,valueMap);
sql += " where "+whereClause;
//add new namedParameter based on the calculated valueMap...
for (Object key : valueMap.keySet()) { parameters.put(key.toString(), valueMap.get(key) ); }
}
if (searchReq.getOrderAttributes()!=null) {
String orderClause=searchExpressionManager.renderOrderExpression(searchReq.getOrderAttributes(), attributeMap);
sql += " order by "+orderClause;
}
if (searchReq.getPageNumber()>0) {
if (pmw==null) throw new RuntimeException("PageWrapper not available for class "+jdbcClass+"! Paging features disabled !!!");
sql = pmw.renderPagedQuery(sql, searchReq.getPageSize(), searchReq.getPageNumber());
}
}
List<CoachAssessment> returnModel = jdbc.query(sql, parameters, new RowMapper<CoachAssessment>(){
@Override
public CoachAssessment mapRow(ResultSet rs, int rowNum) throws SQLException {
CoachAssessment coachassessment = new CoachAssessment();
coachassessment.setCompilerCode(rs.getLong("COMPILER_CODE"));
coachassessment.setPeriodStartDate(rs.getTimestamp("PERIOD_START_DATE"));
coachassessment.setStatus(rs.getString("STATUS"));
coachassessment.setPeriodEndDate(rs.getTimestamp("PERIOD_START_END"));
coachassessment.setRepCode(rs.getLong("REP_CODE"));
coachassessment.setCompilerRole(rs.getString("COMPILER_ROLE"));
coachassessment.setQuestionnaireId(rs.getLong("QUESTIONNAIRE_ID"));
coachassessment.setDateIns(rs.getTimestamp("DATE_INS"));
coachassessment.setId(rs.getLong("ID"));
coachassessment.setDateUpd(rs.getTimestamp("DATE_UPD"));
try {coachassessment.setAnswers(answersByAssessmentId(contextId,rs.getLong("ID"),null)); } catch (EmptyResultDataAccessException ee) {}
return coachassessment;
}
});
return returnModel;
}
@Override
@WsgOperation("Get the assessments by id - Return assessments by id")
public CoachAssessment assessment (
@WsgParameter("The Context ID") final String contextId,
@WsgParameter("The assessment ID") long id,
SearchRequest searchReq
) {
DataSource ds = datasourceManager.getDatasource(serviceName,contextId);
PageManagerWrapper pmw = null;
String jdbcClass = datasourceManager.getDatasourceProperties(serviceName,contextId).getJdbcClass();
try {
pmw = ctx.getBean("PageManagerWrapper."+jdbcClass, PageManagerWrapper.class);
} catch (NoSuchBeanDefinitionException ee) {}
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(ds);
JdbcTemplate jdbcs = new JdbcTemplate(ds);
String sql="SELECT * FROM coach_assessment a where a.id = :id";
Map parameters = new HashMap();
parameters.put("id", id );
if (searchReq!=null) {
//Build attributeMap to be used in the filtering operation: attribuName / db_column_name
HashMap<String,String> attributeMap = new HashMap();
attributeMap.put("compilerCode","COMPILER_CODE/Long");
attributeMap.put("periodStartDate","PERIOD_START_DATE/Timestamp");
attributeMap.put("status","STATUS/String");
attributeMap.put("periodEndDate","PERIOD_START_END/Timestamp");
attributeMap.put("repCode","REP_CODE/Long");
attributeMap.put("compilerRole","COMPILER_ROLE/String");
attributeMap.put("questionnaireId","QUESTIONNAIRE_ID/Long");
attributeMap.put("dateIns","DATE_INS/Timestamp");
attributeMap.put("id","ID/Long");
attributeMap.put("dateUpd","DATE_UPD/Timestamp");
attributeMap.put("answers","$assessments.answersByAssessmentId(ID)/null");
sql = "select * from ("+sql+") view_alias ";
if (searchReq.getFilter()!=null) {
//Build valueMap: map filtering attributes to their values and add as jdbcTemplate namedParameter...
HashMap<String,Object> valueMap = new HashMap<String,Object> ();
String whereClause = searchExpressionManager.renderFilterExpression(searchReq.getFilter(),attributeMap,valueMap);
sql += " where "+whereClause;
//add new namedParameter based on the calculated valueMap...
for (Object key : valueMap.keySet()) { parameters.put(key.toString(), valueMap.get(key) ); }
}
if (searchReq.getOrderAttributes()!=null) {
String orderClause=searchExpressionManager.renderOrderExpression(searchReq.getOrderAttributes(), attributeMap);
sql += " order by "+orderClause;
}
if (searchReq.getPageNumber()>0) {
if (pmw==null) throw new RuntimeException("PageWrapper not available for class "+jdbcClass+"! Paging features disabled !!!");
sql = pmw.renderPagedQuery(sql, searchReq.getPageSize(), searchReq.getPageNumber());
}
}
CoachAssessment returnModel = jdbc.queryForObject(sql, parameters, new RowMapper<CoachAssessment>(){
@Override
public CoachAssessment mapRow(ResultSet rs, int rowNum) throws SQLException {
CoachAssessment coachassessment = new CoachAssessment();
coachassessment.setCompilerCode(rs.getLong("COMPILER_CODE"));
coachassessment.setPeriodStartDate(rs.getTimestamp("PERIOD_START_DATE"));
coachassessment.setStatus(rs.getString("STATUS"));
coachassessment.setPeriodEndDate(rs.getTimestamp("PERIOD_START_END"));
coachassessment.setRepCode(rs.getLong("REP_CODE"));
coachassessment.setCompilerRole(rs.getString("COMPILER_ROLE"));
coachassessment.setQuestionnaireId(rs.getLong("QUESTIONNAIRE_ID"));
coachassessment.setDateIns(rs.getTimestamp("DATE_INS"));
coachassessment.setId(rs.getLong("ID"));
coachassessment.setDateUpd(rs.getTimestamp("DATE_UPD"));
try {coachassessment.setAnswers(answersByAssessmentId(contextId,rs.getLong("ID"),null)); } catch (EmptyResultDataAccessException ee) {}
return coachassessment;
}
});
return returnModel;
}
@Override
@WsgOperation("Get the list answers of a assessment - Return the list answers of a assessment")
public List<CoachAnswer> answersByAssessmentId (
@WsgParameter("The Context ID") final String contextId,
@WsgParameter("The assessment ID") long id,
SearchRequest searchReq
) {
DataSource ds = datasourceManager.getDatasource(serviceName,contextId);
PageManagerWrapper pmw = null;
String jdbcClass = datasourceManager.getDatasourceProperties(serviceName,contextId).getJdbcClass();
try {
pmw = ctx.getBean("PageManagerWrapper."+jdbcClass, PageManagerWrapper.class);
} catch (NoSuchBeanDefinitionException ee) {}
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(ds);
JdbcTemplate jdbcs = new JdbcTemplate(ds);
String sql="select * from coach_answer where ASSESSMENT_ID = :id";
Map parameters = new HashMap();
parameters.put("id", id );
if (searchReq!=null) {
//Build attributeMap to be used in the filtering operation: attribuName / db_column_name
HashMap<String,String> attributeMap = new HashMap();
attributeMap.put("assessment.id","ASSESSMENT_ID/Long");
attributeMap.put("questionId","QUESTION_ID/Long");
attributeMap.put("proCode","PRO_CODE/String");
attributeMap.put("id","ID/Long");
attributeMap.put("answerText","ANSWER_TEXT/String");
attributeMap.put("productId","PRODUCT_ID/Long");
sql = "select * from ("+sql+") view_alias ";
if (searchReq.getFilter()!=null) {
//Build valueMap: map filtering attributes to their values and add as jdbcTemplate namedParameter...
HashMap<String,Object> valueMap = new HashMap<String,Object> ();
String whereClause = searchExpressionManager.renderFilterExpression(searchReq.getFilter(),attributeMap,valueMap);
sql += " where "+whereClause;
//add new namedParameter based on the calculated valueMap...
for (Object key : valueMap.keySet()) { parameters.put(key.toString(), valueMap.get(key) ); }
}
if (searchReq.getOrderAttributes()!=null) {
String orderClause=searchExpressionManager.renderOrderExpression(searchReq.getOrderAttributes(), attributeMap);
sql += " order by "+orderClause;
}
if (searchReq.getPageNumber()>0) {
if (pmw==null) throw new RuntimeException("PageWrapper not available for class "+jdbcClass+"! Paging features disabled !!!");
sql = pmw.renderPagedQuery(sql, searchReq.getPageSize(), searchReq.getPageNumber());
}
}
List<CoachAnswer> returnModel = jdbc.query(sql, parameters, new RowMapper<CoachAnswer>(){
@Override
public CoachAnswer mapRow(ResultSet rs, int rowNum) throws SQLException {
CoachAssessment assessment = new CoachAssessment();
assessment.setId(rs.getLong("ASSESSMENT_ID"));
CoachAnswer coachanswer = new CoachAnswer();
coachanswer.setQuestionId(rs.getLong("QUESTION_ID"));
coachanswer.setProCode(rs.getString("PRO_CODE"));
coachanswer.setId(rs.getLong("ID"));
coachanswer.setAnswerText(rs.getString("ANSWER_TEXT"));
coachanswer.setProductId(rs.getLong("PRODUCT_ID"));
coachanswer.setAssessment(assessment);
return coachanswer;
}
});
return returnModel;
}
@Override
@WsgOperation("Create new assessment - Provide full CoachAssessment object as parameter")
public Map insertAssessment (@WsgParameter("The Context ID") String contextId,
@WsgParameter("Full CoachAssessment object") CoachAssessment assessment,
SearchRequest searchReq) {
DataSource ds = datasourceManager.getDatasource(serviceName,contextId);
DataSourceTransactionManager dstm = new DataSourceTransactionManager(ds);
TransactionStatus status = dstm.getTransaction(new DefaultTransactionDefinition());
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(ds);
JdbcTemplate jdbcs = new JdbcTemplate(ds);
String sql="insert into coach_assessment (ID, COMPILER_ROLE, DATE_INS, DATE_UPD, PERIOD_START_DATE, PERIOD_START_END, QUESTIONNAIRE_ID, REP_CODE, STATUS, COMPILER_CODE) values (:assessment.id, :assessment.compilerRole, :assessment.dateIns, :assessment.dateUpd, :assessment.periodStartDate, :assessment.periodEndDate, :assessment.questionnaireId, :assessment.repCode, :assessment.status, :assessment.compilerCode)";
Map parameters = new HashMap();
String exceptionMessage = null;
try {
/* PRE Assignment... */
Object preAssign_assessment_id = jdbcs.queryForObject("select seq_coaching_assessment.nextval from dual",Object.class);
/* Binding Parameters evaluation... */
parameters.put("assessment.id", preAssign_assessment_id);
parameters.put("assessment.compilerRole", assessment.getCompilerRole() );
parameters.put("assessment.dateIns", assessment.getDateIns() );
parameters.put("assessment.dateUpd", assessment.getDateUpd() );
parameters.put("assessment.periodStartDate", assessment.getPeriodStartDate() );
parameters.put("assessment.periodEndDate", assessment.getPeriodEndDate() );
parameters.put("assessment.questionnaireId", assessment.getQuestionnaireId() );
parameters.put("assessment.repCode", assessment.getRepCode() );
parameters.put("assessment.status", assessment.getStatus() );
parameters.put("assessment.compilerCode", assessment.getCompilerCode() );
/* MAIN SQL Template... */
jdbc.update(sql, parameters);
/* Call Service... */
if (assessment.getAnswers()!=null) {
Object obj = Utils.setProperty(assessment, "answers.assessment.id", preAssign_assessment_id);
miscoachinganswersdao.addAnswers(contextId,((CoachAssessment) obj).getAnswers(),searchReq);
}
dstm.commit(status);
}
catch (Exception txe) {
dstm.rollback(status);
exceptionMessage = txe.getClass()+"/"+txe.getMessage();
txe.printStackTrace();
}
finally {
if (exceptionMessage!=null) throw new RuntimeException(exceptionMessage);
return parameters;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment