Adicionar vários valores a um usuário usando

8 respostas
W

Olá, estou criando uma pequena aplicação que consiste em pegar dados de um arquivo csv(logs de impressão) e gerar alguns relatórios: por usuário, por impressora, por dia…

Estou fazendo os devidos tratamentos para então pegar as informações necessárias.

No entanto existem várias ações do mesmo usuário (várias impressões) e quero pegar e adicionar o registro do determinado sem criar um novo usuário, apenas adicionando a ele sua respectiva informação(são muitos usuários).

Não estou conseguindo pois toda vez que o while roda cria um novo.

É possível criar várias novas variáveis em tempo de execução sem precisar declarar, por exemplo, String pessoa1, String pessoa2, String pessoa3 … e ir adicionando e o longo da execução ?

ou vou ter que criar um banco ?

8 Respostas

4

Mande seu código atual para eu dar uma olhada.

W

Olá 4mega , obrigado por responder, segue imagem do trecho do código:

4

Pelo que posso visualizar do seu código, ficara muito mais fácil manipula-lo utilizando banco de dados, e já que parece ser poucas tabelas eu super recomendo usar o SQLite que é bem leve, ou preciso que vc mande a classe Impressora e Usuário, assim vou tentar monta-lo.
Acredito que para resolver este problema devo armazenar o numero da linha a cada Usuário, desta forma consigo direcionar o campo que será alterado.
(Mas eu ainda recomendo SQLite)

W

Aqui estão as classes:

public class Usuario {

private String nome;
private Impressora impressora;
private int qtdPaginas;
private int qtdCopias;
private String nomeDocumento;
private Date data;

public Usuario() {
}

public Usuario(String nome, Impressora impressora, int qtdPaginas,
        int qtdCopias, String nomeDocumento, Date data) {
    this.nome = nome;
    this.impressora = impressora;
    this.qtdPaginas = qtdPaginas;
    this.qtdCopias = qtdCopias;
    this.nomeDocumento = nomeDocumento;
    this.data = data;
}
public class Impressora {

private String nomeImpressora;

private String departamento;
public Impressora() {
}

public Impressora(String nomeImpressora, String departamento) {
    this.nomeImpressora = nomeImpressora;
    this.departamento = departamento;
}
OBS: não coloquei os geters e seteres e toString.

Segue trecho do formato do arquivo sem o tratamento:

P

vejamos

se vc cria um objeto por linha, provavelmente o seu objeto não é o Usuario e sim a Operação que foi realizada por um Usuario. perceba que a diferença é sutil porem poderosa.

quando vc le um arquivo e quer produzir operações, as mesmas ficarão em memoria e vc pode efetuar operações. sera que vc deve usar um banco de dados? sera que pode usar outras ferramentas ( ElasticSearch )? só vc pode responder.

Se vc modelar algo como:

Usuario tem Operações

isso se modela como

class Usuario {
  private List<Operacao> operacoes;

}

e ai vc pode fazer algo como

  1. se for armazenar tudo em memoria, vc pode guardar em um Map<String, Usuario> os usuarios de forma a ser simples buscar por um dado um login

  2. se vc nao encontra o usuario nesse Map, vc cria.

  3. adicionar uma operacao ficou simples, vc simplesmente add(operacao) em operacoes

se o seu usuario tem como unico atributo o login ( ou nome, ou seja la o que for que identifique ele ) vc pode suprimir essa classe e simplificar o seu programa para algo como Map<String,List<Operacoes>> sacou?

4

De uma olhada na aplicação que montei.
Eu crio um List e um List e trabalho por cima deles. Ele gera um documento txt em (um local que vc terá que especificar), a nomenclatura dos dados não esta padronizado com o que vc mandou no print, porque esta aplicação se passa de um exemplo.

Para alterar os dados de um Usuário, eu monto um documento temporário que sera usado para receber os dados de todo o documento original, enquanto o documento original será usado para leitura. Todo dado alterado será gravado no temporário e após gravar tudo ele apagada o original e renomeia o temporário (por isso que prefiro trabalhar com banco).

Perceba que na tabela informativa do sistema que montei, eu utilizo TableModel que é bastante simples de implementar e me permite alterar as colunas que preciso no sistema com muito mais facilidade.

OBS: Compactado esta os TXT’s que utilizei, e na aplicação n possui o diretório bem certo do arquivo, então para todos os locais onde defino o diretório do arquivo, deve ser alterado

Desktop.rar (45.7 KB)

Duvidas entre em contato, skype no meu perfil.

W

Olá 4mega, seu exemplo foi excepcional. Muito obrigado. Esclareceu muita coisa.
Vou entrar em contato via Skype.

4

blz

Criado 16 de setembro de 2016
Ultima resposta 22 de set. de 2016
Respostas 8
Participantes 3