Bom, eu criei uma lista com um select no banco de dados, e criei ela no singleton, mas estou com duvida em como acessar os metodos, ou não é possível?
Codigo do meu DAO;
public List<Requisicao> pegarRequisicoesUser() {
List<Requisicao> requisicoes = new ArrayList<>();
String sql = "SELECT * FROM equipamento_requisicao equipreq INNER JOIN equipamento_user equipuser ON (equipreq.idequipamento_user = equipuser.id_equipamento_do_usuario) INNER JOIN usuario user ON (user.id_usuario=equipuser.idusuario) INNER JOIN equipamentos equip ON (equip.id_equipamentos = equipuser.idequipamentos) INNER JOIN detalhe_status dStatus ON (dStatus.idequipamento_requisicao= equipreq.id_requisicao) INNER JOIN status_requisicao statusreq on (statusreq.id_status= dStatus.idstatus) INNER JOIN permissao p ON(user.idpermissao= p.id_permissao) INNER JOIN departamentos dp ON(user.iddepartamento = dp.id_departamentos) INNER JOIN chefe_departamento cp ON(dp.id_departamentos = cp.iddepartamento) where statusreq.categoria='Ativo' and user.id_usuario = "+ Sessao.getInstancia().getUsuario().getId() + " ";
try {
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
//CHEFES DE DEPARTAMENTOS
// usuario chefe depart
Usuario usuarioChefe = new Usuario();
usuarioChefe.setId(rs.getLong("cp.idusuario"));
// usuario chefe depart
// departamento chefe
Departamento departamentoChefe = new Departamento();
departamentoChefe.setId_departamento(rs.getInt("cp.iddepartamento"));
// departamento chefe
// INICIO DA TABELA CHEFE
ChefesDepartamentos chefes = new ChefesDepartamentos();
chefes.setId_chefe(rs.getInt("cp.id_chefe"));
chefes.setCpIdusuario(usuarioChefe);
chefes.setCpIddepartamento(departamentoChefe);
// FIM TABELA CHEFE
// FIM // PARA ESTUDOS
// INICIO TABELA USUARIO
//Permissao Usuario
Permissao permissaoUsuario = new Permissao();
permissaoUsuario.setId_permissao(rs.getInt("user.idpermissao"));
permissaoUsuario.setCategoria_permissao(rs.getString("p.categoria"));
//fim permissao usuario
//incio departamento usuario
Departamento departamentoUsuario = new Departamento();
departamentoUsuario.setId_departamento(rs.getInt("dp.id_departamentos"));
departamentoUsuario.setNome_setor(rs.getString("dp.nome_setor"));
//FIM
// usuario
Usuario usuario = new Usuario();
usuario.setNome(rs.getString("user.nome"));
usuario.setId(rs.getLong("user.id_usuario"));
usuario.setMatricula(rs.getString("user.matricula"));
usuario.setLogin(rs.getString("user.login"));
usuario.setpUsuario(permissaoUsuario);
usuario.setdUsuario(departamentoUsuario);
// FIM TABELA USUARIO
//equipamento // equipamento user tabelas
Equipamentos equipamento = new Equipamentos();
equipamento.setEquipamento_nome(rs.getString("equip.equipamento_nome"));
equipamento.setSerial_equipamento(rs.getString("equipuser.serial_equipamento"));
equipamento.setId_equipamento_do_Usuario(rs.getLong("equipreq.idequipamento_user"));
//status tabela
Status status = new Status();
status.setCategoria(rs.getString("statusreq.categoria"));
status.setIdstatus(rs.getInt("statusreq.id_status"));
//status detalhes tabela
Usuario usuarioStatus = new Usuario();//id do usuaro na tabela detalhes status
usuarioStatus.setId(rs.getLong("dStatus.idusuario"));
StatusDetalhes statusDetalhes = new StatusDetalhes();
statusDetalhes.setId_statusdetalhes(rs.getLong("dStatus.id_statusdetalhes"));
statusDetalhes.setData_status(rs.getTimestamp("dStatus.data"));
statusDetalhes.setObservacao_status(rs.getString("dStatus.observacao"));
statusDetalhes.setIdUsuario(usuarioStatus);
statusDetalhes.setIdStatus(status);
// Id da requisicao na tabela detalhes status
Requisicao requisicaoStatus = new Requisicao();
requisicaoStatus.setId(rs.getLong("dStatus.idequipamento_requisicao"));
//requisicao tabela
Requisicao req = new Requisicao();
req.setId(rs.getLong("equipreq.id_requisicao"));
req.setNome(rs.getString("equipreq.nome"));
req.setData_criada(rs.getTimestamp("equipreq.data_requisicao"));
req.setMotivo(rs.getString("equipreq.observacao"));
req.setReqEquipamento(equipamento);
req.setReqStatus(statusDetalhes);
req.setReqUsuario(usuario);
req.setReqStatus_Detalhes(statusDetalhes);
req.setChefes(chefes);
requisicoes.add(req);
}
stmt.close();
rs.close();
} catch (SQLException ex) {
Logger.getLogger(RequisicaoDAO.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
return requisicoes;
}
codigo do meu singleton:
private List<Requisicao> requisicaolist;
public List<Requisicao> getRequisicaolist() {
return requisicaolist;
}
public void setRequisicaolist(List<Requisicao> requisicaolist) {
this.requisicaolist = requisicaolist;
}
como eu conseguiria chamar metodos
RequisicaoDAO dao = new RequisicaoDAO();
aSessao.getInstancia().setRequisicaolist(dao.pegarRequisicoesUser());
ou não é possível e eu estou viajando?
aSessao
é o nome da classe ou é uma variável? Como você está declarando isso?
**[quote=“lucastody, post:2, topic:389611, full:true”]
aSessao
é o nome da classe ou é uma variável? Como você está declarando isso?
[/quote]
nome da variável.
private static Sessao aSessao;
Do jeito que vc fez, vc até consegue, só tem que tomar alguns cuidados com a validade dos dados que estão carregados no singleton.
Sendo um singleton, vc não precisa declarar variável pra ela não. Apenas chame assim:
Sessao.getInstancia().seuMetodo();
mas no caso é uma lista
eu setei essa lista ao logar com um metodo do meu DAO para criar uma lista
minha dúvida é como acessar esses metodos / esses valores dessa lista.
Use o método get que retorna a lista
List<Requisicao> requisicaolist = Sessao.getInstancia.getRequisicaolist()
Com a lista obtida, vc consegue percorrer ela e acessar seus itens e as propriedades de cada item.
1 curtida
Lucas_Camara:
Use o método get que retorna a lista
List<Requisicao> requisicaolist = Sessao.getInstancia.getRequisicaolist()
Com a lista obtida, vc consegue percorrer ela e acessar seus itens e as propriedades de cada item.
então no caso depois de setar essa lista
RequisicaoDAO dao = new RequisicaoDAO();
aSessao.getInstancia().setRequisicaolist(dao.pegarRequisicoesUser());
eu utilizo isso para percorrer ela?
List requisicaolist = Sessao.getInstancia.getRequisicaolist()
Sim. Você obtem ela dessa forma e depois acessa os itens que precisar.
1 curtida
Vlww manoo
Uma pessoa tinha me falo que isso que estou fazendo não é um singleton
é realmente isso?
Não vi sua classe singleton completa. Mas se essa implementação estiver garantindo que terá apenas UMA instância dela no seu sistema todo, sim, é um singleton.
REFERENCIA: https://www.geeksforgeeks.org/singleton-class-java/
sim sim eu instancio apenas uma vez.
package Model;
public class Sessao {
private static Sessao instance = null;
private Usuario usuario;
private Matricula matricula;
private Boletim boletim;
private Status status;
private Departamento departamento;
private Equipamentos equipamentos;
private Sessao() {
}
public Boletim getBoletim() {
return boletim;
}
public void setBoletim(Boletim boletim) {
this.boletim = boletim;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Departamento getDepartamento() {
return departamento;
}
public void setDepartamento(Departamento departamento) {
this.departamento = departamento;
}
public Equipamentos getEquipamentos() {
return equipamentos;
}
public void setEquipamentos(Equipamentos equipamentos) {
this.equipamentos = equipamentos;
}
public void setMatricula(Matricula matricula) {
this.matricula = matricula;
}
public Matricula getMatricula() {
return matricula;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Long pegarID(Usuario usuario) {
return usuario.getId();
}
public Usuario getUsuario() {
return usuario;
} }
return instance;
}
}
public static Sessao getInstancia() {
if (instance == null) {
instance = new Sessao();
Está meio estranha essa classe que vc postou.
está um pouco bagunçada, mas nela tem os get’s / set’s das minhas classes model.
package Model;
public class Sessao {
private static Sessao instance = null;
private Usuario usuario;
private Matricula matricula;
private Boletim boletim;
private Status status;
private Departamento departamento;
private Equipamentos equipamentos;
private Sessao() {
}
public static Sessao getInstancia() {
if (instance == null) {
instance = new Sessao();
}
return instance;
}
//gets sets
public Boletim getBoletim() {
return boletim;
}
public void setBoletim(Boletim boletim) {
this.boletim = boletim;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Departamento getDepartamento() {
return departamento;
}
public void setDepartamento(Departamento departamento) {
this.departamento = departamento;
}
public Equipamentos getEquipamentos() {
return equipamentos;
}
public void setEquipamentos(Equipamentos equipamentos) {
this.equipamentos = equipamentos;
}
public void setMatricula(Matricula matricula) {
this.matricula = matricula;
}
public Matricula getMatricula() {
return matricula;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Long pegarID(Usuario usuario) {
return usuario.getId();
}
public Usuario getUsuario() {
return usuario;
}
}
1 curtida
Sim. Essa classe está implementando singleton. Pra mim, está OK.
1 curtida
vlw mesmo man
você pode me tirar só mais uma dúvida?
List requisicaolist = Sessao.getInstancia.getRequisicaolist()
depois de ter pegado a lista
como eu percorreria para pegar ex
req.setMotivo(rs.getString(“equipreq.observacao”));
ou
req.setReqUsuario(usuario);
Vamos pegar o motivo da primeira requisição da lista:
List<Requisicao> requisicoes = Sessao.getInstancia.getRequisicaolist()
Requisicao requisicao = requisicoes.get(0);
String motivo = requisicao.getMotivo();
Usuario usuario = requisicao.getReqUsuario();
vlw man
no caso
eu estaria pegando apenas o primeiro usuario ?
Usuario usuario = requisicao.getReqUsuario();
caso eu queria pegar todos teria que criar uma lista ?
Acho que a relação não é essa. Nesse exemplo que fiz, vc está pegando o usuário da primeira requisição da lista. Nâo necessariamente é o primeiro usuário de algo.
então caso eu queria pegar os usarios da lista eu queria que fazer um list
List = requisicao.getReqUsuario();
Pelo que vi no seu código, desse jeito não funcionará, pois o método getReqUsuario()
retornar um único usuário e não uma lista (pelo que entendi da sua modelagem, uma requisição possui UM usuário).
Agora, se vc quiser pegar os usuários de todas as requisições, vc consegue fazer isso percorrendo as requisições com um laço e pegando o usuário de cada item e adicionando numa lista.
List<Requisicao> requisicoes = Sessao.getInstancia.getRequisicaolist()
List<Usuario> usuarios = new ArrayList<>();
for(Requisicao req : requisicoes) {
usuario.add(requisicao.getReqUsuario());
}
1 curtida