private ArchivoVO buscarPorNombre(ArchivoVO arch, String nombre) { if (arch.getNombre().equals(nombre)) { if (logger.isDebugEnabled()) logger.debug("ArchivoVO encontrado " + nombre); return arch; } else { ArchivoVO[] contenido = arch.getContenidos(); if (contenido != null) { for (int i = 0; i < contenido.length; i++) { ArchivoVO tmp = buscarPorNombre(contenido[i], nombre); if (tmp != null) return tmp; } } } return null; }
/** * @see * es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociacionArchivosController#desasociar(org.apache.struts.action.ActionMapping, * es.pode.empaquetador.presentacion.basico.asociar.archivos.DesasociarForm, * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public final void desasociar( ActionMapping mapping, es.pode.empaquetador.presentacion.basico.asociar.archivos.DesasociarForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AsociacionArchivosSession asoArcSes = this.getAsociacionArchivosSession(request); GestorArchivosSession archSes = this.getGestorArchivosSession(request); AsociarSession asoSes = this.getAsociarSession(request); List files = asoArcSes.getFicheros(); ArchivoVO archivo = (ArchivoVO) archSes.getPath().get(archSes.getPath().size() - 1); if (logger.isDebugEnabled()) logger.debug("voy a buscar el ArchivoVO con el nombre " + form.getNombre()); ArchivoVO recu = buscarPorNombre(archivo, form.getNombre()); String nombreFile; if (recu.getCarpetaPadre() != null && !recu.getCarpetaPadre().equals("")) { nombreFile = recu.getCarpetaPadre() + "/" + recu.getNombre(); } else { nombreFile = recu.getNombre(); } if (recu.getEsFichero().booleanValue()) { for (int i = 0; i < files.size(); i++) { if (((FileVO) files.get(i)).getHref().equals(nombreFile)) { files.remove(i); if (nombreFile.equals(asoSes.getHref())) { asoSes.setHref(""); } } } } else { List listaBorrar = new ArrayList(); listarFileVO(recu.getContenidos(), listaBorrar); boolean eliminado; for (int i = 0; i < listaBorrar.size(); i++) { eliminado = false; for (int j = 0; j < files.size() && !eliminado; j++) { if (((FileVO) files.get(j)).getHref().equals(((FileVO) listaBorrar.get(i)).getHref())) { if (files.get(j).equals(asoSes.getHref())) { asoSes.setHref(""); } files.remove(j); eliminado = true; } } } } }
/** * @see * es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociacionArchivosController#navegar(org.apache.struts.action.ActionMapping, * es.pode.empaquetador.presentacion.basico.asociar.archivos.NavegarForm, * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public final void navegar( ActionMapping mapping, es.pode.empaquetador.presentacion.basico.asociar.archivos.NavegarForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { GestorSesion gs = new GestorSesion(); GestorArchivosSession sesArch = this.getGestorArchivosSession(request); String referencia = form.getHref(); List listaPath = sesArch.getPath(); List ruta = new ArrayList(); if (logger.isDebugEnabled()) logger.debug("Path es el primer ArchivoVO"); ArchivoVO path = (ArchivoVO) listaPath.get(0); if (logger.isDebugEnabled()) logger.debug("si el href está aki, se acaba, si no se hace recursividad"); if (path.getHref().equals(referencia)) { ruta.add(path); } else { if (logger.isDebugEnabled()) logger.debug("llama a un método recursivo para calcular la ruta"); List tmpList = gs.rellenarBarraNavegacion(path.getContenidos(), referencia); ruta.add(path); if (tmpList != null && tmpList.size() > 0) { ruta.addAll(tmpList); } } sesArch.setPath(ruta); // if(!sesArch.getAccion().equals("Normal")) // { // sesArch.setModoPegar(true); // } }
/** * @see * es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociacionArchivosController#asociar(org.apache.struts.action.ActionMapping, * es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociarForm, * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public final void asociar( ActionMapping mapping, es.pode.empaquetador.presentacion.basico.asociar.archivos.AsociarForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AsociacionArchivosSession asocArSes = this.getAsociacionArchivosSession(request); GestorArchivosSession archSes = this.getGestorArchivosSession(request); String nombre = form.getNombre(); if (logger.isDebugEnabled()) logger.debug("voy a buscar el ArchivoVO con el nombre " + nombre); ArchivoVO archivo = (ArchivoVO) archSes.getPath().get(archSes.getPath().size() - 1); ArchivoVO recu = buscarPorNombre(archivo, nombre); Set tempSet = new HashSet(asocArSes.getFicheros()); // primer caso .. recu es es un fichero... lo agrego a la lista sin mas if (recu.getEsFichero().booleanValue()) { String nombreFile; if (recu.getCarpetaPadre() != null && !recu.getCarpetaPadre().equals("")) { nombreFile = recu.getCarpetaPadre() + "/" + recu.getNombre(); } else { nombreFile = recu.getNombre(); } FileVO file = new FileVO(); file.setHref(nombreFile); if (tempSet.add(file)) { asocArSes.getFicheros().add(file); } } else { // caso dos .. recu es una carpeta, por lo que debo agregar a la lista todos sus // contendios List filesTemp = new ArrayList(); ArchivoVO[] archivos = recu.getContenidos(); if (archivos != null && archivos.length > 0) { listarFileVO(archivos, filesTemp); } for (int i = 0; i < filesTemp.size(); i++) { if (tempSet.add(filesTemp.get(i))) { asocArSes.getFicheros().add(filesTemp.get(i)); } } } }
/** * @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)); }