package control;
import dao.CarroDao;
import dao.FabricaConexao;
import dao.FabricaDao;
import dao.FuncionarioDao;
import dao.LocacaoDao;
import dao.OficinaDao;
import dao.RevisaoDao;
import domain.Carro;
import domain.Entrega;
import domain.Funcionario;
import domain.Locacao;
import domain.Oficina;
import domain.Revisao;
import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Vector;
import util.Conexao;
import util.ConexaoException;
import util.MinhaException;
public class ControladoraRevisao {
private Vector<Revisao> vetRevisoes = new Vector<Revisao>();
private int marc;
private Vector novaRevisao;
public Vector getNovaRevisao() {
return novaRevisao;
}
public void setNovaRevisao(Vector novaRevisao) {
this.novaRevisao = novaRevisao;
}
public int getMarc() {
return marc;
}
public void setMarc(int marc) {
this.marc = marc;
}
public Vector<Revisao> getVetRevisoes() {
return vetRevisoes;
}
public Vector criarLinhaRevisao(Revisao rev){
Vector revisao = new Vector();
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
revisao.addElement(rev.getCodRevisao());
revisao.addElement(rev.getEntrega().getLocacao().getCliente().getNome());
revisao.addElement(rev.getEntrega().getLocacao().getCarro().getPlaca());
revisao.addElement(rev.getEntrega().getCodEntrega());
if(rev.getFuncionario().getCodFuncionario() == 0)
revisao.addElement("O | "+rev.getOficina().getNomeOficina());
else
revisao.addElement("M | "+rev.getFuncionario().getNome());
revisao.addElement(rev.getDescRevisao());
revisao.addElement(rev.getValorRevisao());
String data = formatoData.format(rev.getDataEntrada());
revisao.addElement(data);
data = formatoData.format(rev.getDataSaida());
revisao.addElement(data);
return revisao;
}
public Revisao novaRevisao(Vector revisao) throws ParseException, MinhaException, ConexaoException, SQLException{
Revisao nova = new Revisao();
Locacao loca = new Locacao();
loca.setCodLocacao(Integer.parseInt(revisao.get(7).toString()));
Entrega entre = new Entrega();
entre.setCodEntrega(Integer.parseInt(revisao.get(0).toString()));
entre.setLocacao(loca);
nova.setEntrega(entre);
nova.setDescRevisao(revisao.get(1).toString());
String valorTotal = revisao.get(2).toString();
valorTotal = valorTotal.replace(",", ".");
nova.setValorRevisao(Double.parseDouble(valorTotal));
nova.setDataEntrada(Date.valueOf(revisao.get(3).toString()));
nova.setDataSaida(Date.valueOf(revisao.get(4).toString()));
if(revisao.get(5).toString().equals("mecanico")){
FuncionarioDao funDao = FabricaDao.getFuncionarioDao("JDBC");
Funcionario fun = funDao.selecionarFuncionariosPorNome(revisao.get(6).toString());
nova.setFuncionario(fun);
}
else{
OficinaDao oficDao = FabricaDao.getOficinaDao("JDBC");
Oficina of = oficDao.selecionarOficinaPorNome(revisao.get(6).toString());
nova.setOficina(of);
}
return nova;
}
public void alterarRevisao (Vector revisao) throws MinhaException, SQLException, ParseException, ConexaoException {
Conexao conexao = FabricaConexao.obterConexao();
RevisaoDao revisaoDao = FabricaDao.getRevisaoDao("JDBC");
CarroDao carroDao = FabricaDao.getCarroDao("JDBC");
Revisao atualizada = this.novaRevisao(revisao);
atualizada.setCodRevisao(Integer.parseInt(revisao.get(8).toString()));
int codCarro = carroDao.obterCodCarro(Integer.parseInt(revisao.get(7).toString()));
Carro car = new Carro();
car.setCodCarro(codCarro);
revisaoDao.alterarRevisao(atualizada,conexao);
carroDao.mudarDisponibilidade(conexao, car);
}
public void inserirRevisao (Vector revisao) throws MinhaException, SQLException, ParseException, ConexaoException {
RevisaoDao revisaoDao = FabricaDao.getRevisaoDao("JDBC");
Revisao nova = this.novaRevisao(revisao);
revisaoDao.inserirRevisao(nova);
}
public void removerRevisao () throws MinhaException, SQLException, ConexaoException {
RevisaoDao revisaoDao = FabricaDao.getRevisaoDao("JDBC");
revisaoDao.removerRevisao(this.vetRevisoes.get(this.marc));
this.vetRevisoes.remove(marc);
}
public Revisao selecionarRevisao (Revisao revisao) {
return null;
}
public Vector<Revisao> selecionarTodasRevisoes () throws MinhaException, SQLException, ConexaoException {
RevisaoDao revisaoDao = FabricaDao.getRevisaoDao("JDBC");
vetRevisoes = revisaoDao.selecionarTodasRevisoes();
return vetRevisoes;
}
public int ultimaRevisao() throws MinhaException, SQLException, ConexaoException {
RevisaoDao revisaoDao = FabricaDao.getRevisaoDao("JDBC");
int ultRevisao = revisaoDao.ultRevisao();
return ultRevisao;
}
public int codLocacao(String nome) throws MinhaException, SQLException, ConexaoException {
LocacaoDao locacaoDao = FabricaDao.getLocacaoDao("JDBC");
int codLocacao = locacaoDao.obterCodLocacao(nome);
return codLocacao;
}
public Vector obterLinhasRevisao() throws MinhaException, SQLException, ConexaoException{
Vector<Revisao> revisoes = this.selecionarTodasRevisoes();
Vector linhas = new Vector();
for (int i = 0; i < revisoes.size(); i++) {
linhas.addElement(this.criarLinhaRevisao(revisoes.get(i)));
}
return linhas;
}
public int obterUltimaRevisao() throws MinhaException, SQLException, ConexaoException{
int valorRevisao = this.ultimaRevisao();
return valorRevisao;
}
public int obterCodLocacao(String nome) throws MinhaException, SQLException, ConexaoException{
int codLocacao = this.codLocacao(nome);
return codLocacao;
}
public Vector buscarDadosCompletos(Revisao rev) {
Vector revisao = new Vector();
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
revisao.addElement(rev.getCodRevisao()); //0
revisao.addElement(rev.getEntrega().getLocacao().getCliente().getNome()); //1
revisao.addElement(rev.getEntrega().getLocacao().getCarro().getPlaca()); //2
revisao.addElement(rev.getEntrega().getLocacao().getCarro().getChassi()); //3
revisao.addElement(rev.getEntrega().getCodEntrega()); //4
if(rev.getFuncionario() == null){
revisao.addElement("oficina"); //5
revisao.addElement(rev.getOficina().getNomeOficina()); //6
}
else{
revisao.addElement("funcionario"); //5
revisao.addElement(rev.getFuncionario().getNome()); //6
}
revisao.addElement(rev.getDescRevisao()); //7
revisao.addElement(rev.getValorRevisao()); //8
String data = formatoData.format(rev.getDataEntrada());
revisao.addElement(data); //9
data = formatoData.format(rev.getDataSaida());
revisao.addElement(data); //10
return revisao;
}
public Vector obterCarro(Vector linha, int cod) throws MinhaException, SQLException, ConexaoException {
Locacao loca = new Locacao();
if (cod == 0){
loca.setCodLocacao(Integer.parseInt(linha.get(1).toString()));
}else if (linha == null ){
loca.setCodLocacao(cod);
}
CarroDao carroDao = FabricaDao.getCarroDao("JDBC");
Carro carro = carroDao.selecionarCarro(loca);
Vector vetCarro = new Vector();
vetCarro.addElement(criarLinhaCarro(carro));
return vetCarro;
}
public Vector criarLinhaCarro(Carro car){
Vector vetCarro = new Vector();
vetCarro.addElement(car.getModelo());
vetCarro.addElement(car.getPlaca());
vetCarro.addElement(car.getChassi());
return vetCarro;
}
}