View Javadoc

1   /*
2    * Criado em 16/11/2004
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
7   import java.util.List;
8   
9   import javax.servlet.http.HttpServletRequest;
10  
11  import org.hibernate.Criteria;
12  import org.hibernate.criterion.Restrictions;
13  
14  import comum.database.Dao;
15  import comum.util.Pagina;
16  
17  import ecar.exception.ECARException;
18  import ecar.pojo.AtributosAtb;
19  import ecar.pojo.SisGrupoAtributoSga;
20  
21  /**
22   * @author felipev
23   */
24  public class AtributoDao extends Dao {
25  
26    /**
27     * Construtor. Chama o Session factory do Hibernate
28     */
29    public AtributoDao(HttpServletRequest request) {
30      super();
31      this.request = request;
32    }
33  
34    /**
35     * Devolve um conjunto com todos os atributos ativos nao opcionais, ou seja,
36     * que são obrigatorios em todas as estruturas
37     * @return
38     */
39    public List getAtributosNaoOpcionais() throws ECARException {
40      List retorno = new ArrayList();
41  
42      AtributosAtb atributo = new AtributosAtb();
43  
44      atributo.setIndAtivoAtb("S");
45      atributo.setIndOpcionalAtb("N");
46  
47      retorno = this.pesquisar(atributo, null);
48  
49      return retorno;
50    }
51  
52    /**
53     * Devolve um conjunto com todos os atributos ativos opcionais
54     * @return
55     */
56    public List getAtributosOpcionais() throws ECARException {
57      List retorno = new ArrayList();
58  
59      AtributosAtb atributo = new AtributosAtb();
60  
61      atributo.setIndAtivoAtb("S");
62      atributo.setIndOpcionalAtb("S");
63  
64      retorno = this.pesquisar(atributo, null);
65  
66      return retorno;
67    }
68  
69    /**
70     * Exclui um atributo, verificando antes se ele possui relação com outras
71     * tabelas. Neste caso, não permite exclusão
72     * @param atributo
73     * @throws ECARException
74     */
75    public void excluir(AtributosAtb atributo) throws ECARException {
76      try {
77        boolean excluir = true;
78  
79        if (contar(atributo.getEstruturaAtributoEttats()) > 0) {
80          excluir = false;
81          throw new ECARException("atributo.exclusao.erro.estruturaAtributoEttats");
82        }
83        if (excluir)
84          super.excluir(atributo);
85      } catch (ECARException e) {
86        this.logger.error(e);
87        throw e;
88      }
89    }
90  
91    public void salvar(AtributosAtb atributo) throws ECARException {
92  
93      if (pesquisarDuplos(atributo, new String[] { "nomeAtb", "labelPadraoAtb" }, "codAtb").size() > 0)
94        throw new ECARException("atributo.validacao.registroDuplicado");
95  
96      if (atributo.getIndAtivoAtb() != null && "S".equals(atributo.getIndAtivoAtb())) {
97        if (pesquisarDuplosAtributosAtb(atributo, atributo.getSisGrupoAtributoSga(), atributo.getIndAtivoAtb()))
98          throw new ECARException("atributo.validacao.registroDuplicadoAtivo");
99      }
100 
101     super.salvar(atributo);
102   }
103 
104   public void alterar(AtributosAtb atributo) throws ECARException {
105 
106     if (pesquisarDuplos(atributo, new String[] { "nomeAtb", "labelPadraoAtb" }, "codAtb").size() > 0)
107       throw new ECARException("atributo.validacao.registroDuplicado");
108 
109     if (atributo.getIndAtivoAtb() != null && "S".equals(atributo.getIndAtivoAtb())) {
110       if (pesquisarDuplosAtributosAtb(atributo, atributo.getSisGrupoAtributoSga(), atributo.getIndAtivoAtb()))
111         throw new ECARException("atributo.validacao.registroDuplicadoAtivo");
112     }
113 
114     super.alterar(atributo);
115   }
116 
117   public boolean pesquisarDuplosAtributosAtb(AtributosAtb obj, SisGrupoAtributoSga sisGrupo, String indAtivoAtb) throws ECARException {
118 
119     boolean retorno = false;
120 
121     try {
122 
123       Criteria crits = session.createCriteria(AtributosAtb.class);
124 
125       crits.add(Restrictions.eq("sisGrupoAtributoSga.codSga", (sisGrupo == null ? 0L : sisGrupo.getCodSga())));
126       crits.add(Restrictions.eq("indAtivoAtb", indAtivoAtb));
127       crits.add(Restrictions.ne("codAtb", (obj.getCodAtb() == null ? 0L : obj.getCodAtb()))); // !=
128                                                                                               // codAtb
129 
130       List<AtributosAtb> lista = (List<AtributosAtb>) crits.list();
131 
132       if (lista.size() > 0) {
133         retorno = true;
134       }
135 
136       return retorno;
137 
138     } catch (Exception e) {
139       this.logger.error(e);
140       throw new ECARException("erro.hibernateException");
141     }
142   }
143 
144   public void setAtributosAtb(HttpServletRequest request, AtributosAtb atributo, boolean usarGetParamStr) {
145 
146     if (Pagina.getParam(request, "codigo") != null)
147       atributo.setCodAtb(Long.valueOf(Pagina.getParam(request, "codigo")));
148     else
149       atributo.setCodAtb(null);
150 
151     if (usarGetParamStr) {
152       atributo.setNomeAtb(Pagina.getParamStr(request, "nomeAtb").trim());
153       atributo.setLabelPadraoAtb(Pagina.getParamStr(request, "labelPadraoAtb").trim());
154       atributo.setCodFkAtb(Pagina.getParamStr(request, "codFkAtb").trim());
155       atributo.setNomeFkAtb(Pagina.getParamStr(request, "nomeFkAtb").trim());
156       atributo.setIndAtivoAtb(Pagina.getParamOrDefault(request, "indAtivoAtb", Pagina.NAO));
157       atributo.setIndExclusivoEstruturaAtb(Pagina.getParamOrDefault(request, "indExclusivoEstruturaAtb", Pagina.NAO));
158       atributo.setIndOpcionalAtb(Pagina.getParamOrDefault(request, "indOpcionalAtb", Pagina.NAO));
159       atributo.setDocumentacaoAtb(Pagina.getParamStr(request, "documentacaoAtb").trim());
160     }
161     else {
162       atributo.setNomeAtb(Pagina.getParam(request, "nomeAtb"));
163       atributo.setLabelPadraoAtb(Pagina.getParam(request, "labelPadraoAtb"));
164       atributo.setCodFkAtb(Pagina.getParam(request, "codFkAtb"));
165       atributo.setNomeFkAtb(Pagina.getParam(request, "nomeFkAtb"));
166       atributo.setIndAtivoAtb(Pagina.getParam(request, "indAtivoAtb"));
167       atributo.setIndExclusivoEstruturaAtb(Pagina.getParam(request, "indExclusivoEstruturaAtb"));
168       atributo.setIndOpcionalAtb(Pagina.getParam(request, "indOpcionalAtb"));
169       atributo.setDocumentacaoAtb(Pagina.getParam(request, "documentacaoAtb"));
170     }
171   }
172 }