Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.ipn.escom.ageinnn.aspirante.controller; import com.ipn.escom.ageinnn.aspirante.model.DocumentoEntregado; import com.ipn.escom.ageinnn.aspirante.model.DocumentoEntregadoId; import com.ipn.escom.ageinnn.aspirante.model.DocumentoRequerido; import com.ipn.escom.ageinnn.aspirante.model.Aspirante; import com.ipn.escom.ageinnn.aspirante.model.AspiranteId; import com.ipn.escom.ageinnn.aspirante.model.EstadoRevision; import com.ipn.escom.ageinnn.configuracion.model.PeriodoAdmision; import com.ipn.escom.ageinnn.usuario.model.CatalogoUsuario; import com.ipn.escom.ageinnn.usuario.model.MedicoResidente; import com.ipn.escom.ageinnn.usuario.service.AspiranteServceImpl; import com.ipn.escom.ageinnn.usuario.service.CatalogoServiceImpl; import static com.opensymphony.xwork2.Action.INPUT; import static com.opensymphony.xwork2.Action.SUCCESS; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.FileSystems; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FilenameUtils; import org.apache.struts2.ServletActionContext; import org.apache.struts2.components.ActionError; import org.apache.struts2.components.FieldError; import org.apache.struts2.interceptor.ServletRequestAware; /** * * @author Erick */ public class CargaDocumentoAction extends ActionSupport implements Preparable, ServletRequestAware { public HttpServletRequest request; private List<File> uploads = new ArrayList<File>(); private List<String> uploadFileNames = new ArrayList<String>(); private List<String> uploadContentTypes = new ArrayList<String>(); private List<DocumentoEntregado> documentosEntregados = null; private AspiranteServceImpl aspiranteService = new AspiranteServceImpl(); private CatalogoServiceImpl catalogoService = new CatalogoServiceImpl(); private List<Integer> id = null; private String[] nombre; private List<DocumentoRequerido> documentosRequeridos = null; private Aspirante aspirante; private MedicoResidente medico; private Integer periodoAdmisionId; public List<File> getUpload() { return this.uploads; } public void setUpload(List<File> uploads) { this.uploads = uploads; } public List<String> getUploadFileName() { return this.uploadFileNames; } public void setUploadFileName(List<String> uploadFileNames) { this.uploadFileNames = uploadFileNames; } public List<String> getUploadContentType() { return this.uploadContentTypes; } public void setUploadContentType(List<String> contentTypes) { this.uploadContentTypes = contentTypes; } public List<DocumentoRequerido> getDocumentosRequeridos() { return documentosRequeridos; } public void setDocumentosRequeridos(List<DocumentoRequerido> documentosRequeridos) { this.documentosRequeridos = documentosRequeridos; } public Aspirante getAspirante() { return aspirante; } public void setAspirante(Aspirante aspirante) { this.aspirante = aspirante; } public List<DocumentoEntregado> getDocumentosEntregados() { return documentosEntregados; } public void setDocumentosEntregados(List<DocumentoEntregado> documentosEntregados) { this.documentosEntregados = documentosEntregados; } public List<Integer> getId() { return id; } public void setId(List<Integer> id) { this.id = id; } public AspiranteServceImpl getAspiranteService() { return aspiranteService; } public void setAspiranteService(AspiranteServceImpl aspiranteService) { this.aspiranteService = aspiranteService; } public String[] getNombre() { return nombre; } public void setNombre(String[] nombre) { this.nombre = nombre; } public CatalogoServiceImpl getCatalogoService() { return catalogoService; } public void setCatalogoService(CatalogoServiceImpl catalogoService) { this.catalogoService = catalogoService; } public void prepareCambiarDocumentos() { System.out.println("Cambiando documento"); if (ActionContext.getContext().getSession().containsKey("usuario")) { this.medico = (MedicoResidente) ActionContext.getContext().getSession().get("usuario"); if (periodoAdmisionId == null) { PeriodoAdmision periodoAdmision = catalogoService.findPeriodoActual(); periodoAdmisionId = periodoAdmision.getId(); } this.aspirante = aspiranteService.find(new AspiranteId(medico.getId(), periodoAdmisionId)); CatalogoUsuario catalogo = new CatalogoUsuario(); documentosRequeridos = catalogo.getDocumentos(); } } public String cambiarDocumentos() throws FileNotFoundException, IOException { String response = SUCCESS; if (this.aspirante != null && this.id != null) { aspirante.setFechaModificacionDocumento(new Date()); aspiranteService.update(aspirante); for (int i = 0; i < this.id.size(); i++) { DocumentoEntregadoId documentoEntregadoId = new DocumentoEntregadoId(); documentoEntregadoId.setAspiranteId(this.aspirante.getMedicoId()); documentoEntregadoId.setPeriodoAdmisionId(aspirante.getPeriodoAdmisionId()); documentoEntregadoId.setDocumentoId(this.id.get(i)); DocumentoEntregado documentoEntregado = aspiranteService.obtenerDocumento(documentoEntregadoId); if (null == documentoEntregado) { System.out.println("NO se encontr el documento................"); response = INPUT; break; } String realPath = ServletActionContext.getServletContext().getRealPath("/"); String absolutePath = realPath + documentoEntregado.getRuta(); String extension = FilenameUtils.getExtension(this.uploadFileNames.get(i)); File filePath = new File(absolutePath); filePath.mkdirs(); File file = new File(filePath, documentoEntregado.getNombreArchivo() + "." + documentoEntregado.getExtension()); if (file.exists()) { System.out.println("Se va a eliminar el archivo"); file.delete(); } file = new File(filePath, documentoEntregado.getNombreArchivo() + "." + extension); FileOutputStream fos; try (FileInputStream fis = new FileInputStream(uploads.get(i))) { fos = new FileOutputStream(file); byte[] datos = new byte[(int) uploads.get(i).length()]; fis.read(datos); fos.write(datos); } fos.close(); documentoEntregado.setExtension(extension); documentoEntregado.setFechaModificacion(new Date()); aspiranteService.actualizarDocumento(documentoEntregado); } } else { response = INPUT; } addActionMessage("Cambio realizado con exito!"); return response; } public void prepareUpload() { System.out.println("Subiendo nuevo documento"); if (ActionContext.getContext().getSession().containsKey("usuario")) { this.medico = (MedicoResidente) ActionContext.getContext().getSession().get("usuario"); if (periodoAdmisionId == null) { PeriodoAdmision periodoAdmision = catalogoService.findPeriodoActual(); periodoAdmisionId = periodoAdmision.getId(); } this.aspirante = aspiranteService.find(new AspiranteId(medico.getId(), periodoAdmisionId)); CatalogoUsuario catalogo = new CatalogoUsuario(); documentosRequeridos = catalogo.getDocumentos(); } } public String upload() throws Exception { String response = SUCCESS; if (this.aspirante != null) { System.out.println("Updloading files... "); if (aspirante.getDocumentos().isEmpty()) { aspirante.setFechaEnvioSolicitud(new Date()); aspirante.setFechaModificacionDocumento(new Date()); aspiranteService.update(aspirante); } if (this.id == null || this.id.size() != this.uploads.size()) { response = INPUT; return response; } try { for (int i = 0; i < this.id.size(); i++) { DocumentoRequerido documentoRequerido = catalogoService.find(DocumentoRequerido.class, this.id.get(i)); if (null == documentoRequerido) { response = INPUT; break; } DocumentoEntregado documentoEntregado = new DocumentoEntregado(); DocumentoEntregadoId documentoEntregadoId = new DocumentoEntregadoId( this.aspirante.getMedicoId(), aspirante.getPeriodoAdmisionId(), documentoRequerido.getId()); documentoEntregado.setPk(documentoEntregadoId); EstadoRevision estadoRevision = catalogoService.findByNombre(EstadoRevision.class, "Sin revisar"); documentoEntregado.setEstadoRevisionId(estadoRevision.getId()); String separetor = FileSystems.getDefault().getSeparator(); System.out.println("separetor: " + separetor); String realPath = ServletActionContext.getServletContext().getRealPath("/"); String documentsPath = "WEB-INF" + separetor + "documents" + separetor + "aspirantes" + separetor + this.aspirante.getMedico().getId().toString() + separetor + aspirante.getPeriodoAdmisionId(); String absolutePath = realPath + documentsPath; String fileName = this.aspirante.getMedico().getId().toString() + "_" + aspirante.getPeriodoAdmisionId() + "_" + documentoRequerido.getId().toString(); String extension = FilenameUtils.getExtension(uploadFileNames.get(i)); documentoEntregado.setRuta(documentsPath); documentoEntregado.setNombreArchivo(fileName); documentoEntregado.setExtension(extension); File filePath = new File(absolutePath); filePath.mkdirs(); File file = new File(filePath, fileName + "." + extension); FileInputStream fis = new FileInputStream(uploads.get(i)); FileOutputStream fos = new FileOutputStream(file); byte[] datos = new byte[(int) uploads.get(i).length()]; fis.read(datos); fos.write(datos); fis.close(); fos.close(); this.aspiranteService.guardarDocumento(documentoEntregado); } } catch (Exception e) { response = INPUT; throw e; } } else { response = INPUT; } addActionMessage("Documentos Enviados"); return response; } @Override public void prepare() throws Exception { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public MedicoResidente getMedico() { return medico; } public void setMedico(MedicoResidente medico) { this.medico = medico; } public Integer getPeriodoAdmisionId() { return periodoAdmisionId; } public void setPeriodoAdmisionId(Integer periodoAdmisionId) { this.periodoAdmisionId = periodoAdmisionId; } }