static public Date readDateFromConsole(String strPrompt) { do {
try {
String strDate = readLineFromConsole(strPrompt);
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = df.parse(strDate);
return date;
} catch (ParseException ex) {
Logger.getLogger(Utils.class.getName()).log(Level.SEVERE,
null, ex);
}
} while (true);
}
Na classe ElaborarContratoUI.java do package rentacarapp_ui existe o método indicaDataDevolucaoPrevista():
private Date indicaDataDevolucaoPrevista() { Date today = new Date();
Date ddp;
do {
ddp = Utils.readDateFromConsole(
"Introduza a data de devolução prevista (dd-mm-aaaa): ");
} while (ddp.before(today));
return ddp;
}
Classe ContratoAluguer do package rentacarapp_model Antiga:
public class ContratoAluguer {
public ContratoAluguer() {
m_listLinhaServicoAdicional = new ArrayList<LinhaServicoAdicional>();
m_listCondutorAutorizado = new ArrayList<CondutorAutorizado>();
} . . . }
Nova:
public class ContratoAluguer {
Date dataInicioContrato;
Automovel m_automovel;
Date m_dataDevolucaoPrevista;
List<LinhaServicoAdicional> m_listLinhaServicoAdicional;
LocalDevolucao m_localDevolucao;
List<CondutorAutorizado> m_listCondutorAutorizado;
String m_strNomeCliente;
String m_strEnderecoCliente;
String m_strTelefoneCliente;
String m_strEmailCliente;
String m_strObservacoesCliente;
AutorizacaoDebitoCartaoCredito m_autorizacaoDebitoCartaoCredito;
public ContratoAluguer() {
dataInicioContrato = getDataInicioContratoDefault();
m_listLinhaServicoAdicional = new ArrayList<LinhaServicoAdicional>();
m_listCondutorAutorizado = new ArrayList<CondutorAutorizado>();
} . . .
private Date getDataInicioContratoDefault() { return new Date();
}
public float getValorTotal() {
float valorAuto = automovel.getPrecoDiario();
long nrDias = calcularNrDias();
float valorLSA = 0;
for(int i=0; i<m_listLinhaServicoAdicional.size(); i++) {
LinhaServicoAdicional lsa = m_listLinhaServicoAdicional.get(i);
valorLSA += lsa.getValorLinha();
}
return (nrDias * (valorAuto + valorLSA));
}
private long calcularNrDias() {
long dataInicio = dataInicioContrato.getTime(); // Em milisegundos long dataFim = m_dataDevolucaoPrevista.getTime(); // Em milisegundos long UmDia = 24 * 60 * 60 * 1000; // Em milisegundos return (dataFim-dataInicio)/UmDia + 1; // Divisao inteira }
public void addServicoAdicional(ServicoAdicional sa) {
LinhaServicoAdicional lsa = new LinhaServicoAdicional(sa, 1);
m_listLinhaServicoAdicional.add(lsa);
} }
public class GrupoAutomovel { private String m_strNome;
private int m_nPortas;
private String m_strClasse;
private String m_strCombustivel;
private boolean m_bArCondicionado;
private float precoDiario;
public GrupoAutomovel(String strNome, int nPortas, String strClasse, String strCombustivel, boolean bArCondicionado, float precoDiario) { setNome(strNome);
setPortas(nPortas);
setClasse(strClasse);
setCombustivel(strCombustivel);
setArCondicionado(bArCondicionado);
setPrecoDiario(precoDiario);
}
public float getPrecoDiario() { return precoDiario;
}
public final void setPrecoDiario(float preco) { precoDiario = preco;
}
Classe Automovel do package rentacarapp_model
public class Automovel { . . .
public float getPrecoDiario() { return m_GA.getPrecoDiario();
}
Classe LinhaServicoAdicional do package rentacarapp_model
public class LinhaServicoAdicional {
private ServicoAdicional m_servicoAdicional;
private int qtd;
public LinhaServicoAdicional(ServicoAdicional sa, int qtd) { m_servicoAdicional = sa;
this.qtd = qtd;
}
public int getQuantidade() { return qtd;
}
public float getValorLinha() {
return m_servicoAdicional.getPrecoDiario()*qtd;
}
Classe ServicoAdicional do package rentacarapp_model
public class ServicoAdicional {
private String m_strServicoAdicional;
private float precoDiario;
private boolean acumulavel;
public ServicoAdicional(String strServicoAdicional, float precoDiario, boolean acumulavel) { m_strServicoAdicional = strServicoAdicional;
this.precoDiario = precoDiario;
this.acumulavel = acumulavel;
}
public boolean isAcumulavel() { return acumulavel;
}
public String getDescricao() { return m_strServicoAdicional;
}
public float getPrecoDiario() { return precoDiario;
private void fillInCatalogoGrupoAutomovel() { GrupoAutomovel ga = new GrupoAutomovel(
"Grupo A", 3, "utilitário", "gasolina", false, 37.69f);
m_listCatalogoGrupoAutomovel.add(ga);
ga = new GrupoAutomovel(
"Grupo B", 5, "utilitário","gasolina", false, 48.79f);
m_listCatalogoGrupoAutomovel.add(ga);
ga = new GrupoAutomovel(
"Grupo C", 5, "familiar compacto","gasolina", true, 59.39f);
m_listCatalogoGrupoAutomovel.add(ga);
}
private void fillInCatalogoServicoAdicional() { ServicoAdicional sa = new ServicoAdicional(
"cadeira de criança", 5.99f, true);
m_listCatalogoServicoAdicional.add(sa);
sa = new ServicoAdicional("GPS", 10.99f,false);
m_listCatalogoServicoAdicional.add(sa);
sa = new ServicoAdicional("Seguro contra todos os riscos", 7.49f, false);
m_listCatalogoServicoAdicional.add(sa);
}