Package ecar.dao

Source Code of ecar.dao.TempCargaIettsBDDao

package ecar.dao;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import comum.database.Dao;
import comum.util.Data;
import comum.util.Util;

import ecar.bean.CargaFinalidadesPPA;
import ecar.bean.CargaProdutosPPA;
import ecar.exception.ECARException;
import ecar.login.SegurancaECAR;
import ecar.permissao.ControlePermissao;
import ecar.pojo.AreaAre;
import ecar.pojo.EfIettFonteTotEfieft;
import ecar.pojo.EfIettFonteTotEfieftPK;
import ecar.pojo.EfItemEstPrevisaoEfiep;
import ecar.pojo.EfItemEstPrevisaoEfiepPK;
import ecar.pojo.EspecieEsp;
import ecar.pojo.EstruturaEtt;
import ecar.pojo.ExercicioExe;
import ecar.pojo.FonteFon;
import ecar.pojo.FonteRecursoFonr;
import ecar.pojo.ItemEstUsutpfuacIettutfa;
import ecar.pojo.ItemEstrtIndResulIettr;
import ecar.pojo.ItemEstrtIndResulLocalIettirl;
import ecar.pojo.ItemEstrutFisicoIettf;
import ecar.pojo.ItemEstrutFisicoIettfPK;
import ecar.pojo.ItemEstrutLocalIettl;
import ecar.pojo.ItemEstrutLocalIettlPK;
import ecar.pojo.ItemEstrutUsuarioIettus;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
import ecar.pojo.LocalItemLit;
import ecar.pojo.OrgaoOrg;
import ecar.pojo.OrgaoPeriodoExercicioOrgPerExe;
import ecar.pojo.OrgaoPeriodoExercicioOrgPerExePK;
import ecar.pojo.PaiFilho;
import ecar.pojo.PeriodoExercicioPerExe;
import ecar.pojo.PoderPeriodoExercicioPodPerExe;
import ecar.pojo.PoderPeriodoExercicioPodPerExePK;
import ecar.pojo.PoderPod;
import ecar.pojo.RecursoRec;
import ecar.pojo.SisAtributoSatb;
import ecar.pojo.SubAreaSare;
import ecar.pojo.TipoFuncAcompTpfa;
import ecar.pojo.UnidadeOrcamentariaPeriodoExercicioUoPerExe;
import ecar.pojo.UnidadeOrcamentariaPeriodoExercicioUoPerExePK;
import ecar.pojo.UnidadeOrcamentariaUO;
import ecar.pojo.UsuarioUsu;
import ecar.util.Dominios;

/**
* DAO tempor�ria para carga/atualizacao em ItemEstruturaIetts
*
* @author aleixo
*/
public class TempCargaIettsBDDao extends Dao {
    /**
     *
     * @param request
     */
    public TempCargaIettsBDDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
   
    private static final int STRING = 1;
    private static int LONG = 2;
   
   
    /**
     * Metodo para lancar Exce��o!
     * @param mensagem
     * @throws ECARException
     */
    private void lancarErro(String mensagem) throws ECARException{
      System.out.println("[ERRO NA ATUALIZACAO] - " + mensagem);
      throw new ECARException(mensagem);
    }

    /**
     * Exibe uma mensagem no console...
     * @param mensagem
     */
    private void msg(String mensagem){
      System.out.println(mensagem);
    }
   
    /**
     * Faz um select simples da classe "objeto", onde "campoDeCondicao" = "valorCampo".
     *
     * @author aleixo
     * @since 27/07/2007
     * @param objeto
     * @param campoDeCondicao
     * @param tipoCampo
     * @param valorCampo
     * @return
     * @throws ECARException
     */
    private Object selectObjeto(String objeto, String campoDeCondicao, int tipoCampo, Object valorCampo, Session s) throws ECARException{
    Query q;
    StringBuilder select;
    Object o;
   
    select = new StringBuilder();
    select.append("select o from " + objeto + " o where o." + campoDeCondicao + " = :valor");
    if(s != null)
      q = s.createQuery(select.toString());
    else
      q = this.session.createQuery(select.toString());
   
    if(tipoCampo == STRING){ //String
      q.setString("valor", (String) valorCampo);
    }
    if(tipoCampo == LONG){ //Long
      q.setLong("valor", ((Long) valorCampo).longValue());
    }
    q.setMaxResults(1);
    o = q.uniqueResult();
    if(o == null){
      System.out.println("++++++++ ERRO: " + objeto + " � Nulo para valor " + valorCampo.toString());
      throw new ECARException(objeto + " is null");
    }
   
    return o;
    }

    /**
     * Efetua carga de a��es para PPA 2008-2011, importando os dados do COP.
     *
     * @author aleixo
     * @since 11/07/2007
     * @throws ECARException
     */
    public void efetuarCargaItens() throws ECARException{
      //ItemEstruturaDao itemDao = new ItemEstruturaDao(request);

      //Buscando a estrutura de n�vel de a��o do PPA 2008-2011
      EstruturaEtt estrutura = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(20));
     
        Transaction tx = null;

        try{
        ArrayList objetos = new ArrayList();

        super.inicializarLogBean();

            tx = session.beginTransaction();
           
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dados.csv"));
      String linha="";
      while ((linha=in.readLine()) != null) {
       
        String[] campos = linha.split(";");
        System.out.println(linha);
          //N�mero do Programa;N�mero do Projeto/Atividade(A��o);Nome;�rg�o;Unidade;Fun��o;Sub Fun��o
          String siglaPrograma = campos[0].trim();
          String siglaAcao = campos[1].trim();
          //String nomeAcao = Util.soPrimeiraLetraToUpperCase(campos[2].trim().replaceAll("\"", ""));
          String nomeAcao = Util.todasPrimeirasLetrasToUpperCase(campos[2]);
          String codIdentOrg = campos[3].trim();
          String codIdentUo = campos[4].trim();
          String codIdentFunc = campos[5].trim();
          String codIdentSubFunc = campos[6].trim();
         
          String sqlBuscaPai = "select pai from ItemEstruturaIett pai where siglaIett = :sigla and pai.estruturaEtt.codEtt = :codEttPai";

          Query q = this.session.createQuery(sqlBuscaPai);
          q.setString("sigla", siglaPrograma);
          q.setLong("codEttPai", 22); //22 � Programa do PPA 2008-2011
          q.setMaxResults(1);
          ItemEstruturaIett iettPai = (ItemEstruturaIett) q.uniqueResult();
          if(iettPai == null)
            throw new ECARException("IettPai Nulo");
         
          System.out.println(iettPai);
          System.out.println("Item do Programa: " + siglaPrograma + " - " + iettPai.getNomeIett() + " - " + iettPai.getEstruturaEtt().getNomeEtt() + " - " + iettPai.getItemEstruturaIett().getNomeIett() + " - " + iettPai.getItemEstruturaIett().getEstruturaEtt().getNomeEtt());
          System.out.println("Nome: " + siglaAcao + " - " + nomeAcao);
          System.out.println("Org/Uo/Func/SubFunc: " + codIdentOrg + "/" + codIdentUo + "/" + codIdentFunc + "/" + codIdentSubFunc);
         
          ItemEstruturaIett iett = new ItemEstruturaIett();
         
          iett.setIndAtivoIett("S");
          iett.setIndBloqPlanejamentoIett("N");
          iett.setIndCriticaIett("N");
          iett.setIndMonitoramentoIett("N");
          iett.setDataInclusaoIett(Data.getDataAtual());
          iett.setDataUltManutencaoIett(Data.getDataAtual());
          iett.setDataInicioIett(Data.parseDate("01/01/2008"));
          iett.setDataTerminoIett(Data.parseDate("31/12/2011"));
          iett.setNivelIett(Integer.valueOf(3));
         
         
          iett.setItemEstruturaIett(iettPai);
          iett.setSiglaIett(siglaAcao);
          iett.setNomeIett(nomeAcao);

           iett.setEstruturaEtt(estrutura);

          /* Buscando unidade or�ament�rias pelo codigo do COP */
           String sql = "select unidade from UnidadeOrcamentariaUO unidade where " +
               " unidade.codigoIdentUo = :codIdentUo" +
               " and unidade.orgaoOrg.codigoIdentOrg = :codIdentOrg";
          q = this.session.createQuery(sql);
          q.setLong("codIdentUo", Long.valueOf(codIdentUo).longValue());
          q.setLong("codIdentOrg", Long.valueOf(codIdentOrg).longValue());
          q.setMaxResults(1);
         
        UnidadeOrcamentariaUO unidade = (UnidadeOrcamentariaUO) q.uniqueResult();
          if(unidade == null)
            throw new ECARException("Unidade Nulo");
        iett.setUnidadeOrcamentariaUO(unidade);

          /* Buscando orgao pelo codigo do COP */
           sql = "select orgao from OrgaoOrg orgao where orgao.codigoIdentOrg = :codIdentOrg";
          q = this.session.createQuery(sql);
          q.setLong("codIdentOrg", Long.valueOf(codIdentOrg).longValue());
          q.setMaxResults(1);
         
        OrgaoOrg orgao = (OrgaoOrg) q.uniqueResult();
          if(orgao == null)
            throw new ECARException("Orgao Nulo");
        iett.setOrgaoOrgByCodOrgaoResponsavel1Iett(orgao);
       
          /* Setando Usuario para funcao GPS*/
          TipoFuncAcompTpfa funcaoGPS = (TipoFuncAcompTpfa) new TipoFuncAcompDao(request).buscar(TipoFuncAcompTpfa.class, Long.valueOf(3)); //3 - GPS, 1 - Administrador
         
          UsuarioUsu user = this.getUsuarioGPSByOrgao(orgao);
         
          if(user != null){
                  ItemEstUsutpfuacIettutfa funcaoItemEstrutura = new ItemEstUsutpfuacIettutfa();
                  funcaoItemEstrutura.setItemEstruturaIett(iett);
                  funcaoItemEstrutura.setTipoFuncAcompTpfa(funcaoGPS);
                  funcaoItemEstrutura.setUsuarioUsu(user);
                iett.setItemEstUsutpfuacIettutfas(new HashSet());
                  iett.getItemEstUsutpfuacIettutfas().add(funcaoItemEstrutura);

                  System.out.println(orgao);
                  System.out.println(funcaoItemEstrutura.getUsuarioUsu());
          }
               
          /* Buscando funcao pelo codigo do COP */
          sql = "select funcao from AreaAre funcao where funcao.codigoIdentAre = :codIdentFunc";
          q = this.session.createQuery(sql);
          q.setLong("codIdentFunc", Long.valueOf(codIdentFunc).longValue());
          q.setMaxResults(1);
         
        AreaAre funcao = (AreaAre) q.uniqueResult();
          if(funcao == null)
            throw new ECARException("Funcao Nulo");
        iett.setAreaAre(funcao);

          /* Buscando subfuncao pelo codigo do COP */
          sql = "select subfuncao from SubAreaSare subfuncao where subfuncao.codigoIdentSare = :codIdentSubFunc";
          q = this.session.createQuery(sql);
          q.setLong("codIdentSubFunc", Long.valueOf(codIdentSubFunc).longValue());
          q.setMaxResults(1);
         
        SubAreaSare subFuncao = (SubAreaSare) q.uniqueResult();
          if(subFuncao == null)
            throw new ECARException("subFuncao Nulo");
        iett.setSubAreaSare(subFuncao);
               
                /* Salvando item */
          //itemDao.salvar(request, iett);
          //Como preciso salvar todos os itens em transacao, foi "copiado" o m�todo salvar e colocado todos os itens em transacao.
         
              iett.setDataInclusaoIett(Data.getDataAtual());
            List filhos = new ArrayList();
            if (iett.getItemEstUsutpfuacIettutfas() != null)
                filhos.addAll(iett.getItemEstUsutpfuacIettutfas());
           
              session.save(iett);
        objetos.add(iett);
       

        //
            // controlar as permissoes passando o item e a lista das funcoes de acompanhamento velhas (vai ser uma lista vazia)
            //
        new ControlePermissao().atualizarPermissoesItemEstrutura(iett, null, session, true, request);
       
       
        // gravar permiss�o para o usu�rio que criou o item
        ItemEstrutUsuarioIettus itemEstrutUsuario = new ItemEstrutUsuarioIettus();
   
        itemEstrutUsuario.setItemEstruturaIett(iett);
        itemEstrutUsuario.setItemEstruturaIettOrigem(iett);
        itemEstrutUsuario.setCodTpPermIettus(ControlePermissao.PERMISSAO_USUARIO);
        itemEstrutUsuario.setUsuarioUsu(((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario());
   
        itemEstrutUsuario.setIndLeituraIettus("S");
        itemEstrutUsuario.setIndEdicaoIettus("S");
        itemEstrutUsuario.setIndExcluirIettus("S");
       
        itemEstrutUsuario.setIndAtivMonitIettus("N");
        itemEstrutUsuario.setIndDesatMonitIettus("N");
        itemEstrutUsuario.setIndBloqPlanIettus("N");
        itemEstrutUsuario.setIndDesblPlanIettus("N");
        itemEstrutUsuario.setIndInfAndamentoIettus("N");
        itemEstrutUsuario.setIndEmitePosIettus("N");
        itemEstrutUsuario.setIndProxNivelIettus("N");
       
        itemEstrutUsuario.setDataInclusaoIettus(Data.getDataAtual());

        Iterator it = filhos.iterator();
        while(it.hasNext()) {
            PaiFilho object = (PaiFilho) it.next();
            object.atribuirPKPai();
            //salva os filhos
            session.save(object);
          objetos.add(object);
        }

        session.save(itemEstrutUsuario);
        objetos.add(itemEstrutUsuario);
      }
     
      tx.commit();

      if(super.logBean != null) {
        super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
        super.logBean.setOperacao("INC");
        Iterator itObj = objetos.iterator();

        while(itObj.hasNext()) {
          super.logBean.setObj(itObj.next());
          super.loggerAuditoria.info(logBean.toString());
        }
      }
     
    } catch (Exception e) {
      e.printStackTrace();
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     * M�todo somente usado em efetuarCargaItens() para retornar o usu�rio de um determinado �rg�o, seguindo planilha anexada no mantis 11861.
     *
     * @author aleixo
     * @since 11/07/2007
     * @param orgao
     * @return
     * @throws ECARException
     */
    private UsuarioUsu getUsuarioGPSByOrgao(OrgaoOrg orgao) throws ECARException{
     
      final long COD_ORG_SEPL = 1; /* Mirian Pappi Gomes - 325 */
      final long COD_ORG_PGE = 5; /* Maristela Pioli - 155 */
      final long COD_ORG_SEAP = 6; /* Luciane do Rocio Walesko Fantin - 136 */
      final long COD_ORG_SEAB = 7; /* Teodoro Kostin Neto - 133 */
      final long COD_ORG_SETI = 8; /* S�rgio Luiz Covalski - 149 */
      final long COD_ORG_SECS = 9; /* Luis Carlos Fracaro - 157 */
      final long COD_ORG_SEEC = 10; /* Matias Marino da Silva - 340 */
      final long COD_ORG_SEDU = 11; /* Reynaldo Aquino de Paula - 158 */
      final long COD_ORG_SEED = 12; /* Carlos Roberto Sottomaior Valiente - 139 */
      final long COD_ORG_SEFA = 13; /* Roseli Naufal Schnekemberg - 141 */
      final long COD_ORG_SEIM = 14; /* Eliziany Sutil de Oliveira Guimar�es - 334 */
      final long COD_ORG_SEJU = 15; /* S�lvio Carlos Nass - 143 */
      final long COD_ORG_SEMA = 16; /* Walter Osternack Junior - 160 */
      final long COD_ORG_SEOP = 17; /* Emir Carlos Grassani - 144 */
      final long COD_ORG_SESA = 19; /* Sueli de S� Riechi - 145 */
      final long COD_ORG_SESP = 20; /* Maria Helena Paes - 147 */
      final long COD_ORG_SETP = 21; /* Helena Oliveira Borges Saldanha - 151 */
      final long COD_ORG_SETR = 22; /* Rejane Karam - 153 */
      final long COD_ORG_SETU = 23; /* Elaine Ligiero Ferreira - 162 */
      final long COD_ORG_CPE = 79/* Maria Cristina da Silva Magalh�es - 131 */
     
      Long chave = null;
     
      if(orgao != null){
        if(orgao.getCodOrg().longValue() == COD_ORG_SEPL) chave = Long.valueOf(325);
        if(orgao.getCodOrg().longValue() == COD_ORG_PGE) chave = Long.valueOf(155);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEAP) chave = Long.valueOf(136);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEAB) chave = Long.valueOf(133);
        if(orgao.getCodOrg().longValue() == COD_ORG_SETI) chave = Long.valueOf(149);
        if(orgao.getCodOrg().longValue() == COD_ORG_SECS) chave = Long.valueOf(157);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEEC) chave = Long.valueOf(340);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEDU) chave = Long.valueOf(158);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEED) chave = Long.valueOf(139);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEFA) chave = Long.valueOf(141);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEIM) chave = Long.valueOf(334);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEJU) chave = Long.valueOf(143);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEMA) chave = Long.valueOf(160);
        if(orgao.getCodOrg().longValue() == COD_ORG_SEOP) chave = Long.valueOf(144);
        if(orgao.getCodOrg().longValue() == COD_ORG_SESA) chave = Long.valueOf(145);
        if(orgao.getCodOrg().longValue() == COD_ORG_SESP) chave = Long.valueOf(147);
        if(orgao.getCodOrg().longValue() == COD_ORG_SETP) chave = Long.valueOf(151);
        if(orgao.getCodOrg().longValue() == COD_ORG_SETR) chave = Long.valueOf(153);
        if(orgao.getCodOrg().longValue() == COD_ORG_SETU) chave = Long.valueOf(162);
        if(orgao.getCodOrg().longValue() == COD_ORG_CPE) chave = Long.valueOf(131);
       
        if(chave != null){
          return (UsuarioUsu) new UsuarioDao(request).buscar(UsuarioUsu.class, chave);
        }
      }
     
      return null;
    }
   
    /**
     * Efetua carga nas tabelas de PoderPeriodoExercicioPodPerExe,
     * OrgaoPeriodoExercicioOrgPerExe e UnidadeOrcamentariaPeriodoExercicioUoPerExe, relacionando PoderPod, OrgaoOrg
     * e UnidadeOrcamentariaUo com PeriodoExercicioPerExe 2008-2011.
     *
     * @author aleixo
     * @since 12/07/2007
     * @throws ECARException
     */
    public void efetuarCargaPeriodoExercicios() throws ECARException{
      Dao dao = new Dao();
      PeriodoExercicioDao perExeDao = new PeriodoExercicioDao(request);
      PeriodoExercicioPerExe perExe = (PeriodoExercicioPerExe) perExeDao.buscar(PeriodoExercicioPerExe.class, Long.valueOf(2)); //2 � o 2008-2011
     
      PoderDao poderDao = new PoderDao(request);
      List<PoderPod> poderes = poderDao.listar(PoderPod.class, null);
      for(PoderPod poder : poderes){
      PoderPeriodoExercicioPodPerExePK compId = new PoderPeriodoExercicioPodPerExePK();
      compId.setCodPerExe(perExe.getCodPerExe());
      compId.setCodPod(poder.getCodPod());
     
      PoderPeriodoExercicioPodPerExe podPerExe = new PoderPeriodoExercicioPodPerExe();
      podPerExe.setCompId(compId);
      podPerExe.setIndAtivoPodPerExe("S");
      podPerExe.setPoderPod(poder);
      podPerExe.setPeriodoExercicioPerExe(perExe);
     
      dao.salvar(podPerExe);
    }
     
      OrgaoDao orgaoDao = new OrgaoDao(request);
      List<OrgaoOrg> orgaos = orgaoDao.listar(OrgaoOrg.class, null);
      for(OrgaoOrg orgao : orgaos){
      OrgaoPeriodoExercicioOrgPerExePK compId = new OrgaoPeriodoExercicioOrgPerExePK();
      compId.setCodPerExe(perExe.getCodPerExe());
      compId.setCodOrg(orgao.getCodOrg());
     
      OrgaoPeriodoExercicioOrgPerExe orgPerExe = new OrgaoPeriodoExercicioOrgPerExe();
      orgPerExe.setCompId(compId);
      orgPerExe.setIndAtivoOrgPerExe("S");
      orgPerExe.setOrgaoOrg(orgao);
      orgPerExe.setPeriodoExercicioPerExe(perExe);
     
      dao.salvar(orgPerExe);
    }
     
      UnidadeOrcamentariaDao uoDao = new UnidadeOrcamentariaDao(request);
      List<UnidadeOrcamentariaUO> uos = uoDao.listar(UnidadeOrcamentariaUO.class, null);
      for(UnidadeOrcamentariaUO unidade : uos){
        UnidadeOrcamentariaPeriodoExercicioUoPerExePK compId = new UnidadeOrcamentariaPeriodoExercicioUoPerExePK();
        compId.setCodPerExe(perExe.getCodPerExe());
        compId.setCodUo(unidade.getCodUo());
       
        UnidadeOrcamentariaPeriodoExercicioUoPerExe uoPerExe = new UnidadeOrcamentariaPeriodoExercicioUoPerExe();
        uoPerExe.setCompId(compId);
        uoPerExe.setIndAtivoUoPerExe("S");
        uoPerExe.setPeriodoExercicioPerExe(perExe);
        uoPerExe.setUnidadeOrcamentariaUO(unidade);
       
        dao.salvar(uoPerExe);
      }
    }
   
    /**
     * Seta os Tipos de A��es do PPA 2008-2011 para a carga efetuada conforme a regra:<br>
     * Para a��es com o n�mero iniciado por 1 - Projeto (ex.: 1144)<br>
     * Para a��es com o n�mero iniciado por 2 - Atividade (ex.: 2079)<br>
     * Para a��es com o n�mero iniciado por 9 - Opera��es Especiais (ex.: 9084)<br>
     *
     * @author aleixo
     * @since 19/07/2007
     * @throws ECARException
     */
    public void setTipoAcoesPPA20082011() throws ECARException{
     
      UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
     
      SisAtributoDao sisDao = new SisAtributoDao(request);
     
      SisAtributoSatb projeto = (SisAtributoSatb) sisDao.buscar(SisAtributoSatb.class, Long.valueOf(46));
      SisAtributoSatb atividade = (SisAtributoSatb) sisDao.buscar(SisAtributoSatb.class, Long.valueOf(47));
      SisAtributoSatb operacaoEspecial = (SisAtributoSatb) sisDao.buscar(SisAtributoSatb.class, Long.valueOf(48));
     
        Transaction tx = null;

        try{
            tx = session.beginTransaction();

            StringBuilder s = new StringBuilder();
        s.append("select iett from ItemEstruturaIett iett where iett.estruturaEtt.codEtt = 20");
        s.append(" and iett.siglaIett like '1%' ");
       
        Query q = this.session.createQuery(s.toString());
       
        List<ItemEstruturaIett> acoesProjeto = q.list();
        for(ItemEstruturaIett iett : acoesProjeto){
           
          ItemEstruturaSisAtributoIettSatb atbLivre = new ItemEstruturaSisAtributoIettSatb();
          atbLivre.setItemEstruturaIett(iett);
          atbLivre.setSisAtributoSatb(projeto);
          atbLivre.setDataUltManutencao(Data.getDataAtual());
          atbLivre.setUsuarioUsu(usuarioLogado);
          atbLivre.atribuirPKPai();
         
          Set atbsLivres = iett.getItemEstruturaSisAtributoIettSatbs();
         
          boolean podeInserir = true;
          if(atbsLivres != null && !atbsLivres.isEmpty()){
            for(Iterator it = atbsLivres.iterator(); it.hasNext();){
              ItemEstruturaSisAtributoIettSatb aux = (ItemEstruturaSisAtributoIettSatb) it.next();
             
              if(aux.getItemEstruturaIett().equals(iett) && aux.getSisAtributoSatb().equals(projeto)){
                podeInserir = false;
                break;
              }
            }
          }
         
          if(podeInserir){
            session.save(atbLivre);
          }
        }
       
            s = new StringBuilder();
        s.append("select iett from ItemEstruturaIett iett where iett.estruturaEtt.codEtt = 20");
        s.append(" and iett.siglaIett like '2%' ");
       
        q = this.session.createQuery(s.toString());
       
        List<ItemEstruturaIett> acoesAtividade = q.list();
        for(ItemEstruturaIett iett : acoesAtividade){
           
          ItemEstruturaSisAtributoIettSatb atbLivre = new ItemEstruturaSisAtributoIettSatb();
          atbLivre.setItemEstruturaIett(iett);
          atbLivre.setSisAtributoSatb(atividade);
          atbLivre.setDataUltManutencao(Data.getDataAtual());
          atbLivre.setUsuarioUsu(usuarioLogado);
          atbLivre.atribuirPKPai();
         
          Set atbsLivres = iett.getItemEstruturaSisAtributoIettSatbs();
         
          boolean podeInserir = true;
          if(atbsLivres != null && !atbsLivres.isEmpty()){
            for(Iterator it = atbsLivres.iterator(); it.hasNext();){
              ItemEstruturaSisAtributoIettSatb aux = (ItemEstruturaSisAtributoIettSatb) it.next();
             
              if(aux.getItemEstruturaIett().equals(iett) && aux.getSisAtributoSatb().equals(atividade)){
                podeInserir = false;
                break;
              }
            }
          }
         
          if(podeInserir){
            session.save(atbLivre);
          }
        }

            s = new StringBuilder();
        s.append("select iett from ItemEstruturaIett iett where iett.estruturaEtt.codEtt = 20");
        s.append(" and iett.siglaIett like '9%' ");
       
        q = this.session.createQuery(s.toString());
       
        List<ItemEstruturaIett> acoesOperEsp = q.list();
        for(ItemEstruturaIett iett : acoesOperEsp){
           
          ItemEstruturaSisAtributoIettSatb atbLivre = new ItemEstruturaSisAtributoIettSatb();
          atbLivre.setItemEstruturaIett(iett);
          atbLivre.setSisAtributoSatb(operacaoEspecial);
          atbLivre.setDataUltManutencao(Data.getDataAtual());
          atbLivre.setUsuarioUsu(usuarioLogado);
          atbLivre.atribuirPKPai();
         
          Set atbsLivres = iett.getItemEstruturaSisAtributoIettSatbs();
         
          boolean podeInserir = true;
          if(atbsLivres != null && !atbsLivres.isEmpty()){
            for(Iterator it = atbsLivres.iterator(); it.hasNext();){
              ItemEstruturaSisAtributoIettSatb aux = (ItemEstruturaSisAtributoIettSatb) it.next();
             
              if(aux.getItemEstruturaIett().equals(iett) && aux.getSisAtributoSatb().equals(operacaoEspecial)){
                podeInserir = false;
                break;
              }
            }
          }
         
          if(podeInserir){
            session.save(atbLivre);
          }
        }

        tx.commit();
    } catch (Exception e) {
      e.printStackTrace();
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }
    }
   
    /**
     * Metodo para efetuar a carga de valores em EfItemEstPrevisaoEfiep
     * conforme dados enviados pelo COP.
     *
     * @author aleixo
     * @since 27/07/2007
     * @throws ECARException
     */
    public void efetuarCargaValoresCOP() throws ECARException{
     
      final String CORRENTE = "C";
      final String CAPITAL = "K";     
      final String TESOURO = "T";
      final String OUTRAS_FONTES = "O";
     
      ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
     
        Transaction tx = null;

        try{
          //Buscando a estrutura de n�vel de a��o do PPA 2008-2011
          EstruturaEtt estrutura = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(20));
          List<EfIettFonteTotEfieft> fontesTotEfieft = new ArrayList<EfIettFonteTotEfieft>();
         
      Query q = this.session.createQuery("from FonteRecursoFonr");
      List<FonteRecursoFonr> fontesRecurso = (List<FonteRecursoFonr>)q.list();
         
         
          tx = session.beginTransaction();
           
        //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/valores.csv"));
          //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/valores-quente-ok.csv"));
          //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/valores-novo-quente.csv"));
          BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/valoresOK.csv"));
          //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/teste.csv"));
      String linha="";
      System.out.println("+++++++++++++++ [In�cio do Processo]++++++++++++++++");
      while ((linha=in.readLine()) != null) {
        String[] campos = linha.split(";");

        // CODPAT ANOEXERCICIO C CODESPECIE T   CODFONTE SUM(VLRPRODDESINICIAL)
        String codProjAtiv = campos[0].trim();
        String anoExe = campos[1].trim();
        String indCapCor = campos[2].trim();
        String codEsp = campos[3].trim();
        String tipoFonte = campos[4].trim();
        String codFonte = campos[5].trim();
        String valor = campos[6].trim();

        Long codFonr = null;
        if(CORRENTE.equals(indCapCor))
          codFonr = new Long(1); //1 Corrente
        else if(CAPITAL.equals(indCapCor))
          codFonr = new Long(2); //2 Capital
        else{
          System.out.println("++++++++ ERRO: Indicador inv�lido para FonteRecursoFonr: " + indCapCor);
          throw new ECARException("IndCapCor inv�lido");
        }
       
        Long codTipoFon = null;
        if(TESOURO.equals(tipoFonte))
          codTipoFon = new Long(3);
        else if (OUTRAS_FONTES.equals(tipoFonte))
          codTipoFon = new Long(4);
        else{
          System.out.println("++++++++ ERRO: TipoFonte inv�lido para RecursoRec: " + tipoFonte);
          throw new ECARException("tipoFonte inv�lido");
        }

        ItemEstruturaIett projAtiv = itemDao.getIettBySigla(codProjAtiv, estrutura);
        if(projAtiv == null){
          System.out.println("++++++++ ERRO: ItemEstruturaIett � Nulo para valor " + codProjAtiv);
          throw new ECARException("ItemEstruturaIett is null");
        }
       
        ExercicioExe exercicio = (ExercicioExe) this.selectObjeto("ExercicioExe", "descricaoExe", STRING, anoExe, null);
        FonteRecursoFonr fonr = (FonteRecursoFonr) this.selectObjeto("FonteRecursoFonr", "codFonr", LONG, codFonr, null);
        EspecieEsp esp = (EspecieEsp) this.selectObjeto("EspecieEsp", "codEsp", LONG, Long.valueOf(codEsp), null);
        RecursoRec rec = (RecursoRec) this.selectObjeto("RecursoRec", "codRec", LONG, codTipoFon, null);
        FonteFon fon = (FonteFon) this.selectObjeto("FonteFon", "codigoIdentFon", LONG, Long.valueOf(codFonte), null);
        BigDecimal valorAprovado = new BigDecimal(valor).setScale(0);
       
       
        //Verifica se j� existe objetos EfIettFonteTotEfieft para esse iett, caso contr�rio inclui o mesmo no banco.
        ItemEstruturaFonteRecursoDao dao = new ItemEstruturaFonteRecursoDao(request);
        //O ExercicioExe � apenas exigido no m�todo, mas n�o considerado na consulta, a linha referente
        //ao ExercicioExe est� comentado no m�todo.
        List fontesRecursos = dao.getFontesRecursosByExercicio(projAtiv, new ExercicioExe());
       
        if((fontesRecursos.size() == 0) && (!projAtiv.getSiglaIett().substring(0,1).equals("0"))) {
       
          //T� invertido, o Recurso responde pela Fonte do recurso e vice-versa
          for(Iterator<FonteRecursoFonr> itFontes = fontesRecurso.iterator(); itFontes.hasNext();) {
           
            FonteRecursoFonr fonte = itFontes.next();
           
            EfIettFonteTotEfieft efTotEfieft = new EfIettFonteTotEfieft();
           
            EfIettFonteTotEfieftPK efTotEfieftPK = new EfIettFonteTotEfieftPK();
            efTotEfieftPK.setCodFonr(fonte.getCodFonr());
            efTotEfieftPK.setCodIett(projAtiv.getCodIett());
           
            efTotEfieft.setComp_id(efTotEfieftPK);
            efTotEfieft.setDataInclusaoEfieft(new Date());
            efTotEfieft.setIndAtivoEfieft("S");
            efTotEfieft.setItemEstruturaIett(projAtiv);
            efTotEfieft.setFonteRecursoFonr(fonte);
           
            //Acrescenta o objeto na lista que ser� salva posteriormente no banco.
            if(!fontesTotEfieft.contains(efTotEfieft))
              fontesTotEfieft.add(efTotEfieft);
          }
         
        }
       
       
        EfItemEstPrevisaoEfiepPK compId = new EfItemEstPrevisaoEfiepPK();
        compId.setCodExe(exercicio.getCodExe());
        compId.setCodFonr(fonr.getCodFonr());
        compId.setCodIett(projAtiv.getCodIett());
        compId.setCodRec(rec.getCodRec());
//        compId.setCodEsp(esp.getCodEsp());
//        compId.setCodFon(fon.getCodFon());
       
        EfItemEstPrevisaoEfiep efiep = new EfItemEstPrevisaoEfiep();
        efiep.setComp_id(compId);
        efiep.setDataInclusaoEfiep(Data.getDataAtual());
        efiep.setEspecieEsp(esp);
        efiep.setExercicioExe(exercicio);
        efiep.setFonteRecursoFonr(fonr);
        efiep.setIndAtivoEfiep("S");
        efiep.setItemEstruturaIett(projAtiv);
        efiep.setRecursoRec(rec);
        efiep.setFonteFon(fon);
        efiep.setValorAprovadoEfiep(valorAprovado);
       
        System.out.println("--> " + projAtiv.getNomeIett());
        session.save(efiep);
      }
     
      //Salva os objetos no banco
      for(EfIettFonteTotEfieft obj : fontesTotEfieft) {
        session.save(obj);
      }       
     
      tx.commit(); //N�o esquecer de descomentar o beginTransaction
      System.out.println("+++++++++++++++ [Fim do Processo]++++++++++++++++");
    } catch (Exception e) {
      e.printStackTrace();
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
   
    /**
     * Efetua a carga das finalidades das a��es do PPA 2008-2011 - dados importados do COP.
     * @throws ECARException
     */
    public void efetuarCargaFinalidadesCOP() throws ECARException{
     
      ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
     
        Transaction tx = null;

        try{
          //Buscando a estrutura de n�vel de a��o do PPA 2008-2011
          EstruturaEtt estrutura = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(20));

      System.out.println("+++++++++++++++ [In�cio do Processo]++++++++++++++++");
          tx = session.beginTransaction();
           
      System.out.println("+++++++++++++++ [Lendo arquivo...]++++++++++++++++");
          BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/FinalidadePat2008-teste.txt"));
      String linha="";
     
      List<String> linhas = new ArrayList<String>();
     
      String finalidade = "";
      while ((linha=in.readLine()) != null) {
        linha = linha.trim();
       
        if("".equals(linha)){
          continue;
        }
       
        //A��es sempre come�am com 1, 2 ou 9 na sigla.
        if(linha.charAt(0) == '1' || linha.charAt(0) == '2' || linha.charAt(0) == '9'){
          //nova finalidade
          linhas.add(finalidade.trim());
          finalidade = "";
        }
        finalidade += linha + " ";
      }
     
      System.out.println("+++++++++++++++ [Identificando \"Sigla\" e \"Finalidade\"...]++++++++++++++++");
      List<CargaFinalidadesPPA> finalidades = new ArrayList<CargaFinalidadesPPA>();      
      for(String l : linhas){
       
        if(!"".equals(l)){
          String sigla = l.substring(0,4);
          String fin = l.substring(5,l.length());
         
          CargaFinalidadesPPA cfPPA = new CargaFinalidadesPPA();
          cfPPA.setSigla(sigla);
          cfPPA.setFinalidade(fin);
         
          finalidades.add(cfPPA);         
        }
      }
     
      System.out.println("+++++++++++++++ [Alterando a��es...]++++++++++++++++");
      for(CargaFinalidadesPPA cfPPA : finalidades){
        ItemEstruturaIett acao = itemDao.getIettBySigla(cfPPA.getSigla(), estrutura);

        if(acao == null){
          System.out.println("++++++++ ERRO: ItemEstruturaIett � Nulo para valor " + cfPPA.getSigla());
          throw new ECARException("ItemEstruturaIett is null");
        }

        acao.setObjetivoGeralIett(cfPPA.getFinalidade());
        session.update(acao);
      }
     
      System.out.println("+++++++++++++++ [COMMIT]++++++++++++++++");
      tx.commit(); //N�o esquecer de descomentar o beginTransaction
      System.out.println("+++++++++++++++ [Fim do Processo]++++++++++++++++");
    } catch (Exception e) {
      e.printStackTrace();
      if (tx != null)
        try {
          System.out.println("+++++++++++++++ [ROLLBACK]++++++++++++++++");
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     * M�todo referente ao mantis 12295
     * Carga de Produtos e respectivas metas f�sicas por local.
     *
     * @author aleixo
     * @throws ECARException
     * @since 10/08/2007
     */
    public void efetuarCargaProdutosCOP() throws ECARException{

      //Buscando a estrutura de n�vel de projeto/atividade do PPA 2008-2011
      EstruturaEtt estruturaProdutos = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(21));
     
        Transaction tx = null;

        try{
         
          UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
         
        ArrayList objetos = new ArrayList();
       
        super.inicializarLogBean();

        msg("++++++++++++++++ [ Processo Iniciado ] ++++++++++++++++++++");
            tx = session.beginTransaction();
           
            List<CargaProdutosPPA> itensArquivo = new ArrayList<CargaProdutosPPA>();
          List<String> itens = new ArrayList<String>();

          msg("++++++++++++++++ [ Lendo Arquivo ] ++++++++++++++++++++");
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutosOK.csv"));
        //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutos2604OK.csv"));
      String linha="";
     
          msg("++++++++++++++++ [ Adicionando itens do arquivo na lista itensArquivos] ++++++++++++++++++++");
      while ((linha=in.readLine()) != null) {
       
        //ANOEXERCICIO; CODPAT; NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        //ANOEXERCICIO; CODPAT; CODPRODUTOPAT; Obra(S/N); NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        String[] campos = linha.split(";");
       
        String anoExe = campos[0].trim();
        String siglaAcao = campos[1].trim();
        String siglaProduto = campos[2].trim();
        String indObra = campos[3].trim();       
        String nomeIndicador = campos[4].trim();
        String nomeProduto = campos[5].trim();
        String unidadeIndicador = campos[6].trim();
        String valorPrevisto = campos[7].trim();
        String codRegiao = campos[8].trim();
       
        String codMunicipio = "";
        if(campos.length == 10)
          codMunicipio = campos[9].trim();
       
       
        CargaProdutosPPA itemArquivo = new CargaProdutosPPA();
        itemArquivo.setAnoExe(anoExe);
        itemArquivo.setCodMunicipio(codMunicipio);
        itemArquivo.setCodRegiao(codRegiao);
        itemArquivo.setIndObra(indObra);
        itemArquivo.setNomeIndicador(Util.removeEspacosDuplicados(nomeIndicador));
        itemArquivo.setNomeProduto(Util.removeEspacosDuplicados(nomeProduto));
        itemArquivo.setSiglaAcao(siglaAcao);
        itemArquivo.setSiglaProduto(siglaProduto);
        itemArquivo.setUnidadeIndicador(unidadeIndicador);
        itemArquivo.setValorPrevisto(valorPrevisto);
       
        itensArquivo.add(itemArquivo);
      }
     
          msg("++++++++++++++++ [ Ordenando itensArquivo pela siglaAcao e siglaProduto ] ++++++++++++++++++++");
         
          Collections.sort(itensArquivo, new Comparator(){

        public int compare(Object o1, Object o2) {
          CargaProdutosPPA c1 = (CargaProdutosPPA) o1;
          CargaProdutosPPA c2 = (CargaProdutosPPA) o2;
         
          String s1 = c1.getSiglaAcao();
          String s2 = c2.getSiglaAcao();
         
          return s1.compareTo(s2);
        }
           
          });

         
        List<CargaProdutosPPA> itensSalvos = new ArrayList<CargaProdutosPPA>();
        List<CargaProdutosPPA> itensIgnorados = new ArrayList<CargaProdutosPPA>();

        msg("++++++++++++++++ [ Percorrendo itensArquivo para inser��o de itens ] ++++++++++++++++++++");
       
        String siglaAcaoAux = "";
      int siglaProdAux = 1;

       
      for(CargaProdutosPPA itemArquivo : itensArquivo){
       
        /* Obtendo local para cadastrar a abrangencia (pegando pela Regi�o, que j� engloba o municipio)*/
        StringBuilder select = new StringBuilder();
        select.append("select local from LocalItemLit local");
        select.append(" where local.codPlanejamentoLit = :codLocal");
        select.append("   and local.localGrupoLgp.codLgp = 11");
       
        Query q = this.session.createQuery(select.toString());
        q.setString("codLocal", itemArquivo.getCodRegiao());
       
        q.setMaxResults(1);
       
        Object o = q.uniqueResult();
        if(o == null){
          lancarErro("Erro ao pesquisar abrangencia: Local invalido para Regiao: " + itemArquivo.getCodRegiao());
        }
        LocalItemLit localAbrangencia = (LocalItemLit) o;
       
       
       
        if("".equals(itemArquivo.getValorPrevisto())){
          lancarErro("Valor inv�lido: [" + itemArquivo.getValorPrevisto() + "]");
        }
       
        ItemEstruturaIett iett = null;
       
        //String chave = siglaAcao + "_" + siglaProduto + "_" + indObra;
        String chave = itemArquivo.getSiglaAcao() + "_" + itemArquivo.getIndObra() + "_" + itemArquivo.getNomeProduto();
       
       
        if(!itens.contains(chave)){
          itensSalvos.add(itemArquivo);
          itens.add(chave);
         
          if(!siglaAcaoAux.equals(itemArquivo.getSiglaAcao())){
            siglaAcaoAux = itemArquivo.getSiglaAcao();
            siglaProdAux = 1;
          }
         
          // Gravar item e indicador
         
            //Obtendo item Pai (do n�vel de a��o do ppa 2008-2011
            String sqlBuscaPai = "select pai from ItemEstruturaIett pai where siglaIett = :sigla and pai.estruturaEtt.codEtt = :codEttPai";
            q = this.session.createQuery(sqlBuscaPai);
            q.setString("sigla", itemArquivo.getSiglaAcao());
            q.setLong("codEttPai", 20); //20 � A��o do PPA 2008-2011
            q.setMaxResults(1);
            ItemEstruturaIett iettPai = (ItemEstruturaIett) q.uniqueResult();
            if(iettPai == null)
              lancarErro("Item Pai � Nulo para sigla " + itemArquivo.getSiglaAcao());
           
            // Setando item referente ao projeto/atividade
            iett = new ItemEstruturaIett();
           
            iett.setIndAtivoIett("S");
            iett.setIndBloqPlanejamentoIett("N");
            iett.setIndCriticaIett("N");
            iett.setIndMonitoramentoIett("N");
            iett.setUsuarioUsuByCodUsuIncIett(usuarioLogado);
            iett.setDataInclusaoIett(Data.getDataAtual());
            iett.setDataUltManutencaoIett(Data.getDataAtual());
            iett.setDataInicioIett(Data.parseDate("01/01/2008"));
            iett.setDataTerminoIett(Data.parseDate("31/12/2011"));
            iett.setNivelIett(Integer.valueOf(4));
           
           
            iett.setItemEstruturaIett(iettPai);
            //iett.setSiglaIett(itemArquivo.getSiglaProduto());
            iett.setSiglaIett(String.valueOf(siglaProdAux));
            iett.setNomeIett(itemArquivo.getNomeProduto());

             iett.setEstruturaEtt(estruturaProdutos);

            /* Buscando unidade or�ament�rias pela unidade or�ament�ria da a��o */
          UnidadeOrcamentariaUO unidade = iettPai.getUnidadeOrcamentariaUO();
            if(unidade == null)
              lancarErro("Unidade Or�ament�ria do Item Pai � Nulo");
          iett.setUnidadeOrcamentariaUO(unidade);

            /* Buscando orgao pelo orgao da acao */
          OrgaoOrg orgao = iettPai.getOrgaoOrgByCodOrgaoResponsavel1Iett();
            if(orgao == null)
              lancarErro("Orgao do Item Pai � Nulo");
           
          iett.setOrgaoOrgByCodOrgaoResponsavel1Iett(orgao);
                 
                  /* Salvando item */
            //itemDao.salvar(request, iett);
            //Como preciso salvar todos os itens em transacao, foi "copiado" o m�todo salvar e colocado todos os itens em transacao.
           
                session.save(iett);
          objetos.add(iett);
          msg("Salvando Item --> " + itemArquivo.getSiglaAcao() + " - " + itemArquivo.getSiglaProduto() + " - " + itemArquivo.getNomeProduto());
         
          siglaProdAux++;
         
          //Salvar Indicador de Obra.
          Long codIndObra = (Dominios.SIM.equals(itemArquivo.getIndObra()) ? Long.valueOf(51) : Long.valueOf(52));
          SisAtributoSatb obra = (SisAtributoSatb) buscar(SisAtributoSatb.class, codIndObra);
         
          ItemEstruturaSisAtributoIettSatb atbLivreObra = new ItemEstruturaSisAtributoIettSatb();
          atbLivreObra.setItemEstruturaIett(iett);
          atbLivreObra.setSisAtributoSatb(obra);
          atbLivreObra.setDataUltManutencao(Data.getDataAtual());
          atbLivreObra.setUsuarioUsu(usuarioLogado);
          atbLivreObra.atribuirPKPai();
         
          session.save(atbLivreObra);
          objetos.add(atbLivreObra);
         
          // Salvando a Abrang�ncia
          ItemEstrutLocalIettl abrangencia = new ItemEstrutLocalIettl();
          ItemEstrutLocalIettlPK abrgCompId = new ItemEstrutLocalIettlPK();
         
          abrgCompId.setCodIett(iett.getCodIett());
          abrgCompId.setCodLit(localAbrangencia.getCodLit());
         
          abrangencia.setComp_id(abrgCompId);
          abrangencia.setDataInclusaoIettl(Data.getDataAtual());
          abrangencia.setItemEstruturaIett(iett);
          abrangencia.setLocalItemLit(localAbrangencia);
          abrangencia.setUsuarioUsuManutencao(usuarioLogado);
          session.save(abrangencia);
          objetos.add(abrangencia);

          //
              // controlar as permissoes passando o item e a lista das funcoes de acompanhamento velhas (vai ser uma lista vazia)
              //
          new ControlePermissao().atualizarPermissoesItemEstrutura(iett, null, session, true, request);
         
          // gravar permiss�o para o usu�rio que criou o item
          ItemEstrutUsuarioIettus itemEstrutUsuario = new ItemEstrutUsuarioIettus();
     
          itemEstrutUsuario.setItemEstruturaIett(iett);
          itemEstrutUsuario.setItemEstruturaIettOrigem(iett);
          itemEstrutUsuario.setCodTpPermIettus(ControlePermissao.PERMISSAO_USUARIO);
          itemEstrutUsuario.setUsuarioUsu(usuarioLogado);
     
          itemEstrutUsuario.setIndLeituraIettus("S");
          itemEstrutUsuario.setIndEdicaoIettus("S");
          itemEstrutUsuario.setIndExcluirIettus("S");
         
          itemEstrutUsuario.setIndAtivMonitIettus("N");
          itemEstrutUsuario.setIndDesatMonitIettus("N");
          itemEstrutUsuario.setIndBloqPlanIettus("N");
          itemEstrutUsuario.setIndDesblPlanIettus("N");
          itemEstrutUsuario.setIndInfAndamentoIettus("N");
          itemEstrutUsuario.setIndEmitePosIettus("N");
          itemEstrutUsuario.setIndProxNivelIettus("N");
         
          itemEstrutUsuario.setDataInclusaoIettus(Data.getDataAtual());

          session.save(itemEstrutUsuario);
          objetos.add(itemEstrutUsuario);
        }
        else {
          itensIgnorados.add(itemArquivo);
        }
      }
     
        msg("++++++++++++++++ [ Realizando Commit ] ++++++++++++++++++++");
      tx.commit(); // Ao descomentar essa linha, n�o esquecer de descomentar o beginTransaction

      if(super.logBean != null) {
        super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
        super.logBean.setOperacao("INC");
        Iterator itObj = objetos.iterator();

        while(itObj.hasNext()) {
          super.logBean.setObj(itObj.next());
          super.loggerAuditoria.info(logBean.toString());
        }
      }
        msg("++++++++++++++++ [ Processo Finalizado Com Sucesso ] ++++++++++++++++++++");
     
    } catch (Exception e) {
      e.printStackTrace();
        msg("++++++++++++++++ [ Erro no Processo. Executando RollBack ] ++++++++++++++++++++");
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     * M�todo complementar para o m�todo efetuarCargaProdutosCOP().
     * Este m�todo carrega no sistema os valores do previsto por local para os produtos do COP.
     *
     * @throws ECARException
     */
    public void efetuarCargaIndicadoresProdutosCOP() throws ECARException{

      //ItemEstruturaDao itemDao = new ItemEstruturaDao(request);

      //Buscando a estrutura de n�vel de projeto/atividade do PPA 2008-2011
      EstruturaEtt estruturaProdutos = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(21));
     
        Transaction tx = null;

        try{
         
          UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
         
        ArrayList objetos = new ArrayList();
       
        super.inicializarLogBean();

        msg("++++++++++++++++ [ Processo Iniciado ] ++++++++++++++++++++");
            tx = session.beginTransaction();
           
        msg("++++++++++++++++ [ Lendo Arquivo ] ++++++++++++++++++++");
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutosOK.csv"));
        //BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutos2604OK.csv"));
       
        List<String> indicadoresIncluidos = new ArrayList<String>()
      String linha="";
      while ((linha=in.readLine()) != null) {
       
        //ANOEXERCICIO; CODPAT; CODPRODUTOPAT; Obra(S/N); NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        String[] campos = linha.split(";");
       
        String anoExe = campos[0].trim();
        String siglaAcao = campos[1].trim();
        String siglaProduto = campos[2].trim();
        String indObra = campos[3].trim();       
        String nomeIndicador = Util.removeEspacosDuplicados(campos[4].trim());
        String nomeProduto = Util.removeEspacosDuplicados(campos[5].trim());
        String unidadeIndicador = campos[6].trim();
        String valorPrevisto = campos[7].trim();
        String codRegiao = campos[8].trim();
       
        String codMunicipio = "";
        if(campos.length == 10)
          codMunicipio = campos[9].trim();

        /* Buscando local do item*/
        StringBuilder select = new StringBuilder();
        select.append("select local from LocalItemLit local");
        select.append(" where local.codPlanejamentoLit = :codLocal");
        select.append("   and (local.localGrupoLgp.codLgp = 8 or local.localGrupoLgp.codLgp = 11)");
       
        Query q = this.session.createQuery(select.toString());
        q.setString("codLocal", (!"".equals(codMunicipio) ? codMunicipio : codRegiao)); //Se existir o municipio, o local vai ser o municipio, sen�o vai ser a regi�o
       
        q.setMaxResults(1);
       
        Object o = q.uniqueResult();
        if(o == null){
          if(!"".equals(codMunicipio))
            lancarErro("Local invalido para Municipio: " + codMunicipio);
          else
            lancarErro("Local invalido para Regiao: " + codRegiao);
        }
        LocalItemLit local = (LocalItemLit) o;
       
        if("".equals(valorPrevisto)){
          lancarErro("Valor inv�lido: [" + valorPrevisto + "]");
        }
       
        ItemEstruturaIett iett = null;
       
        // Gravar somente o indicador
        //buscar o item para gravar o indicador
        //iett = (ItemEstruturaIett) this.selectObjeto("ItemEstruturaIett", "siglaIett", STRING, siglaProduto, session);
        select = new StringBuilder();
        select.append("select item from ItemEstruturaIett item where item.nomeIett = :nome and item.estruturaEtt.codEtt = :codEtt and item.itemEstruturaIett.siglaIett = :siglaPai");
       
        q = session.createQuery(select.toString());
        q.setString("nome", nomeProduto);
        q.setString("siglaPai", siglaAcao);
        q.setLong("codEtt", estruturaProdutos.getCodEtt().longValue());
       
        List itensTemp = q.list();
        if(itensTemp != null && !itensTemp.isEmpty()){
          iett = (ItemEstruturaIett) itensTemp.get(0);
        }
        else {
          lancarErro("Item Nulo para: " + nomeProduto + " para siglaPai: " + siglaAcao);
          //continue;
        }
       
        //Incluir o indicador!
       
        //Verificar se o indicador existe
        String chaveIndicador = iett.getItemEstruturaIett().getSiglaIett() + "_" + "_" + iett.getNomeIett() + "_" + nomeIndicador;
       
        if(!indicadoresIncluidos.contains(chaveIndicador)){
         
          indicadoresIncluidos.add(chaveIndicador);
         
          //Cadastrar indicador
          ItemEstrtIndResulIettr indicador = new ItemEstrtIndResulIettr();
          indicador.setItemEstruturaIett(iett);
            indicador.setNomeIettir(nomeIndicador);
            indicador.setUnidMedidaIettr(unidadeIndicador);
            indicador.setIndProjecaoIettr(Dominios.NAO);
            indicador.setIndAtivoIettr(Dominios.SIM);
            indicador.setIndPrevPorLocal(Dominios.SIM);
            indicador.setIndRealPorLocal(Dominios.NAO);
            indicador.setIndTipoQtde(Dominios.IETTR_QUANTIDADE);
            indicador.setUsuarioUsuManutencao(usuarioLogado);
            indicador.setDataUltManutencao(Data.getDataAtual());
           
            //41 � Meta F�sica PPA
            SisAtributoSatb metaFisicaPPA = (SisAtributoSatb) this.selectObjeto("SisAtributoSatb", "codSatb", LONG, Long.valueOf(41), session);
            indicador.setSisAtributoSatb(metaFisicaPPA);

            //itemEstrtIndResul.setIndValorFinalIettr(null); N�o preencher
            //itemEstrtIndResul.setIndAcumulavelIettr(Pagina.getParamStr(request, "indAcumulavelIettr")); n�o preencher
           
            session.save(indicador);
            objetos.add(indicador);
        }
      }
     
        msg("++++++++++++++++ [ Realizando Commit ] ++++++++++++++++++++");
      tx.commit(); // Ao descomentar essa linha, n�o esquecer de descomentar o beginTransaction

      if(super.logBean != null) {
        super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
        super.logBean.setOperacao("INC");
        Iterator itObj = objetos.iterator();

        while(itObj.hasNext()) {
          super.logBean.setObj(itObj.next());
          super.loggerAuditoria.info(logBean.toString());
        }
      }
        msg("++++++++++++++++ [ Processo Finalizado Com Sucesso ] ++++++++++++++++++++");
     
    } catch (Exception e) {
      e.printStackTrace();
        msg("++++++++++++++++ [ Erro no Processo. Executando RollBack ] ++++++++++++++++++++");
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     *
     * @throws ECARException
     */
    public void efetuarCargaValoresIndicadoresProdutosCOP() throws ECARException{
      //ItemEstruturaDao itemDao = new ItemEstruturaDao(request);

      //Buscando a estrutura de n�vel de projeto/atividade do PPA 2008-2011
      EstruturaEtt estruturaProdutos = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(21));
     
        Transaction tx = null;

        try{
         
          //UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
         
        ArrayList objetos = new ArrayList();
       
        super.inicializarLogBean();

        msg("++++++++++++++++ [ Processo Iniciado ] ++++++++++++++++++++");
            tx = session.beginTransaction();
           
        msg("++++++++++++++++ [ Lendo Arquivo ] ++++++++++++++++++++");
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutosOK.csv"));
       
      String linha="";
      while ((linha=in.readLine()) != null) {
       
        //ANOEXERCICIO; CODPAT; CODPRODUTOPAT; Obra(S/N); NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        String[] campos = linha.split(";");
       
        String anoExe = campos[0].trim();
        String siglaAcao = campos[1].trim();
        String siglaProduto = campos[2].trim();
        String indObra = campos[3].trim();       
        String nomeIndicador = Util.removeEspacosDuplicados(campos[4].trim());
        String nomeProduto = Util.removeEspacosDuplicados(campos[5].trim());
        String unidadeIndicador = campos[6].trim();
        String valorPrevisto = campos[7].trim();
        String codRegiao = campos[8].trim();
       
        String codMunicipio = "";
        if(campos.length == 10)
          codMunicipio = campos[9].trim();

        ExercicioExe exercicio = (ExercicioExe) this.selectObjeto("ExercicioExe", "descricaoExe", STRING, anoExe, session);
       
        /* Buscando local do item*/
        StringBuilder select = new StringBuilder();
        select.append("select local from LocalItemLit local");
        select.append(" where local.codPlanejamentoLit = :codLocal");
        select.append("   and (local.localGrupoLgp.codLgp = 8 or local.localGrupoLgp.codLgp = 11)");
       
        Query q = this.session.createQuery(select.toString());
        q.setString("codLocal", (!"".equals(codMunicipio) ? codMunicipio : codRegiao)); //Se existir o municipio, o local vai ser o municipio, sen�o vai ser a regi�o
       
        q.setMaxResults(1);
       
        Object o = q.uniqueResult();
        if(o == null){
          if(!"".equals(codMunicipio))
            lancarErro("Local invalido para Municipio: " + codMunicipio);
          else
            lancarErro("Local invalido para Regiao: " + codRegiao);
        }
        LocalItemLit local = (LocalItemLit) o;
       
        if("".equals(valorPrevisto)){
          lancarErro("Valor inv�lido: [" + valorPrevisto + "]");
        }
       
        ItemEstruturaIett iett = null;
       
        select = new StringBuilder();
        select.append("select item from ItemEstruturaIett item where item.nomeIett = :nome and item.estruturaEtt.codEtt = :codEtt and item.itemEstruturaIett.siglaIett = :siglaPai");
       
        q = session.createQuery(select.toString());
        q.setString("nome", nomeProduto);
        q.setString("siglaPai", siglaAcao);
        q.setLong("codEtt", estruturaProdutos.getCodEtt().longValue());
       
        List itensTemp = q.list();
        if(itensTemp != null && !itensTemp.isEmpty()){
          iett = (ItemEstruturaIett) itensTemp.get(0);
        }
        else {
          lancarErro("Item Nulo para: " + nomeProduto + " para siglaPai: " + siglaAcao);
          //continue;
        }
       
        //Verificar se o indicador existe
        select = new StringBuilder();
        select.append("select indicador from ItemEstrtIndResulIettr indicador");
        select.append(" where indicador.itemEstruturaIett.codIett = :item");
        select.append("   and lower(indicador.nomeIettir) = :nomeInd");
       
        q = this.session.createQuery(select.toString());
        q.setLong("item", iett.getCodIett().longValue());
        q.setString("nomeInd", nomeIndicador.toLowerCase());
       
        List indicadores = q.list();
       
        ItemEstrtIndResulIettr indicador = null;
        if(indicadores != null && !indicadores.isEmpty()){
          //Indicador existe.
          indicador = (ItemEstrtIndResulIettr) indicadores.get(0);
        }
        else {
          lancarErro("Indicador = null para: " + nomeIndicador);
        }
       
        ItemEstrtIndResulLocalIettirl indResulLocal = new ItemEstrtIndResulLocalIettirl();
        indResulLocal.setDataInclusaoIettirl(Data.getDataAtual());
        //Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
        //indResulLocal.setExercicioExe(exercicio);
        indResulLocal.setIndAtivoIettirl(Dominios.SIM);
        //Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
        //Previsto por local n�o e mais associado diretamente ao indicador
        //indResulLocal.setItemEsrtIndResulIettr(indicador);
        indResulLocal.setLocalItemLit(local);
        indResulLocal.setQtdPrevistaIettirl(Double.valueOf(valorPrevisto));
       
        session.save(indResulLocal);
        objetos.add(indResulLocal);
       
      }
     
        msg("++++++++++++++++ [ Realizando Commit ] ++++++++++++++++++++");
      tx.commit(); // Ao descomentar essa linha, n�o esquecer de descomentar o beginTransaction

      if(super.logBean != null) {
        super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
        super.logBean.setOperacao("INC");
        Iterator itObj = objetos.iterator();

        while(itObj.hasNext()) {
          super.logBean.setObj(itObj.next());
          super.loggerAuditoria.info(logBean.toString());
        }
      }
        msg("++++++++++++++++ [ Processo Finalizado Com Sucesso ] ++++++++++++++++++++");
     
    } catch (Exception e) {
      e.printStackTrace();
        msg("++++++++++++++++ [ Erro no Processo. Executando RollBack ] ++++++++++++++++++++");
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     *
     * @throws ECARException
     */
    public void efetuarTotalizacaoIndicadoresProdutosCOP() throws ECARException{

      //ItemEstruturaDao itemDao = new ItemEstruturaDao(request);

      //Buscando a estrutura de n�vel de projeto/atividade do PPA 2008-2011
      EstruturaEtt estruturaProdutos = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(21));
      ExercicioExe exe2008 = (ExercicioExe) buscar(ExercicioExe.class, Long.valueOf(6));
      ExercicioExe exe2009 = (ExercicioExe) buscar(ExercicioExe.class, Long.valueOf(7));
      ExercicioExe exe2010 = (ExercicioExe) buscar(ExercicioExe.class, Long.valueOf(8));
      ExercicioExe exe2011 = (ExercicioExe) buscar(ExercicioExe.class, Long.valueOf(9));
     
        Transaction tx = null;

        try{
         
          //UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
         
        List<CargaProdutosPPA> itensArquivo = new ArrayList<CargaProdutosPPA>();
       
        msg("++++++++++++++++ [ Processo Iniciado ] ++++++++++++++++++++");
            tx = session.beginTransaction();
           
        msg("++++++++++++++++ [ Lendo Arquivo ] ++++++++++++++++++++");
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutosOK.csv"));
      String linha="";
      while ((linha=in.readLine()) != null) {
       
        //ANOEXERCICIO; CODPAT; CODPRODUTOPAT; Obra(S/N); NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        String[] campos = linha.split(";");
       
        String anoExe = campos[0].trim();
        String siglaAcao = campos[1].trim();
        String siglaProduto = campos[2].trim();
        String indObra = campos[3].trim();       
        String nomeIndicador = campos[4].trim();
        String nomeProduto = campos[5].trim();
        String unidadeIndicador = campos[6].trim();
        String valorPrevisto = campos[7].trim();
        String codRegiao = campos[8].trim();
       
        String codMunicipio = "";
        if(campos.length == 10)
          codMunicipio = campos[9].trim();
       
       
        CargaProdutosPPA itemArquivo = new CargaProdutosPPA();
        itemArquivo.setAnoExe(anoExe);
        itemArquivo.setCodMunicipio(codMunicipio);
        itemArquivo.setCodRegiao(codRegiao);
        itemArquivo.setIndObra(indObra);
        itemArquivo.setNomeIndicador(Util.removeEspacosDuplicados(nomeIndicador));
        itemArquivo.setNomeProduto(Util.removeEspacosDuplicados(nomeProduto));
        itemArquivo.setSiglaAcao(siglaAcao);
        itemArquivo.setSiglaProduto(siglaProduto);
        itemArquivo.setUnidadeIndicador(unidadeIndicador);
        itemArquivo.setValorPrevisto(valorPrevisto);
       
        itensArquivo.add(itemArquivo);
      }
     
      Set itens = estruturaProdutos.getItemEstruturaIetts();
      if(itens != null && !itens.isEmpty()){
        for(Iterator it = itens.iterator(); it.hasNext();){
          ItemEstruturaIett item = (ItemEstruturaIett) it.next();

          String chaveItem = item.getItemEstruturaIett().getSiglaIett() + "_" + "_" + item.getNomeIett();
         
          List<ItemEstrtIndResulIettr> indicadores = new ArrayList<ItemEstrtIndResulIettr>(item.getItemEstrtIndResulIettrs());
         
          msg("--> Percorrendo indicadores do item " + item.getNomeIett());

          for(ItemEstrtIndResulIettr indicador : indicadores){

            double previsto2008 = 0;
            double previsto2009 = 0;
            double previsto2010 = 0;
            double previsto2011 = 0;
           
            for(CargaProdutosPPA itemArq : itensArquivo){
              String chaveItemArq = itemArq.getSiglaAcao() + "_" + "_" + itemArq.getNomeProduto();
             
              if(chaveItem.equals(chaveItemArq)){         
                if(indicador.getNomeIettir().equals(itemArq.getNomeIndicador())){
                  if("2008".equals(itemArq.getAnoExe())){
                    previsto2008 += Double.valueOf(itemArq.getValorPrevisto()).doubleValue();
                  }
                  if("2009".equals(itemArq.getAnoExe())){
                    previsto2009 += Double.valueOf(itemArq.getValorPrevisto()).doubleValue();
                  }
                  if("2010".equals(itemArq.getAnoExe())){
                    previsto2010 += Double.valueOf(itemArq.getValorPrevisto()).doubleValue();
                  }
                  if("2011".equals(itemArq.getAnoExe())){
                    previsto2011 += Double.valueOf(itemArq.getValorPrevisto()).doubleValue();
                  }
                }
              }
            }
           
            //Gravar valores previstos para cada ano do indicador
           
            //Gravando para: 2008
            if(previsto2008 > 0){
              msg("-------> Gravando total para 2008: " + previsto2008);
             
              ItemEstrutFisicoIettfPK compId2008 = new ItemEstrutFisicoIettfPK();
              compId2008.setCodExe(exe2008.getCodExe());
              compId2008.setCodIettir(indicador.getCodIettir());
 
              ItemEstrutFisicoIettf iettf2008 = new ItemEstrutFisicoIettf();
             
              //FIXME: Ajustar Carga de Itens
              /* Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
               * Mudou a pk. n�o usa mais chave composta
               * */
              //iettf2008.setComp_id(compId2008);
              iettf2008.setDataInclusaoIettf(Data.getDataAtual());
              //iettf2008.setExercicioExe(exe2008);
              iettf2008.setIndAtivoIettf(Dominios.SIM);
              iettf2008.setItemEstrtIndResulIettr(indicador);
              iettf2008.setQtdPrevistaIettf(Double.valueOf(previsto2008));
             
              session.save(iettf2008);
            }
           
            //Gravando para: 2009
            if(previsto2009 > 0){
              msg("-------> Gravando total para 2009: " + previsto2009);

              ItemEstrutFisicoIettfPK compId2009 = new ItemEstrutFisicoIettfPK();
              compId2009.setCodExe(exe2009.getCodExe());
              compId2009.setCodIettir(indicador.getCodIettir());
 
              ItemEstrutFisicoIettf iettf2009 = new ItemEstrutFisicoIettf();
              //FIXME: Ajustar Carga de Itens
              /* Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
               * Mudou a pk. n�o usa mais chave composta
               * */
              //iettf2009.setComp_id(compId2009);
              iettf2009.setDataInclusaoIettf(Data.getDataAtual());
              //iettf2009.setExercicioExe(exe2009);
              iettf2009.setIndAtivoIettf(Dominios.SIM);
              iettf2009.setItemEstrtIndResulIettr(indicador);
              iettf2009.setQtdPrevistaIettf(Double.valueOf(previsto2009));
             
              session.save(iettf2009);
            }

            //Gravando para: 2010
            if(previsto2010 > 0){
              msg("-------> Gravando total para 2010: " + previsto2010);

              ItemEstrutFisicoIettfPK compId2010 = new ItemEstrutFisicoIettfPK();
              compId2010.setCodExe(exe2010.getCodExe());
              compId2010.setCodIettir(indicador.getCodIettir());
 
              ItemEstrutFisicoIettf iettf2010 = new ItemEstrutFisicoIettf();
              //FIXME: Ajustar Carga de Itens
              /* Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
               * Mudou a pk. n�o usa mais chave composta
               * */
              //iettf2010.setComp_id(compId2010);
              iettf2010.setDataInclusaoIettf(Data.getDataAtual());
              //iettf2010.setExercicioExe(exe2010);
              iettf2010.setIndAtivoIettf(Dominios.SIM);
              iettf2010.setItemEstrtIndResulIettr(indicador);
              iettf2010.setQtdPrevistaIettf(Double.valueOf(previsto2010));
             
              session.save(iettf2010);
            }

            //Gravando para: 2011
            if(previsto2011 > 0){
              msg("-------> Gravando total para 2011: " + previsto2011);
             
              ItemEstrutFisicoIettfPK compId2011 = new ItemEstrutFisicoIettfPK();
              compId2011.setCodExe(exe2011.getCodExe());
              compId2011.setCodIettir(indicador.getCodIettir());
 
              ItemEstrutFisicoIettf iettf2011 = new ItemEstrutFisicoIettf();
              //FIXME: Ajustar Carga de Itens
              /* Mantis 0010128 - Qtd prevista n�o � mais informado por exerc�cio
               * Mudou a pk. n�o usa mais chave composta
               * */
              //iettf2011.setComp_id(compId2011);
              iettf2011.setDataInclusaoIettf(Data.getDataAtual());
              //iettf2011.setExercicioExe(exe2011);
              iettf2011.setIndAtivoIettf(Dominios.SIM);
              iettf2011.setItemEstrtIndResulIettr(indicador);
              iettf2011.setQtdPrevistaIettf(Double.valueOf(previsto2011));
             
              session.save(iettf2011);
            }
          }
        }
      }

     
        msg("++++++++++++++++ [ Realizando Commit ] ++++++++++++++++++++");
      tx.commit(); // Ao descomentar essa linha, n�o esquecer de descomentar o beginTransaction

      msg("++++++++++++++++ [ Processo Finalizado Com Sucesso ] ++++++++++++++++++++");
     
    } catch (Exception e) {
      e.printStackTrace();
        msg("++++++++++++++++ [ Erro no Processo. Executando RollBack ] ++++++++++++++++++++");
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }

    /**
     * M�todo para listar os produtos do COP
     * @return
     * @throws ECARException
     */
    public List listarCargaProdutosCOP() throws ECARException{

        try{
        msg("++++++++++++++++ [ Processo Iniciado ] ++++++++++++++++++++");
           
          List<CargaFinalidadesPPA> itens = new ArrayList<CargaFinalidadesPPA>();
          List<String> listVerif = new ArrayList<String>();
        msg("++++++++++++++++ [ Lendo Arquivo ] ++++++++++++++++++++");
        BufferedReader in = new BufferedReader (new FileReader("/home/aleixo/cop/dadosProdutosOK.csv"));
      String linha="";
      while ((linha=in.readLine()) != null) {
       
        //ANOEXERCICIO; CODPAT; NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        //ANOEXERCICIO; CODPAT; CODPRODUTOPAT; Obra(S/N); NOMEPRODUTOORC; DESCRPRODUTOPAT; SIGLAUNIDMEDIDA; QTDEPRODPATPREV; CODREGIAO; CODMUNICIPIO
        String[] campos = linha.split(";");
       
        String anoExe = campos[0].trim();
        String siglaAcao = campos[1].trim();
        String siglaProduto = campos[2].trim();
        String indObra = campos[3].trim();       
        String nomeIndicador = campos[4].trim();
        String nomeProduto = campos[5].trim();
        String unidadeIndicador = campos[6].trim();
        String valorPrevisto = campos[7].trim();
        String codRegiao = campos[8].trim();
       
        String codMunicipio = "";
        if(campos.length == 10)
          codMunicipio = campos[9].trim();
       
        CargaFinalidadesPPA item = new CargaFinalidadesPPA();
       
        item.setFinalidade(nomeProduto + " - " + siglaProduto + " - " + anoExe);
        item.setSigla(siglaAcao);
       
        String chave = nomeProduto;
        if(!listVerif.contains(chave)){
          listVerif.add(chave);
          itens.add(item);
        }

      }
     
      Collections.sort(itens, new Comparator(){
        public int compare (Object o1, Object o2){
          CargaFinalidadesPPA c1 = (CargaFinalidadesPPA)o1; 
          CargaFinalidadesPPA c2 = (CargaFinalidadesPPA)o2; 
         
          return c1.getFinalidade().compareTo(c2.getFinalidade());
        }
      });
     
      Collections.sort(itens, new Comparator(){
        public int compare (Object o1, Object o2){
          CargaFinalidadesPPA c1 = (CargaFinalidadesPPA)o1; 
          CargaFinalidadesPPA c2 = (CargaFinalidadesPPA)o2; 
         
          return c1.getSigla().compareTo(c2.getSigla());
        }
      });

        msg("++++++++++++++++ [ In�cio do Arquivo ] ++++++++++++++++++++");
       
      FileOutputStream arquivo = new FileOutputStream("/home/aleixo/Desktop/itensRepProd_NOVO.txt");

      for(CargaFinalidadesPPA item : itens){
        String total = item.getSigla() + " - " + item.getFinalidade() + "\n";
        arquivo.write(total.getBytes(Dominios.ENCODING_DEFAULT));
        arquivo.flush();
      }

      arquivo.close();
       
        msg("++++++++++++++++ [ Fim do Arquivo ] ++++++++++++++++++++");

        msg("++++++++++++++++ [ Processo Finalizado Com Sucesso ] ++++++++++++++++++++");
     
        return itens;
    } catch (Exception e) {
      e.printStackTrace();
        msg("++++++++++++++++ [ Erro no Processo. Executando RollBack ] ++++++++++++++++++++");
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
   
    /**
     * Efetuar carga do valor default ("N�o") para o atributo livre "Integraliza��o de Capital" dos
     * itens de n�vel de a��o do PPA 2008-2011.
     *
     * @author aleixo
     * @since 20/08/2007
     * @throws ECARException
     */
    public void efetuarCargaIntegralizacaoDeCapitalDefault() throws ECARException{
     
      final int COD_INT_NAO = 54;
     
      //Buscando a estrutura de n�vel de a��o do PPA 2008-2011
      EstruturaEtt estrutura = (EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(20));
      SisAtributoSatb atbIntNao = (SisAtributoSatb) buscar(SisAtributoSatb.class, Long.valueOf(COD_INT_NAO));
      UsuarioUsu usuarioLogado = ((SegurancaECAR)request.getSession().getAttribute("seguranca")).getUsuario();
     
        Transaction tx = null;

        try{
          msg("+++++++++++++++++ [ INICIO TRANSACAO ] ++++++++++++++++++++");
            tx = session.beginTransaction();
           
            if(estrutura.getItemEstruturaIetts() != null && !estrutura.getItemEstruturaIetts().isEmpty()){

              for(Iterator it = estrutura.getItemEstruturaIetts().iterator(); it.hasNext();){
                ItemEstruturaIett item = (ItemEstruturaIett) it.next();
               
                if(Dominios.NAO.equals(item.getEstruturaEtt().getIndEtapaNivelSuperiorEtt())){
                  ItemEstruturaSisAtributoIettSatb atbLivre = new ItemEstruturaSisAtributoIettSatb();
                  atbLivre.setDataUltManutencao(Data.getDataAtual());
                  atbLivre.setItemEstruturaIett(item);
                  atbLivre.setSisAtributoSatb(atbIntNao);
                  atbLivre.setUsuarioUsu(usuarioLogado);
                  atbLivre.atribuirPKPai();
                 
                 
                  Set atbsLivres = item.getItemEstruturaSisAtributoIettSatbs();

                  boolean podeInserir = true;
                  if(atbsLivres != null && !atbsLivres.isEmpty()){
                    for(Iterator it2 = atbsLivres.iterator(); it2.hasNext();){
                      ItemEstruturaSisAtributoIettSatb aux = (ItemEstruturaSisAtributoIettSatb) it2.next();
                     
                      if(aux.getItemEstruturaIett().equals(item) && aux.getSisAtributoSatb().equals(atbIntNao)){
                        podeInserir = false;
                        break;
                      }
                    }
                  }
                 
                  if(podeInserir){
                    session.save(atbLivre);
                    msg("--> Gravando \"N�o\" para item: " + item.getSiglaIett() + " - " + item.getNomeIett());
                  }
                }
              }
            }
           
          msg("+++++++++++++++++ [ COMMIT TRANSACAO ] ++++++++++++++++++++");
            tx.commit();
          msg("+++++++++++++++++ [ FIM TRANSACAO ] ++++++++++++++++++++");
           
    } catch (Exception e) {
      e.printStackTrace();
      if (tx != null)
        try {
              msg("+++++++++++++++++ [ ROLLBACK TRANSACAO ] ++++++++++++++++++++");
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }           
    }
}
TOP

Related Classes of ecar.dao.TempCargaIettsBDDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.