Created
July 16, 2015 10:22
-
-
Save paoloyx/2b5ff8c2ab2ef05d4db0 to your computer and use it in GitHub Desktop.
Codice generato
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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