maia/.svn/pristine/5c/5cf306bc96f47a258d44473a5f4...

137 lines
5.0 KiB
Plaintext
Executable File

package com.fp.person.rules.save;
import java.util.List;
import com.fp.dto.helper.FileHelper;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.general.exception.GeneralException;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.pcustomer.people.TcustPeople;
import com.fp.persistence.pcustomer.people.TcustPeopleKey;
import com.fp.persistence.pgeneral.image.TgeneFiles;
import com.fp.persistence.pgeneral.image.TgeneFilesDetail;
import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey;
import com.fp.sessionbeans.helper.Sequence;
/**
* Clase que se encarga de subir a la BDD la imagen y asociar la foto y firma
* del cliente
*
* @author scastillo
*/
public class PersonImage extends TransactionRule {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Metodo que agrega una imagen en la base de datos
*
* @param pSaveRequest
* @return
* @throws Exception
*/
@Override
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
Integer personcode = (Integer) pSaveRequest.get("pk_personcode");
Integer photocode = (Integer) pSaveRequest.get("photocode");
Integer signaturecode = (Integer) pSaveRequest.get("signaturecode");
List<FileHelper> fileItem = (List<FileHelper>) pSaveRequest.get("file");
if (fileItem.isEmpty() || fileItem.size() != 2) {
return pSaveRequest;
}
TcustPeople tcustPeople=null;
//TcustPeopleKey tcustPeopleKey = new TcustPeopleKey(personcode,FormatDates.getDefaultExpiryTimestamp());
tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE");
if(tcustPeople==null){
TcustPeopleKey tcustPeopleKey = new TcustPeopleKey(personcode,FormatDates.getDefaultExpiryTimestamp());
tcustPeople = TcustPeople.find(PersistenceHelper.getEntityManager(), tcustPeopleKey);
}
photocode = this.buildImageCode(photocode, fileItem.get(0),pSaveRequest);
signaturecode = this.buildImageCode(signaturecode, fileItem.get(1), pSaveRequest);
if (tcustPeople!=null && tcustPeople.getPhotocode() == null && photocode != null) {
tcustPeople.setPhotocode(photocode);
tcustPeople.setModifyusercode(pSaveRequest.getUser());
}
if (tcustPeople!=null && tcustPeople.getSignaturecode() == null && signaturecode != null) {
tcustPeople.setSignaturecode(signaturecode);
tcustPeople.setModifyusercode(pSaveRequest.getUser());
}
pSaveRequest.getResponse().put("codes", "["+ photocode + "," + signaturecode + "]");
return pSaveRequest;
}
/**
* Metodo que se ejecuta en modo reverso
*
* @param pSaveRequest
* @return
* @throws Exception
*/
@Override
public SaveRequest reverseProcess(SaveRequest pSaveRequest)
throws Exception {
return pSaveRequest;
}
/**
* Metodo que devuelve la secuencia que le pertenece a una nueva imagen.
*
* @return Codigo de la nueva persona.
* @throws Exception
*/
public static Integer getFileCode() throws Exception {
Sequence sequence = new Sequence();
return Integer.valueOf(sequence.getNextValue("FILECODE").toString());
}
/**
* Metodo que se encarga de construir la imagen
*
* @param photocode
* @param fileItem
* @param saveRequest
* @throws Exception
*/
private Integer buildImageCode(Integer photocode, FileHelper fileItem,
SaveRequest saveRequest) throws Exception {
if (!fileItem.getName().equals("")) {
if (fileItem.getExtension().toLowerCase().compareTo("jpg") == 0
|| fileItem.getExtension().toLowerCase().compareTo("gif") == 0
|| fileItem.getExtension().toLowerCase().compareTo("png") == 0) {
if (photocode == null) {
photocode = getFileCode();
TgeneFiles tgeneFiles = new TgeneFiles(photocode);
PersistenceHelper.save(tgeneFiles);
}
TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(photocode, FormatDates.getDefaultExpiryTimestamp());
TgeneFilesDetail tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(),tgeneFilesDetailKey);
if (tgeneFilesDetail == null) {
tgeneFilesDetail = new TgeneFilesDetail(tgeneFilesDetailKey);
tgeneFilesDetail.setImage(fileItem.getImage());
tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate());
tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.getSize())));
tgeneFilesDetail.setIngressuser(saveRequest.getUser());
tgeneFilesDetail.setExtension(fileItem.getExtension());
PersistenceHelper.save(tgeneFilesDetail);
} else {
tgeneFilesDetail.setImage(fileItem.getImage());
tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate());
tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.getSize())));
tgeneFilesDetail.setModifyuser(saveRequest.getUser());
tgeneFilesDetail.setExtension(fileItem.getExtension());
PersistenceHelper.saveOrUpdate(tgeneFilesDetail);
}
} else {
throw new GeneralException("CUST-0007",
"LOS TIPOS DE ARCHIVOS PERMITIDOS SON JPG, GIF Y PNG");
}
}
return photocode;
}
}