/***
Copyright (c) 2013 Hércules S. S. José
Este arquivo é parte do programa EncontreAquiPeças.
EncontreAquiPeças é um software livre; você pode redistribui-lo e/ou
modificá-lo dentro dos termos da Licença Pública Geral Menor GNU como
publicada pela Fundação do Software Livre (FSF); na versão 2.1 da
Licença.
Este programa é distribuído na esperança que possa ser útil,
mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÂO a
qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública
Geral Menor GNU em português para maiores detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral Menor GNU sob o
nome de "LICENSE.TXT" junto com este programa, se não, acesse o site HSlife
no endereco www.hslife.com.br ou escreva para a Fundação do Software
Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
Para mais informações sobre o programa EncontreAquiPeças e seu autor acesse o
endereço www.hslife.com.br, pelo e-mail contato@hslife.com.br ou escreva para
Hércules S. S. José, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404,
Marco II - Nova Iguaçu, RJ, Brasil.
*/
package br.com.hslife.encontreaquipecas.entity;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import br.com.hslife.encontreaquipecas.exception.BusinessException;
@SuppressWarnings("serial")
public abstract class EntityPersistence implements Serializable {
public abstract Long getId();
public abstract String getLabel();
public abstract void validate() throws BusinessException;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Long.signum(getId() ^ (getId() >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getId() == null) return false;
if (getClass() != obj.getClass()) return false;
EntityPersistence other = (EntityPersistence) obj;
if (!getId().equals(other.getId())) return false;
return true;
}
@Override
public String toString() {
return this.getClass().getSimpleName() + "[" + this.getId() + "]";
}
public Map<String, String> getFieldValues() {
Map<String, String> camposClasse = new HashMap<String, String>();
try {
for (Method method : this.getClass().getDeclaredMethods()) {
if (method.getName().substring(0, 2).equals("is") || method.getName().substring(0, 3).equals("get")) {
// Extrai o nome do atributo a partir no nome do método get ou is
String nomeAtributo = "";
if (method.getName().substring(0, 2).equals("is")) {
nomeAtributo = method.getName().substring(2);
} else {
nomeAtributo = method.getName().substring(3);
}
// Extrai o valor do método Getter
Object valorAtributo = method.invoke(this);
if (valorAtributo == null)
camposClasse.put(nomeAtributo, "null");
else
camposClasse.put(nomeAtributo, valorAtributo.toString());
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return camposClasse;
}
}