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 void salvarCondutor(Condutor cond)
      throws ExcecaoCPFExistente, ExcecaoIdadeImpropriaParaCondutor {
    Condutor condutor = banco.getCondutorComCpf(cond.getCPF());

    if (condutor != null) throw new ExcecaoCPFExistente();

    if (ManipuladorData.calculeDiferencaDeAnos(new Date(), cond.getDataNasc()) < 18)
      throw new ExcecaoIdadeImpropriaParaCondutor();

    banco.addCondutor(cond);
  }
  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;
  }
  public Collection<Condutor> getCondutoresComDataIncompleta(String data)
      throws ExcecaoPesquisaSemResultado {
    Collection<Condutor> conds = new ArrayList<Condutor>(getCondutores());

    Collection<Condutor> condutores = new LinkedList<Condutor>();

    for (Condutor c : conds) {
      if (ManipuladorData.getDataComoString(c.getDataNasc()).contains(data)) condutores.add(c);
    }
    if (condutores.isEmpty()) throw new ExcecaoPesquisaSemResultado();

    return condutores;
  }