com.ipn.escom.ageinnn.aspirante.controller.CargaDocumentoAction.java Source code

Java tutorial

Introduction

Here is the source code for com.ipn.escom.ageinnn.aspirante.controller.CargaDocumentoAction.java

Source

/*
 * 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;
    }

}