es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CrearRecursoAvanzadoArchivosControllerImpl.java Source code

Java tutorial

Introduction

Here is the source code for es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CrearRecursoAvanzadoArchivosControllerImpl.java

Source

/* Agrega es una federacin de repositorios de objetos digitales educativos formada por todas las Comunidades Autnomas propiedad de Red.es. Este cdigo ha sido desarrollado por la Entidad Pblica Empresarial red.es adscrita al Ministerio de Industria,Turismo y Comercio a travs de la Secretara de Estado de Telecomunicaciones y para la Sociedad de la Informacin, dentro del Programa Internet en el Aula, que se encuadra dentro de las actuaciones previstas en el Plan Avanza (Plan 2006-2010 para el desarrollo de la Sociedad de la Informacin y de Convergencia con Europa y entre Comunidades Autnomas y Ciudades Autnomas) y ha sido cofinanciado con fondos FEDER del Programa Operativo FEDER 2000-2006 Sociedad de la Informacin
    
This program is free software: you can redistribute it and/or modify it under the terms of the European Union Public Licence (EUPL v.1.0).  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 European Union Public Licence (EUPL v.1.0). You should have received a copy of the EUPL licence along with this program.  If not, see http://ec.europa.eu/idabc/en/document/7330.
*/
// license-header java merge-point
package es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.validator.ValidatorException;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionMapping;

import es.pode.empaquetador.negocio.servicio.ArchivoVO;
import es.pode.empaquetador.negocio.servicio.FileVO;
import es.pode.empaquetador.presentacion.avanzado.recursos.crear.CrearRecursoAvanzadoSession;
import es.pode.soporte.constantes.ConstantesAgrega;

/**
 * @see es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CrearRecursoAvanzadoArchivosController
 */
public class CrearRecursoAvanzadoArchivosControllerImpl extends CrearRecursoAvanzadoArchivosController {

    //    Hecho
    public final void recuperarDatos(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.RecuperarDatosForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        CrearRecursoAvanzadoSession sesRecurs = this.getCrearRecursoAvanzadoSession(request);
        form.setVistaArbol(sesRecurs.isVistaArbol());

        List files = sesRecurs.getPathArchivos();
        if (files != null && !files.isEmpty()) {
            ArchivoVO primero = (ArchivoVO) files.get(0);
            form.setArbol(primero);
            ArchivoVO ultimo = (ArchivoVO) files.get(files.size() - 1);
            form.setArchivos(Arrays.asList(ultimo.getContenidos()));
            form.setPathArchivos(sesRecurs.getPathArchivos());
        }
    }

    private List rellenarBarraNavegacion(ArchivoVO[] archivo, String href) {
        List path = null;
        if (archivo != null) {
            for (int i = 0; i < archivo.length && path == null; i++) {
                if (archivo[i].getHref().equals(href)) {
                    path = new ArrayList();
                    path.add(archivo[i]);
                } else {
                    List tmpPath = rellenarBarraNavegacion(archivo[i].getContenidos(), href);
                    if (tmpPath != null && tmpPath.size() > 0) {
                        path = new ArrayList();
                        path.add(archivo[i]);
                        path.addAll(tmpPath);

                    }
                }
            }
        }
        return path;
    }

    /**
     * @see es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CrearRecursoAvanzadoArchivosController#navegar(org.apache.struts.action.ActionMapping, es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.NavegarForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public final void navegar(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.NavegarForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        CrearRecursoAvanzadoSession sesRecurs = this.getCrearRecursoAvanzadoSession(request);

        String referencia = form.getHref();
        List listaPath = sesRecurs.getPathArchivos();

        List ruta = new ArrayList();
        //path es el primer ArchivoVO
        ArchivoVO path = (ArchivoVO) listaPath.get(0);

        //si el hrfe est aki, se acaba, si no se hace recursividad
        if (path.getHref().equals(referencia)) {
            ruta.add(path);
        } else {
            //llama a un mtodo recursivo para calcular la ruta
            List tmpList = rellenarBarraNavegacion(path.getContenidos(), referencia);
            ruta.add(path);
            if (tmpList != null && tmpList.size() > 0) {
                ruta.addAll(tmpList);
            }
        }
        sesRecurs.setPathArchivos(ruta);
    }

    //    Hecho
    public final void cambiaVista(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CambiaVistaForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        boolean vista = form.isVistaArbol();

        CrearRecursoAvanzadoSession sesRecurs = this.getCrearRecursoAvanzadoSession(request);
        sesRecurs.setVistaArbol(vista);
    }

    //   Hecho
    public final void submit(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.SubmitForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        CrearRecursoAvanzadoSession sesRecurs = this.getCrearRecursoAvanzadoSession(request);

        java.util.Locale locale = (Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE);
        ResourceBundle i18n = ResourceBundle.getBundle("application-resources", locale);

        String accion = form.getAction();
        if ((accion.equals(i18n.getString("presentacion.avanzado.recursos.crear.archivos.submit.seleccionar")))) {
            List archivosARecuperar = new ArrayList();
            List elementos = form.getNombreRowSelection();
            if (elementos != null && elementos.size() > 0) {
                /**
                 * voy a recorrer la lista recuperando los nombres
                 * para recuperar los ArchivosVO
                 */
                for (int i = 0; i < elementos.size(); i++) {
                    String nombre = (String) elementos.get(i);
                    //hijos del ultimo elemento del path

                    List path = sesRecurs.getPathArchivos();

                    //obtengo el ultimo elemento
                    ArchivoVO ultimoElemento = (ArchivoVO) path.get(path.size() - 1);

                    ArchivoVO[] hijosUltimoElemento = ultimoElemento.getContenidos();

                    //comparo los nombres de los archivosVO y si es =, lo inserto en la lista "archivosARecuperar"
                    boolean cortar = false;
                    for (int j = 0; j < hijosUltimoElemento.length && cortar == false; j++) {
                        if (hijosUltimoElemento[j].getNombre().equals(nombre)) {
                            archivosARecuperar.add(hijosUltimoElemento[j]);
                            cortar = true;
                        }
                    }
                } //fin_for (int i=0; i<elementos.size();i++)

                //inserto la lista de ArchivosVO que he recuperado
                form.setArchivosSeleccionados(archivosARecuperar);
                //todo: pasar archivos seleccionados al objeto de session

            } //fin_if (elementos!=null && elementos.size()!=0)
            else {
                throw new ValidatorException(
                        "{presentacion.avanzado.recursos.crear.archivos.error.seleccionar.archivos}");
            }

        }

    }

    //    Hecho
    public final java.lang.String selectAction(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.SelectActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        /*
        * Metodo de decision para el action. Analiza los parametros
        * actionSubmit (value de los botones submit) para redirigir al caso de uso
        * correspondiente. El actionSubmit llegara
        * internacionalizado, por lo que es necesario acceder al ResouceBundle
        * para obtener el valor correcto en la comparacion.
        */

        String result = null;
        String actionSubmit = form.getAction();
        java.util.Locale locale = (Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE);
        ResourceBundle i18n = ResourceBundle.getBundle("application-resources", locale);

        if (form.getAction() == (null)) {
            throw new ValidatorException("{comunes.error.generico}");
        }

        else if (actionSubmit
                .equals(i18n.getString("presentacion.avanzado.recursos.crear.archivos.submit.seleccionar"))) {
            result = "Seleccionar";
        } else if (actionSubmit
                .equals(i18n.getString("presentacion.avanzado.recursos.crear.archivos.submit.cancelar"))) {
            result = "Cancelar";
        } else {
            Logger.getLogger(this.getClass())
                    .error("El valor del submit no es correcto (actionSubmit = " + actionSubmit + ";");
        }
        return result;
    }

    private void _sumarArchivos(ArchivoVO archivo, List lista, Set setComp) {
        if (!archivo.getEsFichero().booleanValue()) {
            ArchivoVO[] contenidos = archivo.getContenidos();
            for (int i = 0; i < contenidos.length; i++) {
                _sumarArchivos(contenidos[i], lista, setComp);
            }
        } else {
            String padre = "";
            String href = "";

            padre = archivo.getCarpetaPadre();
            href = archivo.getNombre();
            FileVO file = new FileVO();
            file.setUrl(archivo.getHref());
            if (padre != null && !padre.equals(""))
                file.setHref(padre + "/" + href);
            else
                file.setHref(href);
            if (setComp.add(file))
                lista.add(file);
        }
    }

    //    Hecho
    public final void sumarArchivos(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.SumarArchivosForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        CrearRecursoArchivosSession sesRecursArch = this.getCrearRecursoArchivosSession(request);
        List archivosSeleccionados = form.getArchivosSeleccionados();
        List tempList = new ArrayList();
        tempList.addAll(sesRecursArch.getArchivos());
        Set tempSet = new HashSet(sesRecursArch.getArchivos());

        for (int i = 0; i < archivosSeleccionados.size(); i++) {
            _sumarArchivos((ArchivoVO) archivosSeleccionados.get(i), tempList, tempSet);
        }

        sesRecursArch.setArchivos(tempList);
    }

    //    Hecho
    public final void terminarSeleccionArchivos(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.TerminarSeleccionArchivosForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        CrearRecursoArchivosSession sesRecursArch = this.getCrearRecursoArchivosSession(request);
        CrearRecursoAvanzadoSession sesRecurs = this.getCrearRecursoAvanzadoSession(request);

        sesRecurs.setArchivos(sesRecursArch.getArchivos());
    }

    //    Hecho
    public final void eliminar(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.EliminarForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        CrearRecursoArchivosSession sesRecursArch = this.getCrearRecursoArchivosSession(request);
        ArrayList templist = (ArrayList) sesRecursArch.getArchivos();

        String hrefEliminar = form.getHref();
        for (Iterator iter = templist.iterator(); iter.hasNext();) {
            FileVO file = (FileVO) iter.next();
            if (file.getHref().equals(hrefEliminar)) {
                iter.remove();
            }

        }

        sesRecursArch.setArchivos(templist);
    }

    //    Hecho
    public final void eliminarTodos(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.EliminarTodosForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        CrearRecursoArchivosSession sesRecursArch = this.getCrearRecursoArchivosSession(request);
        sesRecursArch.getArchivos().clear();
    }

    //    Hecho
    public final void cancelar(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.CancelarForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        if (this.getCrearRecursoArchivosSession(request) != null) {
            request.getSession().removeAttribute(CrearRecursoArchivosSession.SESSION_KEY);
        }
    }

    //    Hecho
    public final void terminarSesion(ActionMapping mapping,
            es.pode.empaquetador.presentacion.avanzado.recursos.crear.archivos.TerminarSesionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        if (this.getCrearRecursoArchivosSession(request) != null) {
            request.getSession().removeAttribute(CrearRecursoArchivosSession.SESSION_KEY);
        }
        if (this.getCrearRecursoAvanzadoSession(request) != null) {
            request.getSession().removeAttribute(CrearRecursoAvanzadoSession.SESSION_KEY);
        }
    }

}