DistintaFlussiInputDAO.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package dao;
  2. import java.sql.CallableStatement;
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5. import java.sql.Types;
  6. import java.util.List;
  7. import org.hibernate.Query;
  8. import org.hibernate.SQLQuery;
  9. import org.hibernate.jdbc.ReturningWork;
  10. import org.hibernate.transform.AliasToBeanResultTransformer;
  11. import org.springframework.stereotype.Repository;
  12. import bean.AppVariables;
  13. import bean.LogModificheBean;
  14. import common.dao.GenericDAO;
  15. import common.dao.IDAO;
  16. import sicura.entities.DistintaFlussiInput;
  17. @Repository
  18. public class DistintaFlussiInputDAO extends GenericDAO<DistintaFlussiInput, Integer> implements IDAO<DistintaFlussiInput, Integer> {
  19. public Integer getFlussiCount(AppVariables appVariables) {
  20. boolean tx=startTransaction();
  21. try {
  22. String sql = generateQuery(appVariables, true);
  23. SQLQuery q = currentSession().createSQLQuery(sql);
  24. Integer res = (Integer)q.uniqueResult();
  25. return res;
  26. } finally {
  27. if (tx)
  28. tx = commit();
  29. }
  30. }
  31. public List<DistintaFlussiInput> getFlussi(AppVariables appVariables, Integer startFrom, Integer size, String orderField) {
  32. boolean tx=startTransaction();
  33. try {
  34. String sql = generateQuery(appVariables, false);
  35. if (orderField==null || "".equals(orderField))
  36. sql += " ORDER BY DataCreazione DESC, ID DESC";
  37. else
  38. sql += getSQLOrderBy(orderField);
  39. SQLQuery q = currentSession().createSQLQuery(sql);
  40. q
  41. .addEntity(DistintaFlussiInput.class);
  42. if (startFrom!=null && size!=null) {
  43. q
  44. .setFirstResult(startFrom)
  45. .setMaxResults(size);
  46. }
  47. List<DistintaFlussiInput> res = null;
  48. try {
  49. res = q.list();
  50. } catch(Exception ex) {
  51. ex.printStackTrace();
  52. }
  53. return res;
  54. } finally {
  55. if (tx)
  56. tx = commit();
  57. }
  58. }
  59. private String generateQuery(AppVariables appVariables, boolean doCount) {
  60. String sql;
  61. if ("UR".equalsIgnoreCase(appVariables.getProfiloLocale()) || "UO".equalsIgnoreCase(appVariables.getProfiloLocale())) {
  62. sql = String.format("Select %s from DistintaFlussiInput WHERE MassiveLoadStatus = 3 AND ( Tipologia='AEA' OR Tipologia='RID' )",
  63. (doCount? "count(*)" : "*"));
  64. } else {
  65. sql = String.format("Select %s from DistintaFlussiInput WHERE MassiveLoadStatus = 3",
  66. (doCount? "count(*)" : "*"));
  67. }
  68. return sql;
  69. }
  70. public String annullaFlusso(Integer id, AppVariables appVariables) {
  71. Integer res = -1;
  72. //boolean tx = true;
  73. boolean tx = startTransaction();
  74. Connection connection = getConnection();
  75. try {
  76. DistintaFlussiInput distinta = readNoTransaction(id);
  77. /*
  78. CREATE PROCEDURE [dbo].[spAnnullaFlussiInput]
  79. @SecurityUserId VARCHAR(15),
  80. @SecurityGuid UNIQUEIDENTIFIER,
  81. @IDDistintaFlussoInput int,
  82. @LastSaved timestamp,
  83. @UserID varchar(10),
  84. @Utente varchar(50),
  85. @Tipologia varchar(20)
  86. */
  87. CallableStatement proc;
  88. try {
  89. proc = connection.prepareCall("{? = call spAnnullaFlussiInput (?,?,?,?,?,?,?)}");
  90. proc.registerOutParameter(1, Types.INTEGER);
  91. proc.setString(2, appVariables.getUserId());
  92. proc.setString(3, appVariables.getGuid());
  93. proc.setObject(4, distinta.getIddistintaFlusso());
  94. proc.setBytes(5, distinta.getLastSaved());
  95. proc.setString(6, appVariables.getUserId());
  96. proc.setString(7, appVariables.getDenominazioneUtente());
  97. proc.setString(8, distinta.getTipologia());
  98. proc.execute();
  99. res = proc.getInt(1);
  100. } catch (SQLException e) {
  101. tx = rollback();
  102. e.printStackTrace();
  103. return e.getMessage();
  104. }
  105. return res.toString();
  106. } finally {
  107. if (tx)
  108. tx = commit();
  109. }
  110. }
  111. public List<LogModificheBean> logStati(Integer id) {
  112. boolean tx = startTransaction();
  113. try {
  114. String sql = "select id, userId, data, ora, utente, null as nomeCampo,null as campoPreModifica, cast(campoPostModifica as varchar) as campoPostModifica " +
  115. " from LogDistintaFlussiInput where IDDistintaFlusso=:id"+
  116. " order by Data, Ora, id";
  117. Query q = currentSession().createSQLQuery(sql);
  118. q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
  119. q.setParameter("id", id);
  120. @SuppressWarnings("unchecked")
  121. List<LogModificheBean> res = q.list();
  122. return res;
  123. } finally {
  124. if (tx)
  125. tx = commit();
  126. }
  127. }
  128. }