E aí galera beleza?
Estou tendo um conflito de conceitos a respeito de vo.
Sempre entendi que um vo, usando o struts, era na verdade um bean com tipos como int, string, etc, que eu colocava em um arraylist que percorria na página. Agora lendo o core j2ee paterns me deparei com o seguinte vo:
public class ContactVO implements java.io.Serializable {
// public members
public String firstName;
public String lastName;
public String address;
// default constructor
public ContactVO() {}
// constructor accepting all values
public ContactVO(String firstName,
String lastName, String address){
init(firstName, lastName, address);
}
// constructor to create a new VO based
// using an existing VO instance
public ContactVO(ContactVO contact) {
init (contact.firstName,
contact.lastName, contact.address);
}
// method to set all the values
public void init(String firstName,
String lastName, String address) {
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
}
// create a new value object
public ContactVO getData() {
return new ContactVO(this);
}
}
E aqui na empresa usa-se um abstract class como padrão pra todos os vos:
/*
* EntidadeVO.java
*
*
*/
package util;
import java.util.*;
/**
* Esta classe á a classe mãe de todos os VO (Value Objects). Ela não pode ser
* instanciada. Deve ser herdada por classes que implementem apenas os Gets
* apropriados e as conversões explícitas necessárias. P ex. : public String
* getNome() { EntidadeNome en = (EntidadeNome) get(); return en.getNome(); }
* @author abarra
* @version 1.0
* @updated 22-set-2004 09:56:42
*/
public abstract class EntidadeVO {
ArrayList list = new ArrayList();
int index = -1;
/*
* Adiciona um objeto no ArrayList
*/
public void add(Object obj) {
list.add(obj);
}
public void remove() {
list.remove(this.index);
}
/*
*retorna um objeto do ArrayList
*/
public Object get() {
return list.get(index);
}
/*
* retorna o tamanho do ArrayList. Quantidade de objetos
* guardados
*/
public int size() {
return list.size();
}
/*
* retorna se existe um próximo objeto ou não
*/
public boolean next() {
boolean retorno;
index++;
if(index < list.size()) {
retorno = true;
}else {
index = list.size() - 1;
retorno = false;
}
return retorno;
}
/*
*retorna se existe um objeto anterior ou não
*/
public boolean previous() {
index--;
boolean retorno;
if(index < 0) {
index = 0;
retorno = false;
}else {
retorno = true;
}
return retorno;
}
/* Seleciona um índice valido especifico
*
*/
public void setIndex(int index) {
if (index > list.size() || index == list.size()) {
index = list.size() - 1;
}
if (index < 1) {
index = -1;
}
this.index = index;
}
/* retorna o indice atual
*
*/
public int getIndex() {
return this.index;
}
}
Tipo não entendi nenhum destes dois. Os dois crian uma espécie de array, tipo o do core j2ee implementa um serializable e o da empresa coloca tudo em um arraylist. Mas não entendi em que ponto o vo do cre j2ee cria o serializable e nem quando se lê. Mas a pergunta verdadeira é: Qual o conceito certo? Meu conceito estava muito errado? Como faço pra usar o vo da sun?