/* Ara - capture species and specimen data * * Copyright (C) 2009 INBio ( Instituto Nacional de Biodiversidad ) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.inbio.ara.dto; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.Set; import org.inbio.ara.persistence.LogGenericEntity; /** * * @author jgutierrez * * Based on dmartin code, in the GBIF customizable portal. */ public abstract class BaseEntityOrDTOFactory <Entity extends LogGenericEntity, DTO extends GenericDTO> implements EntityOrDTOFactory <Entity,DTO> { /** * Este método no está pensando para 'setear' en el entity solo los valores * primivos o los objectos de primitivos. Osea, int Integer, long, Long, * String, etc. * Esto es muy importante porque si un objecto tiene como atributo otro * objeto este estará en NULL!!!! * * @return */ public abstract Entity getEntityWithPlainValues(DTO dto); public abstract Entity updateEntityWithPlainValues(DTO dto, Entity e); /** * * @param dto * @return */ public Entity createPlainEntity(DTO dto) { if(dto == null) return null; Entity e= getEntityWithPlainValues(dto); e.setLastModificationBy(dto.getUserName()); e.setLastModificationDate(new GregorianCalendar()); return e; } /** * * @param dto * @return */ public Entity updatePlainEntity(DTO dto, Entity e) { if(dto == null) return null; e= updateEntityWithPlainValues(dto,e); e.setLastModificationBy(dto.getUserName()); e.setLastModificationDate(new GregorianCalendar()); return e; } /** * * @param dtoList * @return */ public List<Entity> createEntityList(List<DTO> dtoList) { if(dtoList==null) return null; List<Entity> entityList = new ArrayList<Entity>(); for (DTO dto : dtoList) entityList.add((Entity) createPlainEntity(dto)); return entityList; } /** * * @param entitiesList * @return */ public List<DTO> createDTOList(List<Entity> entitiesList) { if(entitiesList==null) return null; List<DTO> dtoList = new ArrayList<DTO>(); for (Entity entity: entitiesList) dtoList.add((DTO) createDTO(entity)); return dtoList; } /** * * @param entitiesList * @return */ public List<DTO> createDTOList(Set<Entity> entitiesSet) { return this.createDTOList(new ArrayList<Entity>(entitiesSet)); } }