/**
   * @see
   *     es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociacionArchivosController#aceptarFicheros(org.apache.struts.action.ActionMapping,
   *     es.pode.empaquetador.presentacion.basico.asociar.archivos.AceptarFicherosForm,
   *     javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
   */
  public final void aceptarFicheros(
      ActionMapping mapping,
      es.pode.empaquetador.presentacion.basico.asociar.archivos.AceptarFicherosForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    if (form instanceof PrincipalSubmitFormImpl) {
      PrincipalSubmitFormImpl principalForm = (PrincipalSubmitFormImpl) form;
      if (principalForm.getPrincipal() == null) {
        if (logger.isDebugEnabled()) logger.debug("no se ha seleccionado ningun fichero principal");
        throw new ValidatorException("{portalempaquetado.basico.asociar.error.sinprincipal}");
      }
    }

    AsociacionArchivosSession asoArcSes = this.getAsociacionArchivosSession(request);
    AsociarSession asoSes = this.getAsociarSession(request);

    asoSes.setFicheros(asoArcSes.getFicheros());

    asoArcSes.setFicheros(null);
  }
  /**
   * @see
   *     es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociacionArchivosController#recuperarDatos(org.apache.struts.action.ActionMapping,
   *     es.pode.empaquetador.presentacion.basico.asociar.archivos.RecuperarDatosForm,
   *     javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
   */
  public final void recuperarDatos(
      ActionMapping mapping,
      es.pode.empaquetador.presentacion.basico.asociar.archivos.RecuperarDatosForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {

    AsociarSession asoSes = this.getAsociarSession(request);
    AsociacionArchivosSession asoArcSes = this.getAsociacionArchivosSession(request);
    //    	if(asoArcSes.getFicheros()==null)
    //    		asoArcSes.setFicheros(new ArrayList());

    EmpaquetadorSession empSes = this.getEmpaquetadorSession(request);
    GestorArchivosSession sesArch = this.getGestorArchivosSession(request);

    String idOde = empSes.getIdLocalizador();
    ArchivoVO arbol = this.getSrvGestorArchivosService().recuperarArbol(idOde);
    if (logger.isDebugEnabled()) logger.debug("creo la lista de path");

    List listaPath = sesArch.getPath();
    listaPath.set(0, arbol);
    for (int i = 1; i < listaPath.size(); i++) {
      ArchivoVO elemento = (ArchivoVO) listaPath.get(i);
      String nombre = elemento.getNombre();
      ArchivoVO elementoAnterior = (ArchivoVO) listaPath.get(i - 1);
      ArchivoVO[] arrayContenidos = elementoAnterior.getContenidos();

      ArchivoVO hijo = null;
      for (int j = 0; j < arrayContenidos.length && hijo == null; j++) {
        if (arrayContenidos[j].getNombre().equals(nombre)) {
          hijo = arrayContenidos[j];
        }
      }
      listaPath.set(i, hijo);
    }

    ArchivoVO[] lista = null;
    ArchivoVO ultimoEnPath = null;
    if (sesArch.getPath().size() != 1) {
      ultimoEnPath = (ArchivoVO) sesArch.getPath().get(sesArch.getPath().size() - 1);
      if (ultimoEnPath.getCarpetaPadre() == null) {
        lista = this.getSrvGestorArchivosService().listar(idOde, ultimoEnPath.getNombre());
      } else {

        lista =
            this.getSrvGestorArchivosService()
                .listar(idOde, ultimoEnPath.getCarpetaPadre() + "/" + ultimoEnPath.getNombre());
      }

    } else if (sesArch.getPath().size() == 1) {
      lista = this.getSrvGestorArchivosService().listar(idOde, null);
    }

    form.setFicheros(Arrays.asList(lista)); // ArchivoVO

    if (asoArcSes.getFicheros() == null) {
      if (logger.isDebugEnabled())
        logger.debug("lista de ficheros en asosiacionArchivoSession esta vacia... la relleno");
      asoArcSes.setFicheros(new ArrayList());
      asoArcSes.getFicheros().addAll(asoSes.getFicheros());
    }

    form.setFicherosSeleccionados(asoArcSes.getFicheros()); // FileVO
    form.setPath(sesArch.getPath());
    form.setArbol((ArchivoVO) sesArch.getPath().get(0));
  }