/**
  * @see
  *     es.pode.modificador.presentacion.configurar.cambios.navegarETB.NavegarETBController#prepararSeleccion(org.apache.struts.action.ActionMapping,
  *     es.pode.modificador.presentacion.configurar.cambios.navegarETB.PrepararSeleccionForm,
  *     javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  */
 public final void prepararSeleccion(
     ActionMapping mapping,
     es.pode.modificador.presentacion.configurar.cambios.navegarETB.PrepararSeleccionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
     throws Exception {
   TaxonomiaVO taxonomia = new TaxonomiaVO();
   taxonomia.setTaxonPath(null);
   taxonomia.setIdioma(this.getTesauroSession(request).getTaxonomia().getIdioma());
   JerarquiaVO[] jerarquia = this.getTesauroSession(request).getTaxonomia().getJerarquia();
   // Componemos un array de taxones con las rutas padres
   TaxonVO[] hijos = componerRutasDisponibles(jerarquia);
   taxonomia.setHijos(hijos);
   form.setTaxonomia(taxonomia);
   form.setIdiomaBuscadorBackingList(
       IdiomasBuscadorSingleton.getInstance().obtenerIdiomas(LdapUserDetailsUtils.getIdioma()),
       "idLocalizacion",
       "nombre");
 }
 /**
  * @see
  *     es.pode.modificador.presentacion.configurar.cambios.navegarETB.NavegarETBController#navegarETB(org.apache.struts.action.ActionMapping,
  *     es.pode.modificador.presentacion.configurar.cambios.navegarETB.NavegarETBForm,
  *     javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  */
 public final void navegarETB(
     ActionMapping mapping,
     es.pode.modificador.presentacion.configurar.cambios.navegarETB.NavegarETBForm form,
     HttpServletRequest request,
     HttpServletResponse response)
     throws Exception {
   /*
    * Se contemplan tres casos:
    *   - idTermino != "0.0" y taxonomiaSession.taxonomia.jerarquia==null: Navegacion normal
    *   - idTermino != "0.0" y taxonomiaSession.taxonomia.jerarquia!=null y taxonomiaSession.taxonomia.taxonPath == null: Seleccion de ruta padre
    *   - idTermino == "0.0": preparar la seleccion de ruta padre
    */
   String idTermino = form.getIdTermino();
   TaxonomiaVO taxonomiaSession = this.getTesauroSession(request).getTaxonomia();
   if (logger.isDebugEnabled())
     logger.debug(
         "NavegarTesauro con parametros idTermino = "
             + idTermino
             + " y taxonomia (session) = "
             + taxonomiaSession);
   TaxonomiaVO taxonomia = null;
   if ("0.0".equals(idTermino)) {
     if (taxonomiaSession == null)
       throw new ValidatorException("Error de sesion: tesauroSession == null");
     form.setIdTermino(null);
     taxonomia = new TaxonomiaVO();
     taxonomia.setTaxonPath(null);
     TaxonVO[] rutasDisponibles = componerRutasDisponibles(taxonomiaSession.getJerarquia());
     taxonomia.setHijos(rutasDisponibles);
     taxonomia.setIdioma(taxonomiaSession.getIdioma());
     taxonomia.setNombreTaxonomia(taxonomiaSession.getNombreTaxonomia());
     taxonomia.setTaxonomias(taxonomiaSession.getTaxonomias());
     taxonomia.setJerarquia(taxonomiaSession.getJerarquia());
   } else {
     if (taxonomiaSession != null
         && taxonomiaSession.getJerarquia() != null
         && taxonomiaSession.getTaxonPath() == null) {
       // Seleccion de ruta padre entre disponibles: idTermino es la posicion en el array de
       // jerarquia
       int posicion = Integer.parseInt(idTermino);
       if (logger.isDebugEnabled())
         logger.debug("Elegida la ruta " + posicion + " de las rutas padres disponibles");
       TaxonVO[] rutaElegida = taxonomiaSession.getJerarquia()[posicion].getJerarquia();
       String idRecuperar = rutaElegida[rutaElegida.length - 1].getId();
       taxonomia =
           this.getSrvHerramientaModificacion()
               .navegarTesauro(idRecuperar, null, LdapUserDetailsUtils.getIdioma());
       taxonomia.setTaxonPath(rutaElegida);
       taxonomia.setJerarquia(null);
     } else {
       // Navegacion normal
       taxonomia =
           this.getSrvHerramientaModificacion()
               .navegarTesauro(idTermino, null, LdapUserDetailsUtils.getIdioma());
     }
   }
   // Compruebo el codigo 0.0 en el el primer taxon de taxonPath. Si lo encuentro, lo sustituyo por
   // el mensaje i18n correspondiente.
   if (taxonomia.getTaxonPath() != null
       && taxonomia.getTaxonPath()[0].getValorTax().equals("0.0")) {
     taxonomia.getTaxonPath()[0].setValorTax(
         resources.getMessage(
             (Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE),
             "tesauros.varias.rutas"));
   }
   this.getTesauroSession(request).setTaxonomia(taxonomia);
   form.setTaxonomia(taxonomia);
   form.setIdTermino(form.getIdTermino());
   form.setIdiomaBuscadorBackingList(
       IdiomasBuscadorSingleton.getInstance().obtenerIdiomas(LdapUserDetailsUtils.getIdioma()),
       "idLocalizacion",
       "nombre");
 }