Bom dia pessoal!
Estou migrando informações de uma base de dados antiga e estou meio perdido no que diz respeito a conversão de variáveis de referencia.
Tenho dois tipos de usuários Permissionario e Permissionario Militar e em dado momento preciso converter um permissionario em um permissionario militar.
Nos meus beans PermMilitar é subclasse de Permissionario.
Vou postar todo o método e indicar onde está o erro!
Gostaria que se voces encontrarem coisas estranhas no meu código deixem a crítica.
public void migrarPermissionarios() {
AbreConExternas conExternas = new AbreConExternas();
PreparedStatement pStatement = null;
ResultSet rSet = null;
try {
String sql = "SELECT * FROM permissionario";
pStatement = conExternas.connSisCoP().prepareStatement(sql);
rSet = pStatement.executeQuery();
Permissionario permissionario = new Permissionario();
while(rSet.next()){
if(rSet.getString("nr_identidade").trim().equalsIgnoreCase("SEM IDT") ||
rSet.getString("nr_identidade").trim().equalsIgnoreCase("1111111111") ||
rSet.getString("nr_identidade").length() > 12) {
outputLog.println(rSet.getString("nr_identidade")+" é inválida. O SisCoP tentará corrigir o erro!");
//Consulta a identidade utilizando o prec_cp para busca
String consultaIdentificador = "select IDENTIFICADOR_COD from pessoa where PREC_CP = '"+rSet.getString("prec_cp")+"'";
PreparedStatement psPrecCP = conExternas.connEBCORP().prepareStatement(consultaIdentificador);
ResultSet rSPrecCP = psPrecCP.executeQuery();
if (rSPrecCP.next()) {
//Seta o identificador_cod do servidor civil como nr_identidade
outputLog.println("Identidade encontrada utilzando o prec_cp do registro!");
permissionario.setNrIdentidade(rSPrecCP.getString("IDENTIFICADOR_COD"));
}else {
//Consulta a identidade utilizando o nome para busca
String consultaNome = "select IDENTIFICADOR_COD from pessoa where nome = '"+rSet.getString("nome").trim()+"'";
PreparedStatement pSNome = conExternas.connEBCORP().prepareStatement(consultaNome);
ResultSet rSNome = pSNome.executeQuery();
if(rSNome.next()) {
outputLog.println("Identidade encontrada utilzando o nome do registro!");
permissionario.setNrIdentidade(rSNome.getString("IDENTIFICADOR_COD"));
}else {
outputLog.println("Identidade não encontrada! O SisCoP criará uma utilzando o nome do registro!");
int nrIdentidade = 1111111112;
permissionario.setNrIdentidade(""+nrIdentidade);
nrIdentidade++;
}
}
}else {
permissionario.setNrIdentidade(rSet.getString("nr_identidade"));
}
permissionario.setCpf(rSet.getString("cpf"));
permissionario.setDeSenha("1234");
permissionario.setDtCadastro(rSet.getTimestamp("dt_implantacao"));
permissionario.setDtNascimento(rSet.getDate("dt_nascimento"));
permissionario.setEmail(rSet.getString("email_perm"));
permissionario.setFone(rSet.getString("tel_perm"));
permissionario.setNome(rSet.getString("nome"));
String codPostoGrad = rSet.getString("pg_cod_posto_grad");
Orgao orgao = new Orgao();
if(rSet.getString("ua_cod_ua") == null || rSet.getString("ua_cod_ua").length() == 0) {
orgao.setCodOrgao(999999);
}else{
orgao.setCodOrgao(Integer.parseInt(rSet.getString("ua_cod_ua")));
}
permissionario.setOrgao(orgao);
Perfil perfil = new Perfil();
perfil.setIdPerfil(6);
permissionario.setPerfil(perfil);
PermSituacao situacao = new PermSituacao();
situacao.setIdPermSituacao(mapaSituacaoPerm.get(rSet.getInt("sit_cod_situacao_perm")));
permissionario.setPermSituacao(situacao);
PermTipo tipo = new PermTipo();
tipo.setIdPermTipo(1);
permissionario.setPermTipo(tipo);
if(codPostoGrad.equals(88) || codPostoGrad.equals(90)) {
PermissionarioDAO.getInstance().save(permissionario);
}else {
PermMilitar militar = new PermMilitar();
militar.setNome(permissionario.getNome());
militar.setNrIdentidade(permissionario.getNrIdentidade());
militar.setCpf(permissionario.getCpf());
militar.setDeSenha(permissionario.getDeSenha());
militar.setDtCadastro(permissionario.getDtCadastro());
militar.setDtNascimento(permissionario.getDtNascimento());
militar.setEmail(permissionario.getEmail());
militar.setFone(permissionario.getFone());
militar.setOrgao(permissionario.getOrgao());
militar.setPerfil(permissionario.getPerfil());
militar.setPermSituacao(permissionario.getPermSituacao());
militar.setPermTipo(permissionario.getPermTipo());
PostoGradEspec postoGradEspec = new PostoGradEspec();
postoGradEspec.setCodPostoGradEspec(Integer.parseInt(codPostoGrad));
militar.setPostoGradEspec(postoGradEspec);
QASQMS qas = new QASQMS();
qas.setCodQASQMS(("5812"));
militar.setQasQMS(qas);
militar.setNomeGuerra(rSet.getString("nome_guerra"));
PermissionarioDAO.getInstance().save(militar);
// Verifica se militar possuia solicitação de PNR em aberto
if(militar.getPermSituacao().getIdPermSituacao() == 2) {
SolicitacaoPNR solicitacaoPNR = new SolicitacaoPNR();
solicitacaoPNR.setPermissionario(militar);
solicitacaoPNR.setDtApresentacao(rSet.getTimestamp("dt_implantacao"));
solicitacaoPNR.setDtApresentacao(rSet.getDate("prev_dt_apresentacao"));
solicitacaoPNR.setDescObservacao(rSet.getString("obs_permissionario"));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Aqui é onde estou com dúvida. Estou tendo que setar os dados do permissionário um a um para poder funcionar.
gostaria de fazer algo do tipo.
Permissionario perm = new PermMilitar();
perm = permissionario;
PermMilitar militar = (PermMilitar) perm;
e substituir isso:
PermMilitar militar = new PermMilitar();
militar.setNome(permissionario.getNome());
militar.setNrIdentidade(permissionario.getNrIdentidade());
militar.setCpf(permissionario.getCpf());
militar.setDeSenha(permissionario.getDeSenha());
militar.setDtCadastro(permissionario.getDtCadastro());
militar.setDtNascimento(permissionario.getDtNascimento());
militar.setEmail(permissionario.getEmail());
militar.setFone(permissionario.getFone());
militar.setOrgao(permissionario.getOrgao());
militar.setPerfil(permissionario.getPerfil());
militar.setPermSituacao(permissionario.getPermSituacao());
militar.setPermTipo(permissionario.getPermTipo());
PostoGradEspec postoGradEspec = new PostoGradEspec();
postoGradEspec.setCodPostoGradEspec(Integer.parseInt(codPostoGrad));
militar.setPostoGradEspec(postoGradEspec);
QASQMS qas = new QASQMS();
qas.setCodQASQMS(("5812"));
militar.setQasQMS(qas);
militar.setNomeGuerra(rSet.getString("nome_guerra"));
PermissionarioDAO.getInstance().save(militar);
Aguardo ajuda!