public List<Infracao> getInfracoesEntre(Date inicio, Date fim) {
    List<Infracao> infracoes = new LinkedList<Infracao>(getInfracoes());
    List<Infracao> lista = new LinkedList<Infracao>();

    for (Infracao inf : infracoes) {
      if ((inf.getDataInf().compareTo(inicio) >= 0) && (inf.getDataInf().compareTo(fim) <= 0))
        lista.add(inf);
    }

    return lista;
  }
  public void salvarInfracao(Infracao inf)
      throws ExcecaoPlacaInexistente, ExcecaoDataInfCondIdadeImpropria,
          ExcecaoDataInfMenorAnoFabVei {

    if (banco.getVeiculoComPlaca(inf.getPlaca()) == null) throw new ExcecaoPlacaInexistente();

    if (ManipuladorData.calculeDiferencaDeAnos(
            inf.getDataInf(),
            this.getCondutorComCpf(this.getVeiculoComPlaca(inf.getPlaca()).getCpfDono())
                .getDataNasc())
        < 18) throw new ExcecaoDataInfCondIdadeImpropria();

    int anoFabVeiculo = this.retorneAnoFabVei(inf.getPlaca());
    int anoInf = ManipuladorData.getAnoDeData(inf.getDataInf());

    if (anoFabVeiculo > anoInf) throw new ExcecaoDataInfMenorAnoFabVei();

    banco.addInfracao(inf);
  }
  public Object[] monteDadosInf(Infracao inf) {
    Object[] s = new Object[5];
    Condutor cond = banco.getCondutorComCpf(banco.getVeiculoComPlaca(inf.getPlaca()).getCpfDono());

    s[0] = (inf.getNumInfracao());
    s[1] = FormataPlaca.coloqueMascara(inf.getPlaca());
    s[2] = ManipuladorData.format(inf.getDataInf());
    s[3] = FormataCPF.formatCpf(cond.getCPF());
    s[4] = cond.getNome();

    return s;
  }