Package br.com.colegio.dao.storage

Source Code of br.com.colegio.dao.storage.BoletoData

package br.com.colegio.dao.storage;

import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import br.com.colegio.dao.BoletoDAO;
import br.com.colegio.util.UtilData;
import br.com.colegio.vo.Boleto;

public class BoletoData {
  private static BoletoData instance;
  private Map<String,Boleto> data = new TreeMap<String, Boleto>();
  private Map<String,Set<Boleto>> dataAluno = new TreeMap<String,Set<Boleto>>();
  private Map<String,Map<String,Map<String,Boleto>>> dataFiltro = new TreeMap<String,Map<String,Map<String,Boleto>>>();

  private BoletoData(){}

  public static BoletoData getInstance(){
    if(instance == null)
      instance = new BoletoData();

    return instance;
  }

  private Map<String,Boleto> getData(){
    if(data.size() == 0){
      Collection<Object> r = BoletoDAO.list();

      if(r != null)
        for(Object o : r){
          Boleto b = (Boleto)o;
          data.put(b.getCodigo(),b);

          if(!dataAluno.containsKey(b.getAlunoBoleto().getCodigo()))
            dataAluno.put(b.getAlunoBoleto().getCodigo(),new HashSet<Boleto>());

          dataAluno.get(b.getAlunoBoleto().getCodigo()).add(b);

          if(dataFiltro.containsKey(b.getStatusBoleto().getCodigo())){
            if(dataFiltro.get(b.getStatusBoleto().getCodigo()).containsKey(UtilData.format(b.getDataVencimento(),"yyyyMM")))
              dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
                  UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
            else {
              dataFiltro.get(b.getStatusBoleto().getCodigo()).put(
                  UtilData.format(b.getDataVencimento(),"yyyyMM"),new HashMap<String,Boleto>());
              dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
                  UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
            }
          }
          else {
            dataFiltro.put(b.getStatusBoleto().getCodigo(),new HashMap<String,Map<String,Boleto>>());
            dataFiltro.get(b.getStatusBoleto().getCodigo()).put(
                UtilData.format(b.getDataVencimento(),"yyyyMM"),new HashMap<String,Boleto>());
            dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
                UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
          }
        }
    }
    return data;
  }

  public Boleto get(String cod){
    return getData().get(cod);
  }

  public void atualizaData(Boleto b){
    getData().put(b.getCodigo(),b);

    if(dataFiltro.containsKey("A"))
      if (dataFiltro.get("A").containsKey(UtilData.format(b.getDataVencimento(),"yyyyMM")))
        dataFiltro.get("A").get(UtilData.format(b.getDataVencimento(),"yyyyMM")).remove(b.getCodigo());

    if(dataFiltro.containsKey("C"))
      if (dataFiltro.get("C").containsKey(UtilData.format(b.getDataVencimento(),"yyyyMM")))
        dataFiltro.get("C").get(UtilData.format(b.getDataVencimento(),"yyyyMM")).remove(b.getCodigo());

    if(dataFiltro.containsKey("P"))
      if (dataFiltro.get("P").containsKey(UtilData.format(b.getDataVencimento(),"yyyyMM")))
        dataFiltro.get("P").get(UtilData.format(b.getDataVencimento(),"yyyyMM")).remove(b.getCodigo());

    if(!dataAluno.containsKey(b.getAlunoBoleto().getCodigo()))
      dataAluno.put(b.getAlunoBoleto().getCodigo(),new HashSet<Boleto>());

    dataAluno.get(b.getAlunoBoleto().getCodigo()).add(b);

    if(dataFiltro.containsKey(b.getStatusBoleto().getCodigo())){
      if(dataFiltro.get(b.getStatusBoleto().getCodigo()).containsKey(UtilData.format(b.getDataVencimento(),"yyyyMM")))
        dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
            UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
      else {
        dataFiltro.get(b.getStatusBoleto().getCodigo()).put(
            UtilData.format(b.getDataVencimento(),"yyyyMM"),new HashMap<String,Boleto>());
        dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
            UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
      }
    }
    else {
      dataFiltro.put(b.getStatusBoleto().getCodigo(),new HashMap<String, Map<String,Boleto>>());
      dataFiltro.get(b.getStatusBoleto().getCodigo()).put(
          UtilData.format(b.getDataVencimento(),"yyyyMM"),new HashMap<String,Boleto>());
      dataFiltro.get(b.getStatusBoleto().getCodigo()).get(
          UtilData.format(b.getDataVencimento(),"yyyyMM")).put(b.getCodigo(),b);
    }
  }

  public void atualizaData(Set<Boleto> sb){
    for(Boleto b : sb) atualizaData(b);
  }

  public Set<Boleto> getByAluno(String codAluno){
    getData();
    return dataAluno.get(codAluno);
  }

  public Set<Boleto> getByAluno(String codAluno, String status){
    getData();
    Set<Boleto> r = new HashSet<Boleto>();

    if(dataAluno.containsKey(codAluno))
      for(Boleto b : dataAluno.get(codAluno))
        if(b.getStatusBoleto().getCodigo().equalsIgnoreCase(status))
          r.add(b);
    return r;
  }

  public Set<Boleto> getBoletos(){
    Set<Boleto> r = new HashSet<Boleto>();
    for (String k : getData().keySet())
      r.add(getData().get(k));

    return r;
  }

  public Set<Boleto> getBoletos(Date data_ini, String status){
    Set<Boleto> r = new HashSet<Boleto>();
    String      d = UtilData.format(data_ini,"yyyyMM");

    getData();

    if(status.trim().equals("")){
      for(String s : dataFiltro.keySet())
        if(dataFiltro.get(s).containsKey(d))
          for(String k : dataFiltro.get(s).get(d).keySet())
            r.add(dataFiltro.get(s).get(d).get(k));
    }
    else {
      if(dataFiltro.containsKey(status) && dataFiltro.get(status).containsKey(d))
        for(String k : dataFiltro.get(status).get(d).keySet())
          r.add(dataFiltro.get(status).get(d).get(k));
    }
    return r;
  }

  public String registrarPagamento(String codBoleto,
                  Date dataPag,
                  String tipoPag,
                  int canalPag,
                  double valor,
                  double desconto,
                  double multa)
  {
    Boleto b = get(codBoleto);
    String r = "";

    if(b != null){
      b.setDataPagamento(dataPag);
      b.setPagamentoTipo(tipoPag);
      b.setPagamentoValor(valor);
      b.setPagamentoDesconto(desconto);
      b.setPagamentoMulta(multa);
      b.setPagamentoCanalBoleto(canalPag);
      b.setStatusBoleto("P");

      try {
        BoletoDAO.save(b);
        atualizaData(b);
      }
      catch(Exception e){
        return "Erro ao gravar";
      }
    }
    else
      return "Boleto nao encontrado : " + codBoleto;

    return "OK" + r;
  }

  public String alterarStatus(String codBoleto, String status){
    Boleto b = get(codBoleto);
    String r = "";

    if(b != null){
      b.setStatusBoleto(status);

      try {
        BoletoDAO.save(b);
        atualizaData(b);
      }
      catch(Exception e){
        return "Erro ao gravar";
      }
    }
    else
      return "Boleto nao encontrado : " + codBoleto;

    return "OK" + r;
  }
}
TOP

Related Classes of br.com.colegio.dao.storage.BoletoData

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.