Java:Usando Objetos Serializados em Java: Difference between revisions
|  (Criou página com: 'Ao serializar objetos em java, convertemos aquele "objeto/dado" em um conjunto de bytes que podem ser armazenados em um arquivo, para que posteriormente possamos utilizar os ...') | No edit summary | ||
| Line 30: | Line 30: | ||
| == Distribuidor.java == | == Distribuidor.java == | ||
|  package net.ebasso; | |||
|  import java.io.FileOutputStream; | |||
|  import java.io.ObjectOutputStream; | |||
|  import java.util.ArrayList; | |||
|  public class Distribuidor { | |||
|  	private static String outputCorreioDiretorio="/tmp/Correios"; | |||
|  	private static int cartas = 100; | |||
|  	public static void main(String[] args) { | |||
|  		executaExemplo02(); | |||
|  	} | |||
|  	public static void executaExemplo02() { | |||
|  		Distribuidor application = new Distribuidor(); | |||
|  		try { | |||
|  			String sufixo = ""; | |||
|  			int j = 1; | |||
|  			String carteiro = String.format("%03d", j); | |||
|  			for (int i = 1; i < cartas; i++) { | |||
|  				sufixo = String.format("%03d", i) ; | |||
|  				ArrayList<String> destinatarios =  new ArrayList<String>(); | |||
|  				destinatarios.add("Ciclano da Silva " + sufixo); | |||
|  				destinatarios.add("Beltrano de Oliveira " + sufixo); | |||
|  				application.runOnce("A"+sufixo , carteiro,"Fulano de Tal " + sufixo, destinatarios, "Meus amigos .... Feliz Natal"); | |||
|  				 if ((i % 10) == 0) { | |||
|  					 j++; | |||
|  					 carteiro = String.format("%03d", j); | |||
|  				 } | |||
|  			} | |||
|  		} catch (Exception e) { | |||
|  			e.printStackTrace(); | |||
|  		} | |||
|  	} | |||
|  	public static void executaExemplo01() { | |||
|  		Distribuidor application = new Distribuidor(); | |||
|  		try { | |||
|  			ArrayList<String> destinatarios =  new ArrayList<String>(); | |||
|  			destinatarios.add("Ciclano da Silva"); | |||
|  			destinatarios.add("Beltrano de Oliveira"); | |||
|  			application.runOnce("A000","001","Fulano de Tal", destinatarios, "Meus amigos .... Feliz Natal"); | |||
|  		} catch (Exception e) { | |||
|  			e.printStackTrace(); | |||
|  		} | |||
|  	} | |||
|  	private void runOnce(String messageId, String cep, String remetente, ArrayList<String> destinatarios, String conteudo )  throws Exception { | |||
|  		// Criando a carta e definindo os valores | |||
|  		Carta carta = new Carta(); | |||
|  		carta.setMessageId(messageId); | |||
|  		carta.setCep(cep); | |||
|  		carta.setRemetente(remetente); | |||
|  		carta.setConteudo(conteudo); | |||
|  		carta.setDestinatarios(destinatarios); | |||
|  		// Armazenando o objeto serializado | |||
|  		String ojbFilename = outputCorreioDiretorio + "/" + cep + "/" + messageId + ".obj"; | |||
|  		FileOutputStream arquivoAGravar = new FileOutputStream(ojbFilename); | |||
|  		ObjectOutputStream objetoAGravar = new ObjectOutputStream(arquivoAGravar); | |||
|  		objetoAGravar.writeObject(carta); | |||
|  		objetoAGravar.flush(); | |||
|  		objetoAGravar.close(); | |||
|  		arquivoAGravar.close();	 | |||
|  	} | |||
|  } | |||
| == Carteiro.java == | == Carteiro.java == | ||
Revision as of 12:33, 30 December 2014
Ao serializar objetos em java, convertemos aquele "objeto/dado" em um conjunto de bytes que podem ser armazenados em um arquivo, para que posteriormente possamos utilizar os dados novamente como o objeto original.
Complexo!!! Mas vamos utilizar uma problema de negócio para explicar isso.
Problema: Um Agência dos correios precisamos entregar 100 cartas rapidamente, sendo que a mesma tem 10 carteiros para executar o serviço?
Para resolvermos esse problema de distribuição criamos 3 classes;
- Distribuidor = Pega todas as cartas, classifica e distribui entre os carteiros.
- Ao classificarmos as cartas criamos o objeto Carta e serializo o mesmo para ser utilizado pelo Carteiro, armazenando o objeto no respectivo diretório do carteiro. Exemplo
- /tmp/Correios/001
- /tmp/Correios/002
- ...
- /tmp/Correios/010
 
 
- Ao classificarmos as cartas criamos o objeto Carta e serializo o mesmo para ser utilizado pelo Carteiro, armazenando o objeto no respectivo diretório do carteiro. Exemplo
- Carteiro = Pega as respectivas cartas, no seu diretório e faz a entrega.
- O Carteiro pega o arquivo com o objeto e cria novamente o objeto Carta. Fazemos um print do Objeto.
 
No meu exemplo de negócio podemos
Classes
Observação:
Para simplificação do artigo, criamos os diretórios
Distribuidor.java
package net.ebasso;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class Distribuidor {
	
	private static String outputCorreioDiretorio="/tmp/Correios";
	
	private static int cartas = 100;
	
	public static void main(String[] args) {
		
		executaExemplo02();
	
	}
	
	public static void executaExemplo02() {
		
		Distribuidor application = new Distribuidor();
		try {
			
			String sufixo = "";
			
			int j = 1;
			String carteiro = String.format("%03d", j);
			
			for (int i = 1; i < cartas; i++) {
				
				sufixo = String.format("%03d", i) ;
			
				ArrayList<String> destinatarios =  new ArrayList<String>();
				
				destinatarios.add("Ciclano da Silva " + sufixo);
				destinatarios.add("Beltrano de Oliveira " + sufixo);
					
				application.runOnce("A"+sufixo , carteiro,"Fulano de Tal " + sufixo, destinatarios, "Meus amigos .... Feliz Natal");
				
				 if ((i % 10) == 0) {
					 j++;
					 carteiro = String.format("%03d", j);
				 }
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void executaExemplo01() {
		
		Distribuidor application = new Distribuidor();
		try {
			ArrayList<String> destinatarios =  new ArrayList<String>();
			
			destinatarios.add("Ciclano da Silva");
			destinatarios.add("Beltrano de Oliveira");
				
			application.runOnce("A000","001","Fulano de Tal", destinatarios, "Meus amigos .... Feliz Natal");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void runOnce(String messageId, String cep, String remetente, ArrayList<String> destinatarios, String conteudo )  throws Exception {
		
		// Criando a carta e definindo os valores
		Carta carta = new Carta();
		carta.setMessageId(messageId);
		carta.setCep(cep);
		carta.setRemetente(remetente);
		carta.setConteudo(conteudo);
		carta.setDestinatarios(destinatarios);
		
		// Armazenando o objeto serializado
		
		String ojbFilename = outputCorreioDiretorio + "/" + cep + "/" + messageId + ".obj";
		FileOutputStream arquivoAGravar = new FileOutputStream(ojbFilename);
		ObjectOutputStream objetoAGravar = new ObjectOutputStream(arquivoAGravar);
		objetoAGravar.writeObject(carta);
		objetoAGravar.flush();
		objetoAGravar.close();
		arquivoAGravar.close();	
	}
}
