Example usage for org.apache.commons.validator ValidatorException ValidatorException

List of usage examples for org.apache.commons.validator ValidatorException ValidatorException

Introduction

In this page you can find the example usage for org.apache.commons.validator ValidatorException ValidatorException.

Prototype

public ValidatorException(String message) 

Source Link

Document

Constructs an Exception with the specified detail message.

Usage

From source file:es.pode.administracion.presentacion.planificador.modificarTarea.ObtenerTareaControllerImpl.java

/**
 * Metodo que guarda los cambios que se han echo en la tarea informeFechaUsuario
 *///from  www . j a  v a 2s. co  m
public void modificarTareaInformeFechaUsuario(org.apache.struts.action.ActionMapping mapping,
        es.pode.administracion.presentacion.planificador.modificarTarea.ModificarTareaInformeFechaUsuarioForm form,
        javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
        throws java.lang.Exception {
    if (tz == null)
        tz = utilidades.asignarZonaHoraria();

    TrabajoVO trabajo = new TrabajoVO(); // Trabajo a modificar
    TareaInformesVO datosTarea = new TareaInformesVO(); // Datos a modificar

    String dia = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getDia());
    String mes = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMes());
    String anio = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getAnio());
    String hora = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getHora());
    String minutos = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMinutos());

    try {

        if (((FormularioInformeFechaRangoIIAceptarFormImpl) form).getPeriodicidad().equalsIgnoreCase("N")) {
            String anioDesde = new String(
                    ((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getAnioDesde());
            String mesDesde = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMesDesde());
            String diaDesde = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getDiaDesde());
            String anioHasta = new String(
                    ((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getAnioHasta());
            String mesHasta = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMesHasta());
            String diaHasta = new String(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getDiaHasta());

            //Comprobamos que todos los campos de la fecha de inicio estn rellenos
            if (anioDesde.equalsIgnoreCase("") || mesDesde.equalsIgnoreCase("")
                    || diaDesde.equalsIgnoreCase(""))

                throw new ValidatorException("{informes.crearInformes.fechaDesdeCampoVacio}");

            //Comprobamos que todos los campos de la fecha fin estn rellenos
            if (anioHasta.equalsIgnoreCase("") || mesHasta.equalsIgnoreCase("")
                    || diaHasta.equalsIgnoreCase(""))

                throw new ValidatorException("{informes.crearInformes.fechaHastaCampoVacio}");

            //Comprobamos que los campos de las fechas son numeros
            if (log.isDebugEnabled())
                log.debug("comprobamos si las fechas tiene caracteres no numericos");
            try {
                new Integer(anioDesde).intValue();
                new Integer(mesDesde).intValue();
                new Integer(diaDesde).intValue();

            } catch (Exception e) {
                log.error("Alguno de los campos de la fecha desde no son nmeros");
                throw new ValidatorException("{tareas.eliminarOdes.fechaDesde}");
            }
            try {
                new Integer(anioHasta).intValue();
                new Integer(mesHasta).intValue();
                new Integer(diaHasta).intValue();

            } catch (Exception e) {
                log.error("Alguno de los campos de la fecha hasta no son nmeros");
                throw new ValidatorException("{tareas.eliminarOdes.fechaHasta}");
            }

            // Comprobamos si las fechas introducidas son correctas
            boolean fechaValidaDesde = utilidades.validacionFechaDDMMAAAAHHMM(diaDesde, mesDesde, anioDesde,
                    "yyyyMMdd");

            boolean fechaValidaHasta = utilidades.validacionFechaDDMMAAAAHHMM(diaHasta, mesHasta, anioHasta,
                    "yyyyMMdd");

            boolean comparacionFechaDesdeHasta = utilidades.comparacionFechas(anioDesde, mesDesde, diaDesde,
                    anioHasta, mesHasta, diaHasta);

            if (!fechaValidaHasta && !fechaValidaDesde)
                throw new ValidatorException("{tareas.fechaDesdeHastaIncorrecta}");

            if (!fechaValidaDesde)
                throw new ValidatorException("{tareas.fechaDesdeIncorrecta}");

            if (!fechaValidaHasta)
                throw new ValidatorException("{tareas.fechaHastaIncorrecta}");

            if (!comparacionFechaDesdeHasta)
                throw new ValidatorException("{tareas.fechaDesdeMasQueHasta}");

            Calendar calFechaDesde = Calendar.getInstance(tz);
            calFechaDesde = new GregorianCalendar(new Integer(anioDesde).intValue(),
                    new Integer(mesDesde).intValue() - 1, new Integer(diaDesde).intValue(), 0, 1);

            Calendar calFechaHasta = Calendar.getInstance(tz);
            calFechaHasta = new GregorianCalendar(new Integer(anioHasta).intValue(),
                    new Integer(mesHasta).intValue() - 1, new Integer(diaHasta).intValue(), 23, 59);

            datosTarea.setFechaDesde(calFechaDesde);
            datosTarea.setFechaHasta(calFechaHasta);

        } else {
            if (log.isDebugEnabled())
                log.debug("es periodica");
        }

        try {

            trabajo.setTrabajo(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getTrabajo());
            trabajo.setGrupoTrabajo(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getGrupoTrabajo());

            datosTarea.setTrabajo(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getTrabajo());
            datosTarea
                    .setGrupoTrabajo(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getGrupoTrabajo());
            datosTarea.setTrigger(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getTrigger());
            datosTarea
                    .setGrupoTrigger(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getGrupoTrigger());
            datosTarea
                    .setPeriodicidad(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getPeriodicidad());
            datosTarea.setFormato(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getFormato());
            datosTarea.setUsuarioInforme(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getUsuario());
            datosTarea.setInforme(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getInforme());
            datosTarea.setMsgInforme(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMsgInforme());
            datosTarea
                    .setMsgNoInforme(((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMsgNoInforme());
            datosTarea.setMsgDescripcionTrabajo(
                    ((FormularioInformeFechaUsuarioIIAceptarFormImpl) form).getMsgDescTrabajo());

            Calendar cal = Calendar.getInstance(tz);
            cal = new GregorianCalendar(new Integer(anio).intValue(), new Integer(mes).intValue() - 1,
                    new Integer(dia).intValue(), new Integer(hora).intValue(), new Integer(minutos).intValue());

            datosTarea.setFechaInicio(cal);

            datosTarea.setUsuario(LdapUserDetailsUtils.getUsuario());

            TareaInformesVO tareaRecuperada = this.getSrvPlanificadorService()
                    .modificarTareaInformes(datosTarea, trabajo);
            form.setTareaModificada(tareaRecuperada.getTrabajo());

        } catch (Exception e) {
            log.error("se produce un error " + e);
            throw new ValidatorException("{tareas.error}");
        }
    } catch (ValidatorException ve) {
        log.error("error " + ve);
        throw ve;
    } catch (Exception e) {
        log.error("Error: " + e);
        //throw new ValidatorException("{tareas.error}");
    }
}

From source file:es.pode.administracion.presentacion.planificador.modificarTarea.ObtenerTareaControllerImpl.java

/**
 * Metodo que modifica la tarea de informes Federados con los nuevos datos
 *//*from w ww.  ja  v  a2s  .  com*/
public void modificarTareaInformeFederado(org.apache.struts.action.ActionMapping mapping,
        es.pode.administracion.presentacion.planificador.modificarTarea.ModificarTareaInformeFederadoForm form,
        javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
        throws java.lang.Exception {
    if (tz == null)
        tz = utilidades.asignarZonaHoraria();

    String dia = new String(((FormularioInformeFederadoIIAceptarFormImpl) form).getDia());
    String mes = new String(((FormularioInformeFederadoIIAceptarFormImpl) form).getMes());
    String anio = new String(((FormularioInformeFederadoIIAceptarFormImpl) form).getAnio());
    String hora = new String(((FormularioInformeFederadoIIAceptarFormImpl) form).getHora());
    String minutos = new String(((FormularioInformeFederadoIIAceptarFormImpl) form).getMinutos());

    TrabajoVO trabajo = new TrabajoVO(); // Trabajo a modificar
    TareaInformesVO datosTarea = new TareaInformesVO(); // Datos a modificar

    try {

        trabajo.setTrabajo(((FormularioInformeFederadoIIAceptarFormImpl) form).getTrabajo());
        trabajo.setGrupoTrabajo(((FormularioInformeFederadoIIAceptarFormImpl) form).getGrupoTrabajo());

        datosTarea.setTrabajo(((FormularioInformeFederadoIIAceptarFormImpl) form).getTrabajo());
        datosTarea.setGrupoTrabajo(((FormularioInformeFederadoIIAceptarFormImpl) form).getGrupoTrabajo());
        datosTarea.setTrigger(((FormularioInformeFederadoIIAceptarFormImpl) form).getTrigger());
        datosTarea.setGrupoTrigger(((FormularioInformeFederadoIIAceptarFormImpl) form).getGrupoTrigger());
        datosTarea.setPeriodicidad(((FormularioInformeFederadoIIAceptarFormImpl) form).getPeriodicidad());
        datosTarea.setFormato(((FormularioInformeFederadoIIAceptarFormImpl) form).getFormato());
        datosTarea.setInforme(((FormularioInformeFederadoIIAceptarFormImpl) form).getInforme());
        datosTarea.setMsgInforme(((FormularioInformeFederadoIIAceptarFormImpl) form).getMsgInforme());
        datosTarea.setMsgNoInforme(((FormularioInformeFederadoIIAceptarFormImpl) form).getMsgNoInforme());
        datosTarea.setMsgDescripcionTrabajo(
                ((FormularioInformeFederadoIIAceptarFormImpl) form).getMsgDescTrabajo());

        Calendar cal = Calendar.getInstance(tz);
        cal = new GregorianCalendar(new Integer(anio).intValue(), new Integer(mes).intValue() - 1,
                new Integer(dia).intValue(), new Integer(hora).intValue(), new Integer(minutos).intValue());

        datosTarea.setFechaInicio(cal);

        datosTarea.setUsuario(LdapUserDetailsUtils.getUsuario());

        TareaInformesVO tareaRecuperada = this.getSrvPlanificadorService()
                .modificarTareaInformesFederado(datosTarea, trabajo);
        form.setTareaModificada(tareaRecuperada.getTrabajo());

    } catch (Exception e) {
        log.error("Error: " + e);
        throw new ValidatorException("{tareas.error}");
    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.DetalleClasificacionControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.DetalleClasificacionController#cargarTaxones(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.CargarTaxonesForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */// w  w  w. java 2  s. co m
public final void cargarTaxones(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.CargarTaxonesForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    InputStream is = null;
    Properties prop = new Properties();
    Object valor = request.getSession().getAttribute("form");
    boolean nocargaTax = true;
    boolean hayTaxones = false;
    String source = "";
    String idioma = "";
    String url = "";
    AvClassificationVO clasificacionAux = null;
    SourceValueVO sourceVO = null;
    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    String vocabName = null;
    try {
        is = this.getClass().getResourceAsStream("/catalogadorAvanzado.properties");
        prop.load(is);

        if (valor instanceof DetalleClasificacionFormImpl) {
            form.setComboIdiomaLabelList(((DetalleClasificacionFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(((DetalleClasificacionFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((DetalleClasificacionFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((DetalleClasificacionFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((DetalleClasificacionFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((DetalleClasificacionFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((DetalleClasificacionFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((DetalleClasificacionFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((DetalleClasificacionFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((DetalleClasificacionFormImpl) valor).getSourceLabelList());

        } else if (valor instanceof DetalleClasificacionSubmitFormImpl) {
            form.setComboIdiomaLabelList(
                    ((DetalleClasificacionSubmitFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(
                    ((DetalleClasificacionSubmitFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((DetalleClasificacionSubmitFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((DetalleClasificacionSubmitFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((DetalleClasificacionSubmitFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((DetalleClasificacionSubmitFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((DetalleClasificacionSubmitFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((DetalleClasificacionSubmitFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((DetalleClasificacionSubmitFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((DetalleClasificacionSubmitFormImpl) valor).getSourceLabelList());
        } else if (valor instanceof ClasificacionNoValidaVolverFormImpl) {
            form.setComboIdiomaLabelList(
                    ((ClasificacionNoValidaVolverFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(
                    ((ClasificacionNoValidaVolverFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((ClasificacionNoValidaVolverFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((ClasificacionNoValidaVolverFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((ClasificacionNoValidaVolverFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((ClasificacionNoValidaVolverFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((ClasificacionNoValidaVolverFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((ClasificacionNoValidaVolverFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((ClasificacionNoValidaVolverFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((ClasificacionNoValidaVolverFormImpl) valor).getSourceLabelList());
        } else if (valor instanceof ClasificacionValidaVolverFormImpl) {
            form.setComboIdiomaLabelList(((ClasificacionValidaVolverFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(((ClasificacionValidaVolverFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((ClasificacionValidaVolverFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((ClasificacionValidaVolverFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((ClasificacionValidaVolverFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((ClasificacionValidaVolverFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((ClasificacionValidaVolverFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((ClasificacionValidaVolverFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((ClasificacionValidaVolverFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((ClasificacionValidaVolverFormImpl) valor).getSourceLabelList());

        } else if ((valor instanceof TaxonomiasFormImpl) || (valor instanceof TesaurosFormImpl)) {
            //Tenemos que volver a cargar todo el formulario
            //             llenar combos
            is = this.getClass().getResourceAsStream("/catalogadorAvanzado.properties");
            prop.load(is);

            //String idiomaLocale=((Locale)request.getSession().getAttribute("org.apache.struts.action.LOCALE")).getLanguage();
            ResourceBundle datosResources = I18n.getInstance().getResource("application-resources",
                    (Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE));

            String idiomaLdap = ((Locale) request.getSession().getAttribute("org.apache.struts.action.LOCALE"))
                    .getLanguage();

            String[] l_id = { prop.getProperty("idiomaDestinatario"), prop.getProperty("proposito") };
            VocabularioVO[] vocaCombos = this.getSrvVocabulariosControladosService().obtenerCombos(l_id,
                    idiomaLdap);

            if ((vocaCombos != null) && (vocaCombos.length > 0)) {
                // Rellenamos combos
                for (int ic = 0; ic < vocaCombos.length; ic++) {
                    if (vocaCombos[ic].getIdVocabulario().equals(prop.getProperty("proposito"))) {
                        // 1.- Combo de Razon-Purpose 9.1
                        TerminoVO[] terminosDest = vocaCombos[ic].getTerminos();

                        // crear el ordena en un fichero de utilidades TerminoVO[] terminosOrdDest = ordena(terminosDest, idiomaLdap);
                        TerminoVO termVacio = new TerminoVO();
                        termVacio.setIdiomaTermino("");
                        termVacio.setIdTermino("");
                        termVacio.setNomTermino("");
                        Collection idDest2 = Arrays.asList(terminosDest);
                        Collection idDest = new ArrayList();
                        idDest.add(termVacio); //Metemos el vacio para que nos salga en el combo ""
                        Iterator zDest = idDest2.iterator();
                        while (zDest.hasNext()) {
                            idDest.add(zDest.next());
                        }
                        form.setRazonBackingList(idDest, "idTermino", "nomTermino");

                    } else if (vocaCombos[ic].getIdVocabulario()
                            .equals(prop.getProperty("idiomaDestinatario"))) {
                        // 2.- Combo de idiomas sin none language 5.11 
                        TerminoVO[] terminosDest = vocaCombos[ic].getTerminos();
                        for (int li = 0; li < terminosDest.length; li++) {
                            TerminoVO idAux = new TerminoVO();
                            idAux = terminosDest[li];
                            String textoIdioma = idAux.getNomTermino();
                            String idiomasTra = I18n.getInstance().obtenerIdiomaTraducido(textoIdioma,
                                    idiomaLdap);
                            idAux.setNomTermino(idiomasTra);
                        }
                        // crear el ordena en un fichero de utilidades TerminoVO[] terminosOrdDest = ordena(terminosDest, idiomaLdap);
                        TerminoVO termVacio = new TerminoVO();
                        termVacio.setIdiomaTermino("");
                        termVacio.setIdTermino("");
                        termVacio.setNomTermino("");
                        Collection idDest2 = Arrays.asList(terminosDest);
                        Collection idDest = new ArrayList();
                        idDest.add(termVacio); //Metemos el vacio para que nos salga en el combo ""
                        Iterator zDest = idDest2.iterator();
                        while (zDest.hasNext()) {
                            idDest.add(zDest.next());
                        }
                        form.setComboIdiomaBackingList(idDest, "idTermino", "nomTermino");
                    } //fin if
                } //fin for

            } //fin vocaCombos

            //3.- Combo de Source--> generado por nosotros
            //metodo de prueba
            Collection terms = new ArrayList();
            String[] rutaBus = prop.getProperty("rutaSource").split(",");
            for (int i = 0; i < rutaBus.length; i++) {
                File dirBus = new File(rutaBus[i]);
                recogeRutasDir(dirBus, idiomaLdap, terms);
            }
            TerminoVO termVacio = new TerminoVO();
            termVacio.setIdiomaTermino("");
            termVacio.setIdTermino("");
            termVacio.setNomTermino("");
            Collection idDest2 = terms;
            Collection termsWVacio = new ArrayList();
            termsWVacio.add(termVacio); //Metemos el vacio para que nos salga en el combo ""
            Iterator zDest = idDest2.iterator();
            while (zDest.hasNext()) {
                termsWVacio.add(zDest.next());
            }

            //en terms tenemos un Array de TerminoVO 
            form.setSourceBackingList(termsWVacio, "idTermino", "nomTermino");
            /////////////////// FIN RECOGIDA COMBOS ///////////////////
            AvClassificationVO clVal = null;
            if (catalogadorAvSession.getClasificacionAux() != null)
                clVal = catalogadorAvSession.getClasificacionAux();

            if (clVal != null) {
                razon = clVal.getProposito().getValor() != null ? clVal.getProposito().getValor() : "";
                descripcion = clVal.getDescripcion();
                rutasTaxonomicas = clVal.getRutasTaxonomicas();
                palabrasClave = clVal.getPalabrasClave();
            }
            form.setRazon(razon);
            form.setRutaTaxonomicaAsArray(rutasTaxonomicas);
            form.setDescripcionesAsArray(descripcion.getTextos());
            form.setPalabrasClaveAsArray(palabrasClave);

        }

        int longitudTextosDesc = form.getDescripciones() != null ? form.getDescripciones().size() : 0;
        int longiP = form.getPalabrasClave() != null ? form.getPalabrasClave().size() : 0;
        int[] longitudTextosPCla = new int[longiP];
        for (int i = 0; i < longiP; i++) {
            longitudTextosPCla[i] = ((PalabraClaveVO) (form.getPalabrasClaveAsArray()[i])).getTextos().length;
        }
        int longitudPalabrasClave = longiP;

        int longitudRutaTaxonomica = form.getRutaTaxonomica() != null ? form.getRutaTaxonomica().size() : 0;
        int[] longiTextosFuente = new int[longitudRutaTaxonomica];
        int[] longiTaxones = new int[longitudRutaTaxonomica];
        if (form.getRutaTaxonomica() != null) {
            for (int i = 0; i < longitudRutaTaxonomica; i++) {
                longiTextosFuente[i] = ((RutaTaxonomicaVO) (form.getRutaTaxonomicaAsArray()[i])).getFuente()
                        .getTextos().length;
                longiTaxones[i] = ((RutaTaxonomicaVO) (form.getRutaTaxonomicaAsArray()[i])).getTaxones().length;
            }
        }

        cambioFormulario(request, longitudTextosDesc, longitudTextosPCla, longitudPalabrasClave,
                longitudRutaTaxonomica, longiTextosFuente, longiTaxones, null);
        //Actualizamos los valores del formulario
        form.setPalabrasClaveAsArray(palabrasClave);
        form.setRazon(razon);
        form.setRutaTaxonomicaAsArray(rutasTaxonomicas);
        form.setDescripcionesAsArray(descripcion.getTextos());
        //y lo metemos en la sesion!!!!
        if (catalogadorAvSession != null) {
            clasificacionAux = new AvClassificationVO();
            sourceVO = new SourceValueVO();
            //dameTerminoId(catalogadorAvSession.getIdioma());
            sourceVO.setSource(AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos")); //source
            sourceVO.setValor(razon);
            clasificacionAux.setProposito(sourceVO);
            clasificacionAux.setRutasTaxonomicas(rutasTaxonomicas);
            clasificacionAux.setDescripcion(descripcion);
            clasificacionAux.setPalabrasClave(palabrasClave);
            catalogadorAvSession.setClasificacionAux(clasificacionAux);//metidos los datos
            catalogadorAvSession.setTituloCategoria(form.getTituloClasificacion());
        }
        ///////////

        //UNA VEZ METIDOS LOS DATOS EN SESION, PARA QUE SI HAY ALGUN PROBLEMA SE QUEDE REFLEJADO EN EL FORMULARIO
        //ACTUALIZAMOS EL OBJETO VALOR

        if (valor instanceof DetalleClasificacionFormImpl) {
            DetalleClasificacionFormImpl formulario = (DetalleClasificacionFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());

            if (rutasTaxonomicas != null && rutasTaxonomicas.length > 0
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente() != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0] != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                            .getTexto() != null
                    && !rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0].getTexto()
                            .equals("")) {
                String nomFicheroTax = rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                        .getTexto();
                //obtenemos el vocabName de combo
                boolean encontrado = false;
                for (int i = 1; i < form.getSourceBackingList().length && !encontrado; i++) {
                    if (nomFicheroTax.equals(form.getSourceValueList()[i].toString())) {
                        vocabName = form.getSourceLabelList()[i].toString();
                        encontrado = true;
                    }
                }

            }
            formulario.setVocabName(vocabName);
        } else if (valor instanceof DetalleClasificacionSubmitFormImpl) {
            DetalleClasificacionSubmitFormImpl formulario = (DetalleClasificacionSubmitFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
            if (rutasTaxonomicas != null && rutasTaxonomicas.length > 0
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente() != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0] != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                            .getTexto() != null
                    && !rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0].getTexto()
                            .equals("")) {
                String nomFicheroTax = rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                        .getTexto();
                //obtenemos el vocabName de combo
                boolean encontrado = false;
                for (int i = 1; i < form.getSourceBackingList().length && !encontrado; i++) {
                    if (nomFicheroTax.equals(form.getSourceValueList()[i].toString())) {
                        vocabName = form.getSourceLabelList()[i].toString();
                        encontrado = true;
                    }
                }
            }
            formulario.setVocabName(vocabName);

        } else if (valor instanceof ClasificacionNoValidaVolverFormImpl) {
            ClasificacionNoValidaVolverFormImpl formulario = (ClasificacionNoValidaVolverFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
            if (rutasTaxonomicas != null && rutasTaxonomicas.length > 0
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente() != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0] != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                            .getTexto() != null
                    && !rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0].getTexto()
                            .equals("")) {
                String nomFicheroTax = rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                        .getTexto();
                //obtenemos el vocabName de combo
                boolean encontrado = false;
                for (int i = 1; i < form.getSourceBackingList().length && !encontrado; i++) {
                    if (nomFicheroTax.equals(form.getSourceValueList()[i].toString())) {
                        vocabName = form.getSourceLabelList()[i].toString();
                        encontrado = true;
                    }
                }
            }
            formulario.setVocabName(vocabName);
        } else if (valor instanceof ClasificacionValidaVolverFormImpl) {
            ClasificacionValidaVolverFormImpl formulario = (ClasificacionValidaVolverFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
            if (rutasTaxonomicas != null && rutasTaxonomicas.length > 0
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente() != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0] != null
                    && rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                            .getTexto() != null
                    && !rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0].getTexto()
                            .equals("")) {
                String nomFicheroTax = rutasTaxonomicas[rutasTaxonomicas.length - 1].getFuente().getTextos()[0]
                        .getTexto();
                //obtenemos el vocabName de combo
                boolean encontrado = false;
                for (int i = 1; i < form.getSourceBackingList().length && !encontrado; i++) {
                    if (nomFicheroTax.equals(form.getSourceValueList()[i].toString())) {
                        vocabName = form.getSourceLabelList()[i].toString();
                        encontrado = true;
                    }
                }

            }
            formulario.setVocabName(vocabName);
        }

        //posicion que hemos pulsado
        String posicion = request.getAttribute("posicion").toString();
        int posDesc = Integer.parseInt(posicion);
        if (rutasTaxonomicas != null) {
            int lengRutas = rutasTaxonomicas.length;
            if (posDesc <= lengRutas) {
                source = rutasTaxonomicas[posDesc].getFuente().getTextos()[0].getTexto();
                idioma = rutasTaxonomicas[posDesc].getFuente().getTextos()[0].getIdioma();//hay q traducir 1.3.3 por es ejm
                TaxonVO[] tax = rutasTaxonomicas[posDesc].getTaxones();
                String idTex = "";
                String entryTex = "";
                if (!source.equals("") && !idioma.equals("")) {
                    if ((tax != null) && (tax.length > 0)) {
                        idTex = tax[0].getId().getTexto();
                        LangStringVO[] lanstex = tax[0].getEntry().getTextos();
                        if ((lanstex != null) && (lanstex.length > 0)) {
                            entryTex = lanstex[0].getTexto();
                            if ((idTex.equals("")) && (entryTex.equals(""))) {
                                hayTaxones = true;
                            } else
                                hayTaxones = false;
                        }
                    }
                } else {
                    nocargaTax = false;
                }

            }
        }
    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new java.lang.Exception("detalle.clasificacion", ad);
    } catch (Exception e) {
        logger.error("Error en Servicio de catalogacion avanzado, metodo cargarTaxones " + e);
        throw new java.lang.Exception("detalle.clasificacion", e);

    }

    if ((nocargaTax) && (hayTaxones)) {
        boolean idiomaTesExiste = true;
        try {
            String nombreTax = "";
            String taxOTex = "";
            if ((source != null)
                    && (!source.equals("") && (source.endsWith("_TAX") || (source.endsWith("_TES"))))) {
                nombreTax = source.substring(0, source.length() - 4);
                if (idioma != null && !idioma.equals("")) {
                    String[] datoIdiomaRuta = { idioma };
                    TerminoYPadreVO[] terminosTraducPCla = this.getSrvVocabulariosControladosService()
                            .crearTraduccionAIngles(datoIdiomaRuta);
                    idioma = terminosTraducPCla[0].getNomTermino();
                    if (source.endsWith("TAX")) {
                        taxOTex = "/catalogadorWeb/Taxonomias/Taxonomias.do?nomTaxonomia=" + nombreTax
                                + "&idioma=" + idioma + "&vocabName=" + vocabName;
                    } else if (source.endsWith("TES")) {
                        idiomaTesExiste = this.getSrvTesaurosServices().chequearExistenciaIdioma(idioma);
                        if (idiomaTesExiste) {
                            taxOTex = "/catalogadorWeb/Tesauros/Tesauros.do?nomTesauro=" + nombreTax
                                    + "&idioma=" + idioma + "&vocabName=" + vocabName;
                        }
                    }
                } else {
                    if (source.endsWith("TAX")) {
                        taxOTex = "/catalogadorWeb/Taxonomias/Taxonomias.do?nomTaxonomia=" + nombreTax
                                + "&idioma=" + catalogadorAvSession.getIdioma() + "&vocabName=" + vocabName;
                    } else if (source.endsWith("TES")) {
                        taxOTex = "/catalogadorWeb/Tesauros/Tesauros.do?nomTesauro=" + nombreTax + "&idioma="
                                + catalogadorAvSession.getIdioma() + "&vocabName=" + vocabName;
                    }
                }
                if (idiomaTesExiste) {
                    url = HTTP + LdapUserDetailsUtils.getHost() + LdapUserDetailsUtils.getSubdominio()
                            + taxOTex;
                    response.sendRedirect(url);
                }
            }
        } catch (Exception e) {
            logger.error("Error en Servicio de catalogacion avanzado, metodo cargarTaxones " + e);
            throw new java.lang.Exception("detalle.clasificacion", e);

        }

        if (!idiomaTesExiste)
            throw new ValidatorException("{detalleclasi.error.tesauroSinIdioma}");

    } else {
        if (hayTaxones)
            throw new ValidatorException("{detalleclasi.error.hayTaxones}");
        else
            throw new ValidatorException("{detalleclasi.error.yaDatos}");
    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.ciclodevida.CiclodevidaControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.ciclodevida.CiclodevidaController#guardarCicloVida(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.ciclodevida.GuardarCicloVidaForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 *///from w  w w. j a v a2s.  com
public final void guardarCicloVida(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.ciclodevida.GuardarCicloVidaForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {

    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorFechaObli = false;
    boolean errorFechaObliHorMin = false;
    boolean errorFechaZonaHoraria = false;
    boolean errorFechaComboZH = false;
    boolean errorEmail = false;
    boolean errorNoNumero = false;
    boolean errorFecha = false;
    boolean errorFormatoFecha = false;
    boolean errorZHFueraRango = false;
    boolean errorFechaFueraRango = false;

    VersionVO version = null;
    ContribucionVO[] contribucionesVO = null;
    SourceValueVO estatusSV = null;
    VersionVO versionVO = null;

    LomAvanzadoVO auxAvanzado = new LomAvanzadoVO();
    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    try {
        AvLifeCycleVO lifeCycle = new AvLifeCycleVO();
        auxAvanzado.setLifeCycle(lifeCycle);

        String source = AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos");

        String usuario = LdapUserDetailsUtils.getUsuario();
        //String usuario="empaquetador";
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(this.getCatalogadorAvSession(request).getIdioma());
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        //          metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);

        Object valor = request.getSession().getAttribute("form");

        //Obtenemos la longitudes de los VOs, que pasamos a cambioFormulario para que se obtengan del request los cambios que hemos hecho
        //Pues en el form que nos viene como parametro no los guarda.
        int longitudDescripciones = 0;
        int longitudVersiones = 0;
        int longitudContribuciones = 0;
        int[] longitudTextosDesc = new int[0];
        int[] longitudEntidadesContrib = new int[0];
        if (valor instanceof CicloDeVidaFormImpl) {
            CicloDeVidaFormImpl valorGen = ((CicloDeVidaFormImpl) valor);
            Object[] desc = valorGen.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorGen.getContribuciones().size()];
            for (int i = 0; i < valorGen.getContribuciones().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorGen.getContribucionesAsArray()[i]))
                        .getEntidades().length;
            }
            longitudContribuciones = valorGen.getContribuciones().size();
            longitudDescripciones = desc.length;
            longitudVersiones = (((VersionVO[]) valorGen.getVersionesAsArray())[0]).getTextos().length;

        } else if (valor instanceof CicloFormAccionSubmitFormImpl) {
            CicloFormAccionSubmitFormImpl valorGen = ((CicloFormAccionSubmitFormImpl) valor);
            Object[] desc = valorGen.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorGen.getContribuciones().size()];
            for (int i = 0; i < valorGen.getContribuciones().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorGen.getContribucionesAsArray()[i]))
                        .getEntidades().length;
            }
            longitudContribuciones = valorGen.getContribuciones().size();
            longitudDescripciones = desc.length;
            longitudVersiones = (((VersionVO[]) valorGen.getVersionesAsArray())[0]).getTextos().length;
        } else if (valor instanceof CicloNoValidoVolverFormImpl) {
            CicloNoValidoVolverFormImpl valorGen = ((CicloNoValidoVolverFormImpl) valor);
            Object[] desc = valorGen.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorGen.getContribuciones().size()];
            for (int i = 0; i < valorGen.getContribuciones().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorGen.getContribucionesAsArray()[i]))
                        .getEntidades().length;
            }
            longitudContribuciones = valorGen.getContribuciones().size();
            longitudDescripciones = desc.length;
            longitudVersiones = (((VersionVO[]) valorGen.getVersionesAsArray())[0]).getTextos().length;
        } else if (valor instanceof CicloValidoVolverFormImpl) {
            CicloValidoVolverFormImpl valorGen = ((CicloValidoVolverFormImpl) valor);
            Object[] desc = valorGen.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorGen.getContribuciones().size()];
            for (int i = 0; i < valorGen.getContribuciones().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorGen.getContribucionesAsArray()[i]))
                        .getEntidades().length;
            }
            longitudContribuciones = valorGen.getContribuciones().size();
            longitudDescripciones = desc.length;
            longitudVersiones = (((VersionVO[]) valorGen.getVersionesAsArray())[0]).getTextos().length;
        }

        //Recogemos los cambio del request mediante parametros

        cambioFormulario(request, longitudDescripciones, longitudVersiones, longitudContribuciones,
                longitudTextosDesc, longitudEntidadesContrib);

        //Guardamos los cambios en el form obtenido de request.getSession.getAttribute("form") para que en caso de faltar
        //algun idioma o texto sin rellenar cargue el formulario con lo cambio y no perdamos todo lo modificado hasta ese
        //momento, si no lo hicieramos cargara el formulario anterior.

        //VERSION
        VersionVO[] versionesAux = new VersionVO[1];
        LangStringVO[] langVerAux = new LangStringVO[versiones[0].getTextos().length];
        for (int i = 0; i < versiones[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(versiones[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(versiones[0].getTextos()[i].getTexto());
            langVerAux[i] = nuevoLang;
        }
        VersionVO VerAux = new VersionVO();
        VerAux.setTextos(langVerAux);
        versionesAux[0] = VerAux;

        //DESCRIPCIONES
        DescripcionVO[] descripcionesAux = new DescripcionVO[descripciones.length];
        for (int i = 0; i < descripciones.length; i++) {
            DescripcionVO descripAux = new DescripcionVO();
            LangStringVO[] langDescrip = descripciones[i].getTextos();
            LangStringVO[] langDescripAux = new LangStringVO[langDescrip.length];
            for (int j = 0; j < langDescrip.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langDescrip[j].getIdioma());
                nuevoLang.setTexto(langDescrip[j].getTexto());
                langDescripAux[j] = nuevoLang;
            }
            descripAux.setTextos(langDescripAux);
            descripcionesAux[i] = descripAux;
        }
        //CONTRIBUCIONES
        Contribucion[] contribucionesAux = new Contribucion[contribuciones.length];
        for (int i = 0; i < contribuciones.length; i++) {
            Contribucion contribucionAux = new Contribucion();
            //rol
            SourceValueVO rolAux = new SourceValueVO();
            rolAux.setValor(contribuciones[i].getRol().getValor());
            //entidad
            Entidad[] entidades = contribuciones[i].getEntidades();
            Entidad[] entidadesAux = new Entidad[entidades.length];
            for (int j = 0; j < entidadesAux.length; j++) {
                Entidad entidad = new Entidad();
                entidad.setCorreo(entidades[j].getCorreo());
                entidad.setNombre(entidades[j].getNombre());
                entidad.setOrganizacion(entidades[j].getOrganizacion());
                entidadesAux[j] = entidad;
            }
            //fecha
            Fecha fechaAux = contribuciones[i].getFecha();
            //contribucion
            contribucionAux.setRol(rolAux);
            contribucionAux.setEntidades(entidadesAux);
            contribucionAux.setFecha(fechaAux);
            contribucionesAux[i] = contribucionAux;
        }

        if (valor instanceof CicloDeVidaFormImpl) {
            ((CicloDeVidaFormImpl) valor).setVersionesAsArray(versionesAux);
            ((CicloDeVidaFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((CicloDeVidaFormImpl) valor).setContribucionesAsArray(contribucionesAux);

        } else if (valor instanceof CicloFormAccionSubmitFormImpl) {
            ((CicloFormAccionSubmitFormImpl) valor).setVersionesAsArray(versionesAux);
            ((CicloFormAccionSubmitFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((CicloFormAccionSubmitFormImpl) valor).setContribucionesAsArray(contribucionesAux);
        } else if (valor instanceof CicloValidoVolverFormImpl) {
            ((CicloValidoVolverFormImpl) valor).setVersionesAsArray(versionesAux);
            ((CicloValidoVolverFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((CicloValidoVolverFormImpl) valor).setContribucionesAsArray(contribucionesAux);
        } else if (valor instanceof CicloNoValidoVolverFormImpl) {
            ((CicloNoValidoVolverFormImpl) valor).setVersionesAsArray(versionesAux);
            ((CicloNoValidoVolverFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((CicloNoValidoVolverFormImpl) valor).setContribucionesAsArray(contribucionesAux);
        }

        estatus = form.getEstatus();

        //Obtnemos los terminos de los ids seleccionados en todos los combos, y los guarda en los VO 
        dameTerminoId();

        //Comprobamos si los campos ha sido rellenados adecuadamente

        //VERSIONES
        versionVO = new VersionVO();
        if (versiones != null && versiones.length != 0) {
            version = (VersionVO) versiones[0];
            LangStringVO[] textos = version.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lVer = (LangStringVO) textos[j];

                if (lVer != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lVer.getIdioma();
                    String texto = lVer.getTexto();
                    if (((idioma != null) && (!idioma.trim().equals("")))
                            && ((texto != null) && (!texto.trim().equals("")))) {
                        lLang.setIdioma(idioma.trim());
                        lLang.setTexto(texto.trim());
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.trim().equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.trim().equals(""))
                            errorFaltaTexto = true;
                    }
                }
            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0)
                versionVO = null;
            else
                versionVO.setTextos(lLangS);
        } else
            versionVO = null;

        auxAvanzado.getLifeCycle().setVersion(versionVO);

        //ESTATUS
        estatusSV = new SourceValueVO();
        if ((estatus != null) && (!estatus.equals(""))) {
            estatusSV.setValor(estatus);
            estatusSV.setSource(source);
        } else {
            estatusSV = null;
        }
        auxAvanzado.getLifeCycle().setEstado(estatusSV);

        //CONTRIBUCIONES
        contribucionesVO = null;
        if (contribuciones != null && contribuciones.length != 0) {
            contribucionesVO = new ContribucionVO[contribuciones.length];
            ArrayList listaContribuciones = new ArrayList();
            for (int k = 0; k < contribuciones.length; k++) {
                ContribucionVO contribucionVO = new ContribucionVO();
                //FECHA
                FechaVO fechaVO = new FechaVO();
                //Descripciones
                /**********************************************/
                if (descripciones != null && descripciones.length != 0) {
                    if (descripciones[k] != null) {
                        ArrayList listDesc = new ArrayList();
                        DescripcionVO lDesc = (DescripcionVO) (descripciones[k]);
                        DescripcionVO lDescripciones = new DescripcionVO();
                        for (int j = 0; j < lDesc.getTextos().length; j++) {
                            LangStringVO lang = lDesc.getTextos()[j];
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto();
                            if (((idioma != null) && (!idioma.trim().equals("")))
                                    && ((texto != null) && (!texto.trim().equals("")))) {
                                lLang.setIdioma(idioma.trim());
                                lLang.setTexto(texto.trim());
                                listDesc.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.trim().equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.trim().equals(""))
                                    errorFaltaTexto = true;
                            }
                        }

                        if (listDesc.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listDesc
                                    .toArray(new LangStringVO[listDesc.size()]);
                            lDescripciones.setTextos(langs);
                            fechaVO.setDescripcion(lDescripciones);
                        } else {//meter una vacia???   
                            fechaVO.setDescripcion(null);
                        }
                    }

                }
                /**********************************************/
                //fecha
                /**********************************************/
                // es obl al menos yyyy-MM-dd

                Fecha fechaAux = contribuciones[k].getFecha();
                //               fechaAux.setIdioma(idiomaLdap);
                Integer[] errores = fechaAux.validar();
                if (errores.length > 0) {
                    for (int i = 0; i < errores.length; i++) {
                        if (errores[i].equals(Fecha.ErrorNoNumero) && !errorNoNumero)
                            errorNoNumero = true;
                        else if (errores[i].equals(Fecha.ErrorFechaFueraRango) && !errorFechaFueraRango)
                            errorFechaFueraRango = true;
                        else if (errores[i].equals(Fecha.ErrorZHFueraRango) && !errorZHFueraRango)
                            errorZHFueraRango = true;
                        else if (errores[i].equals(Fecha.ErrorFechaComboZH) && !errorFechaComboZH)
                            errorFechaComboZH = true;
                        else if (errores[i].equals(Fecha.ErrorFechaZonaHoraria) && !errorFechaZonaHoraria)
                            errorFechaZonaHoraria = true;
                        else if (errores[i].equals(Fecha.ErrorFechaObliHorMin) && !errorFechaObliHorMin)
                            errorFechaObliHorMin = true;
                        else if (errores[i].equals(Fecha.ErrorFechaObli) && !errorFechaObli)
                            errorFechaObli = true;
                        else if (errores[i].equals(Fecha.ErrorFormatoFecha) && !errorFormatoFecha)
                            errorFormatoFecha = true;

                    }
                }

                if (errores.length == 0) {
                    fechaVO.setFecha(fechaAux.getFechaLomes());
                } else {
                    fechaVO.setFecha(null);
                }

                if (fechaVO.getDescripcion() == null && fechaVO.getFecha() == null)
                    fechaVO = null;

                contribucionVO.setFecha(fechaVO);

                /**********************************************/
                //rol   
                /**********************************************/
                SourceValueVO rolVO = new SourceValueVO();
                String rol = contribuciones[k].getRol().getValor();
                if ((rol != null) && (!rol.equals(""))) {
                    rolVO.setSource(source);
                    rolVO.setValor(rol);
                } else {
                    rolVO = null;
                }
                contribucionVO.setTipo(rolVO);
                /**********************************************/
                //entidad
                /**********************************************/
                EntidadVO[] entidadesVO = null;
                Entidad[] entidades = contribuciones[k].getEntidades();
                ArrayList listaEntidades = new ArrayList();
                for (int i = 0; i < entidades.length; i++) {
                    Entidad entidad = entidades[i];
                    EntidadVO entidadVO = new EntidadVO();
                    String textoEnt = "";
                    if (!entidad.getOrganizacion().trim().equals("") || !entidad.getCorreo().trim().equals("")
                            || !entidad.getNombre().trim().equals("")) {
                        if (!entidad.getCorreo().trim().equals("")) {
                            if (validaEmail(entidad.getCorreo())) {
                                textoEnt = new StringBuffer("BEGIN:VCARD VERSION:3.0 FN:")
                                        .append(entidad.getNombre().trim()).append(" EMAIL;TYPE=INTERNET:")
                                        .append(entidad.getCorreo().trim()).append(" ORG:")
                                        .append(entidad.getOrganizacion().trim()).append(" END:VCARD")
                                        .toString();
                                entidadVO.setTexto(textoEnt);
                                listaEntidades.add(entidadVO);
                            } else
                                errorEmail = true;
                        } else {
                            textoEnt = new StringBuffer("BEGIN:VCARD VERSION:3.0 FN:")
                                    .append(entidad.getNombre().trim()).append(" EMAIL;TYPE=INTERNET:")
                                    .append(entidad.getCorreo().trim()).append(" ORG:")
                                    .append(entidad.getOrganizacion().trim()).append(" END:VCARD").toString();
                            entidadVO.setTexto(textoEnt);
                            listaEntidades.add(entidadVO);
                        }
                    }
                }
                if (listaEntidades.size() == 0)
                    entidadesVO = null;
                else
                    entidadesVO = (EntidadVO[]) listaEntidades.toArray(new EntidadVO[listaEntidades.size()]);
                contribucionVO.setEntidades(entidadesVO);
                /**********************************************/

                //aado contribucionVO si tiene algo
                if (contribucionVO.getEntidades() != null || contribucionVO.getFecha() != null
                        || contribucionVO.getTipo() != null)
                    listaContribuciones.add(contribucionVO);
                //contribucionesVO[k]=contribucionVO;
            }
            if (listaContribuciones.size() == 0)
                contribucionesVO = null;
            else
                contribucionesVO = (ContribucionVO[]) listaContribuciones
                        .toArray(new ContribucionVO[listaContribuciones.size()]);
        } else {
            contribucionesVO = null;
        }
        auxAvanzado.getLifeCycle().setContribuciones(contribucionesVO);

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new java.lang.Exception("ciclo.de.vida", ad);
    } catch (Exception e) {
        logger.error("Error categoria ciclodevida, metodo guardarMetadatos " + e);
        throw new java.lang.Exception("ciclo.de.vida", e);
    }

    if (!errorFaltaIdioma && !errorFaltaTexto && !errorFechaObli && !errorFechaObliHorMin
            && !errorFechaZonaHoraria && !errorFechaComboZH && !errorEmail && !errorNoNumero
            && !errorFechaFueraRango && !errorZHFueraRango && !errorFormatoFecha) {
        //         Cargamos el objeto de sesion
        if (catalogadorAvSession.getMDSesion() == null) {
            catalogadorAvSession.setMDSesion(auxAvanzado);

        } else {
            if (versionVO == null && estatusSV == null && contribucionesVO == null)
                catalogadorAvSession.getMDSesion().setLifeCycle(null);
            else {
                catalogadorAvSession.getMDSesion().setLifeCycle(auxAvanzado.getLifeCycle());
            }
        }

    } else {
        if (errorFormatoFecha)
            throw new ValidatorException("{error.FormatoFecha}");
        else if (errorNoNumero)
            throw new ValidatorException("{error.NoNumero}");
        else if (errorFechaFueraRango)
            throw new ValidatorException("{error.fechaFueraRango}");
        else if (errorFechaObli)
            throw new ValidatorException("{error.fechaIncompleta}");
        else if (errorFechaObliHorMin)
            throw new ValidatorException("{error.fechaIncompletaHorMin}");
        else if (errorFechaZonaHoraria)
            throw new ValidatorException("{error.fechaIncompletaZonaHora}");
        else if (errorFechaComboZH)
            throw new ValidatorException("{error.fechaSelecionaCombo}");
        else if (errorZHFueraRango)
            throw new ValidatorException("{error.ZonaHoraria}");
        else if (errorEmail)
            throw new ValidatorException("{error.email}");
        else if (errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma_texto}");
        else if (!errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.texto}");
        else
            throw new ValidatorException("{general.error.idioma}");

    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.metametadatos.MetametadatosControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.metametadatos.MetametadatosController#guardarMetadatos(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.metametadatos.GuardarMetadatosForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 *///from w w w  .ja  va 2 s.co  m
public final void guardarMetadatos(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.metametadatos.GuardarMetadatosForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorFechaObli = false;
    boolean errorFechaObliHorMin = false;
    boolean errorFechaZonaHoraria = false;
    boolean errorFechaComboZH = false;
    boolean errorFecha = false;
    boolean errorEmail = false;
    boolean errorNoNumero = false;
    boolean errorZHFueraRango = false;
    boolean errorFechaFueraRango = false;
    boolean errorFormatoFecha = false;

    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    LomAvanzadoVO auxAvanzado = null;
    ContribucionVO[] contribucionesVO = null;
    IdiomaVO idiomaVO = null;

    try {
        auxAvanzado = new LomAvanzadoVO();

        AvMetametadataVO metadatos = new AvMetametadataVO();
        auxAvanzado.setMetaMetadata(metadatos);

        String source = AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos");
        String usuario = LdapUserDetailsUtils.getUsuario();
        //String usuario="empaquetador";
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(this.getCatalogadorAvSession(request).getIdioma());
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        //metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);

        Object valor = request.getSession().getAttribute("form");

        //Obtenemos la longitudes de los VOs, que pasamos a cambioFormulario para que se obtengan del request los cambios que hemos hecho
        //Pues en el form que nos viene como parametro no los guarda.

        int longitudIdentificadores = 0;
        int longitudEsquemas = 0;
        int longitudDescripciones = 0;
        int longitudContribuciones = 0;
        int[] longitudTextosDesc = new int[0];
        int[] longitudEntidadesContrib = new int[0];
        if (valor instanceof MetaMetadatosFormImpl) {

            MetaMetadatosFormImpl valorMeta = ((MetaMetadatosFormImpl) valor);

            Object[] desc = valorMeta.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorMeta.getContribucion().size()];
            for (int i = 0; i < valorMeta.getContribucion().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorMeta.getContribucionAsArray()[i]))
                        .getEntidades().length;
            }

            longitudIdentificadores = valorMeta.getIdentificadoresAsArray().length;
            longitudEsquemas = valorMeta.getEsquemasMetaAsArray().length;
            longitudContribuciones = valorMeta.getContribucion().size();
            longitudDescripciones = desc.length;

        } else if (valor instanceof MetaMetadatosFormSubmitFormImpl) {
            MetaMetadatosFormSubmitFormImpl valorMeta = ((MetaMetadatosFormSubmitFormImpl) valor);
            Object[] desc = valorMeta.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorMeta.getContribucion().size()];
            for (int i = 0; i < valorMeta.getContribucion().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorMeta.getContribucionAsArray()[i]))
                        .getEntidades().length;
            }

            longitudIdentificadores = valorMeta.getIdentificadoresAsArray().length;
            longitudEsquemas = valorMeta.getEsquemasMetaAsArray().length;
            longitudContribuciones = valorMeta.getContribucion().size();
            longitudDescripciones = desc.length;
        } else if (valor instanceof MetadatosNoValidoVolverFormImpl) {
            MetadatosNoValidoVolverFormImpl valorMeta = ((MetadatosNoValidoVolverFormImpl) valor);
            Object[] desc = valorMeta.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorMeta.getContribucion().size()];
            for (int i = 0; i < valorMeta.getContribucion().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorMeta.getContribucionAsArray()[i]))
                        .getEntidades().length;
            }

            longitudIdentificadores = valorMeta.getIdentificadoresAsArray().length;
            longitudEsquemas = valorMeta.getEsquemasMetaAsArray().length;
            longitudContribuciones = valorMeta.getContribucion().size();
            longitudDescripciones = desc.length;
        } else if (valor instanceof MetadatosValidoVolverFormImpl) {
            MetadatosValidoVolverFormImpl valorMeta = ((MetadatosValidoVolverFormImpl) valor);
            Object[] desc = valorMeta.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }

            longitudEntidadesContrib = new int[valorMeta.getContribucion().size()];
            for (int i = 0; i < valorMeta.getContribucion().size(); i++) {
                longitudEntidadesContrib[i] = ((Contribucion) (valorMeta.getContribucionAsArray()[i]))
                        .getEntidades().length;
            }

            longitudIdentificadores = valorMeta.getIdentificadoresAsArray().length;
            longitudEsquemas = valorMeta.getEsquemasMetaAsArray().length;
            longitudContribuciones = valorMeta.getContribucion().size();
            longitudDescripciones = desc.length;
        }

        //Recogemos los cambio del request mediante parametro
        cambioFormulario(request, longitudIdentificadores, longitudEsquemas, longitudDescripciones,
                longitudContribuciones, longitudTextosDesc, longitudEntidadesContrib);

        //Guardamos los cambios en el form obtenido de request.getSession.getAttribute("form") para que en caso de faltar
        //algun idioma o texto sin rellenar cargue el formulario con lo cambio y no perdamos todo lo modificado hasta ese
        //momento, si no lo hicieramos cargara el formulario anterior. 

        //DESCRIPCIONES fecha
        DescripcionVO[] descripcionesAux = new DescripcionVO[descripciones.length];
        for (int i = 0; i < descripciones.length; i++) {
            DescripcionVO descripAux = new DescripcionVO();
            LangStringVO[] langDescrip = descripciones[i].getTextos();
            LangStringVO[] langDescripAux = new LangStringVO[langDescrip.length];
            for (int j = 0; j < langDescrip.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langDescrip[j].getIdioma());
                nuevoLang.setTexto(langDescrip[j].getTexto());
                langDescripAux[j] = nuevoLang;
            }
            descripAux.setTextos(langDescripAux);
            descripcionesAux[i] = descripAux;
        }

        //CONTRIBUCIONES
        Contribucion[] contribucionesAux = new Contribucion[contribuciones.length];
        for (int i = 0; i < contribuciones.length; i++) {
            Contribucion contribucionAux = new Contribucion();
            //rol
            SourceValueVO rolAux = new SourceValueVO();
            rolAux.setValor(contribuciones[i].getRol().getValor());
            //entidad
            Entidad[] entidades = contribuciones[i].getEntidades();
            Entidad[] entidadesAux = new Entidad[entidades.length];
            for (int j = 0; j < entidadesAux.length; j++) {
                Entidad entidad = new Entidad();
                entidad.setCorreo(entidades[j].getCorreo());
                entidad.setNombre(entidades[j].getNombre());
                entidad.setOrganizacion(entidades[j].getOrganizacion());
                entidadesAux[j] = entidad;
            }
            //fecha
            Fecha fechaAux = contribuciones[i].getFecha();

            //contribucion
            contribucionAux.setRol(rolAux);
            contribucionAux.setEntidades(entidadesAux);
            contribucionAux.setFecha(fechaAux);
            contribucionesAux[i] = contribucionAux;
        }

        //IDENTIFICADORES
        IdentificadorVO[] identificadoresAux = new IdentificadorVO[identificadores.length];
        for (int i = 0; i < identificadores.length; i++) {
            IdentificadorVO auxIdentificador = new IdentificadorVO();
            auxIdentificador.setCatalogo(identificadores[i].getCatalogo());
            auxIdentificador.setEntrada(identificadores[i].getEntrada());
            identificadoresAux[i] = auxIdentificador;
        }
        //ESQUEMAS
        EsquemaDeMetadatosVO[] esquemasMetaAux = new EsquemaDeMetadatosVO[esquemasMeta.length];
        for (int i = 0; i < esquemasMeta.length; i++) {
            EsquemaDeMetadatosVO auxEsquema = new EsquemaDeMetadatosVO();
            auxEsquema.setTexto(esquemasMeta[i].getTexto());
            esquemasMetaAux[i] = auxEsquema;
        }

        if (valor instanceof MetaMetadatosFormImpl) {
            MetaMetadatosFormImpl formulario = (MetaMetadatosFormImpl) valor;
            formulario.setIdentificadoresAsArray(identificadoresAux);
            formulario.setEsquemasMetaAsArray(esquemasMetaAux);
            formulario.setContribucionAsArray(contribucionesAux);
            formulario.setDescripcionesAsArray(descripcionesAux);

        } else if (valor instanceof MetaMetadatosFormSubmitFormImpl) {
            MetaMetadatosFormSubmitFormImpl formulario = (MetaMetadatosFormSubmitFormImpl) valor;
            formulario.setIdentificadoresAsArray(identificadoresAux);
            formulario.setEsquemasMetaAsArray(esquemasMetaAux);
            formulario.setContribucionAsArray(contribucionesAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
        } else if (valor instanceof MetadatosNoValidoVolverFormImpl) {
            MetadatosNoValidoVolverFormImpl formulario = (MetadatosNoValidoVolverFormImpl) valor;
            formulario.setIdentificadoresAsArray(identificadoresAux);
            formulario.setEsquemasMetaAsArray(esquemasMetaAux);
            formulario.setContribucionAsArray(contribucionesAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
        } else if (valor instanceof MetadatosValidoVolverFormImpl) {
            MetadatosValidoVolverFormImpl formulario = (MetadatosValidoVolverFormImpl) valor;
            formulario.setIdentificadoresAsArray(identificadoresAux);
            formulario.setEsquemasMetaAsArray(esquemasMetaAux);
            formulario.setContribucionAsArray(contribucionesAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
        }

        idioma = form.getComboIdiomaMeta();

        //Obtnemos los terminos de los ids seleccionados en todos los combos, y los guarda en los VO 
        dameTerminoId();

        //Comprobamos si los campos ha sido rellenados adecuadamente

        //IDENTIFICADORES       
        if (identificadores != null && identificadores.length != 0) {
            ArrayList lista = new ArrayList();
            for (int j = 0; j < identificadores.length; j++) {
                IdentificadorVO ident = (IdentificadorVO) identificadores[j];

                if (ident != null) {
                    IdentificadorVO identAux = new IdentificadorVO();
                    String catalogo = ident.getCatalogo();
                    String entrada = ident.getEntrada();
                    if (((catalogo != null) && (!catalogo.trim().equals("")))
                            || ((entrada != null) && (!entrada.trim().equals("")))) {
                        identAux.setCatalogo(catalogo.trim());
                        identAux.setEntrada(entrada.trim());
                        lista.add(identAux);
                    }
                }
            }
            identificadores = (IdentificadorVO[]) lista.toArray(new IdentificadorVO[lista.size()]);
            if (identificadores.length == 0)
                identificadores = null;
        } else
            identificadores = null;

        auxAvanzado.getMetaMetadata().setIdentificadores(identificadores);

        //ESQUEMAS       
        if (esquemasMeta != null && esquemasMeta.length != 0) {
            ArrayList lista = new ArrayList();
            for (int j = 0; j < esquemasMeta.length; j++) {
                EsquemaDeMetadatosVO esq = (EsquemaDeMetadatosVO) esquemasMeta[j];

                if (esq != null) {
                    EsquemaDeMetadatosVO esqAux = new EsquemaDeMetadatosVO();
                    String texto = esq.getTexto();
                    if (((texto != null) && (!texto.trim().equals("")))) {
                        esqAux.setTexto(texto.trim());
                        lista.add(esqAux);
                    }
                }
            }
            esquemasMeta = (EsquemaDeMetadatosVO[]) lista.toArray(new EsquemaDeMetadatosVO[lista.size()]);
            if (esquemasMeta.length == 0)
                esquemasMeta = null;
        } else
            esquemasMeta = null;

        auxAvanzado.getMetaMetadata().setEsquemas(esquemasMeta);

        //IDIOMA
        idiomaVO = new IdiomaVO();
        if ((idioma != null) && (!idioma.equals(""))) {
            idiomaVO.setTexto(idioma);
        } else {
            idiomaVO = null;
        }
        auxAvanzado.getMetaMetadata().setIdioma(idiomaVO);

        //CONTRIBUCIONES
        contribucionesVO = null;
        if (contribuciones != null && contribuciones.length != 0) {
            contribucionesVO = new ContribucionVO[contribuciones.length];
            ArrayList listaContribuciones = new ArrayList();
            for (int k = 0; k < contribuciones.length; k++) {
                ContribucionVO contribucionVO = new ContribucionVO();
                //FECHA
                FechaVO fechaVO = new FechaVO();
                //Descripciones
                /**********************************************/
                if (descripciones != null && descripciones.length != 0) {
                    if (descripciones[k] != null) {
                        ArrayList listDesc = new ArrayList();
                        DescripcionVO lDesc = (DescripcionVO) (descripciones[k]);
                        DescripcionVO lDescripciones = new DescripcionVO();
                        for (int j = 0; j < lDesc.getTextos().length; j++) {
                            LangStringVO lang = lDesc.getTextos()[j];
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto();
                            if (((idioma != null) && (!idioma.trim().equals("")))
                                    && ((texto != null) && (!texto.trim().equals("")))) {
                                lLang.setIdioma(idioma.trim());
                                lLang.setTexto(texto.trim());
                                listDesc.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.trim().equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.trim().equals(""))
                                    errorFaltaTexto = true;
                            }
                        }

                        if (listDesc.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listDesc
                                    .toArray(new LangStringVO[listDesc.size()]);
                            lDescripciones.setTextos(langs);
                            fechaVO.setDescripcion(lDescripciones);
                        } else {//meter una vacia???   
                            fechaVO.setDescripcion(null);
                        }
                    }

                }
                /**********************************************/
                //fecha
                /**********************************************/
                // es obl al menos yyyy-MM-dd

                Fecha fechaAux = contribuciones[k].getFecha();
                Integer[] errores = fechaAux.validar();
                if (errores.length > 0) {
                    for (int i = 0; i < errores.length; i++) {
                        if (errores[i].equals(Fecha.ErrorNoNumero) && !errorNoNumero)
                            errorNoNumero = true;
                        else if (errores[i].equals(Fecha.ErrorFechaFueraRango) && !errorFechaFueraRango)
                            errorFechaFueraRango = true;
                        else if (errores[i].equals(Fecha.ErrorZHFueraRango) && !errorZHFueraRango)
                            errorZHFueraRango = true;
                        else if (errores[i].equals(Fecha.ErrorFechaComboZH) && !errorFechaComboZH)
                            errorFechaComboZH = true;
                        else if (errores[i].equals(Fecha.ErrorFechaZonaHoraria) && !errorFechaZonaHoraria)
                            errorFechaZonaHoraria = true;
                        else if (errores[i].equals(Fecha.ErrorFechaObliHorMin) && !errorFechaObliHorMin)
                            errorFechaObliHorMin = true;
                        else if (errores[i].equals(Fecha.ErrorFechaObli) && !errorFechaObli)
                            errorFechaObli = true;
                        else if (errores[i].equals(Fecha.ErrorFormatoFecha) && !errorFormatoFecha)
                            errorFormatoFecha = true;
                    }
                }

                if (errores.length == 0) {
                    fechaVO.setFecha(fechaAux.getFechaLomes());
                } else {
                    fechaVO.setFecha(null);
                }

                if (fechaVO.getDescripcion() == null && fechaVO.getFecha() == null)
                    fechaVO = null;

                contribucionVO.setFecha(fechaVO);

                /**********************************************/
                //rol   
                /**********************************************/
                SourceValueVO rolVO = new SourceValueVO();
                String rol = contribuciones[k].getRol().getValor();
                if ((rol != null) && (!rol.equals(""))) {
                    rolVO.setSource(source);
                    rolVO.setValor(rol);
                } else {
                    rolVO = null;
                }
                contribucionVO.setTipo(rolVO);
                /**********************************************/
                //entidad
                /**********************************************/
                EntidadVO[] entidadesVO = null;
                Entidad[] entidades = contribuciones[k].getEntidades();
                ArrayList listaEntidades = new ArrayList();
                for (int i = 0; i < entidades.length; i++) {
                    Entidad entidad = entidades[i];
                    EntidadVO entidadVO = new EntidadVO();
                    String textoEnt = "";
                    if (!entidad.getOrganizacion().trim().equals("") || !entidad.getCorreo().trim().equals("")
                            || !entidad.getNombre().trim().equals("")) {
                        if (!entidad.getCorreo().trim().equals("")) {
                            if (validaEmail(entidad.getCorreo())) {
                                textoEnt = new StringBuffer("BEGIN:VCARD VERSION:3.0 FN:")
                                        .append(entidad.getNombre().trim()).append(" EMAIL;TYPE=INTERNET:")
                                        .append(entidad.getCorreo().trim()).append(" ORG:")
                                        .append(entidad.getOrganizacion().trim()).append(" END:VCARD")
                                        .toString();
                                entidadVO.setTexto(textoEnt);
                                listaEntidades.add(entidadVO);
                            } else
                                errorEmail = true;
                        } else {
                            textoEnt = new StringBuffer("BEGIN:VCARD VERSION:3.0 FN:")
                                    .append(entidad.getNombre().trim()).append(" EMAIL;TYPE=INTERNET:")
                                    .append(entidad.getCorreo().trim()).append(" ORG:")
                                    .append(entidad.getOrganizacion().trim()).append(" END:VCARD").toString();
                            entidadVO.setTexto(textoEnt);
                            listaEntidades.add(entidadVO);
                        }
                    }
                }
                if (listaEntidades.size() == 0)
                    entidadesVO = null;
                else
                    entidadesVO = (EntidadVO[]) listaEntidades.toArray(new EntidadVO[listaEntidades.size()]);
                contribucionVO.setEntidades(entidadesVO);
                /**********************************************/

                //aado contribucionVO si tiene algo
                if (contribucionVO.getEntidades() != null || contribucionVO.getFecha() != null
                        || contribucionVO.getTipo() != null)
                    listaContribuciones.add(contribucionVO);
                //contribucionesVO[k]=contribucionVO;
            }
            if (listaContribuciones.size() == 0)
                contribucionesVO = null;
            else
                contribucionesVO = (ContribucionVO[]) listaContribuciones
                        .toArray(new ContribucionVO[listaContribuciones.size()]);
        } else {
            contribucionesVO = null;
        }
        auxAvanzado.getMetaMetadata().setContribuciones(contribucionesVO);

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new Exception("ver.metadatos", ad);
    } catch (Exception e) {
        logger.error("Error en catalogadorWeb verMetadatos, metodo guardarMetametadatos " + e);
        throw new Exception("ver.metadatos", e);
    }

    if (!errorFaltaIdioma && !errorFaltaTexto && !errorFechaObli && !errorFechaObliHorMin
            && !errorFechaZonaHoraria && !errorFechaComboZH && !errorEmail && !errorNoNumero
            && !errorFechaFueraRango && !errorZHFueraRango && !errorFormatoFecha) {
        try {
            // Cargamos el objeto de sesion
            if (catalogadorAvSession.getMDSesion() == null) {
                catalogadorAvSession.setMDSesion(auxAvanzado);
            } else {

                if (contribucionesVO == null && esquemasMeta == null && identificadores == null
                        && idiomaVO == null)
                    catalogadorAvSession.getMDSesion().setMetaMetadata(null);
                else
                    catalogadorAvSession.getMDSesion().setMetaMetadata(auxAvanzado.getMetaMetadata());
            }
        } catch (Exception e) {
            logger.error("Error en catalogadorWeb verMetadatos, metodo guardarMetametadatos " + e);
            throw new Exception("ver.metadatos", e);
        }

    } else {
        if (errorFormatoFecha)
            throw new ValidatorException("{error.FormatoFecha}");
        else if (errorNoNumero)
            throw new ValidatorException("{error.NoNumero}");
        else if (errorFechaFueraRango)
            throw new ValidatorException("{error.fechaFueraRango}");
        else if (errorFechaObli)
            throw new ValidatorException("{error.fechaIncompleta}");
        else if (errorFechaObliHorMin)
            throw new ValidatorException("{error.fechaIncompletaHorMin}");
        else if (errorFechaZonaHoraria)
            throw new ValidatorException("{error.fechaIncompletaZonaHora}");
        else if (errorFechaComboZH)
            throw new ValidatorException("{error.fechaSelecionaCombo}");
        else if (errorZHFueraRango)
            throw new ValidatorException("{error.ZonaHoraria}");
        else if (errorEmail)
            throw new ValidatorException("{error.email}");
        else if (errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma_texto}");
        else if (!errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.texto}");
        else
            throw new ValidatorException("{general.error.idioma}");

    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.general.GeneralControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.general.GeneralController#guardarGeneral(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.general.GuardarGeneralForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */// w  w w.j a v  a  2s .  c o m
public final void guardarGeneral(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.general.GuardarGeneralForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorFaltaUnTitulo = false;
    InputStream is = null;
    Properties prop = new Properties();
    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    LomAvanzadoVO auxAvanzado = null;
    TituloVO tituloVO = null;
    SourceValueVO nivel = null;
    SourceValueVO estructuraSV = null;

    try {

        auxAvanzado = new LomAvanzadoVO();

        AvGeneralVO general = new AvGeneralVO();
        auxAvanzado.setGeneral(general);

        is = this.getClass().getResourceAsStream("/catalogadorAvanzado.properties");
        prop.load(is);
        String source = AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos");
        ;
        String idiomaLdap = ((Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE))
                .getLanguage();
        //String idiomaLdap="es";
        String usuario = LdapUserDetailsUtils.getUsuario();
        //String usuario="empaquetador";
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(idiomaLdap);
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        //          metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);

        Object valor = request.getSession().getAttribute("form");

        //Obtenemos la longitudes de los VOs, que pasamos a cambioFormulario para que se obtengan del request los cambios que hemos hecho
        //Pues en el form que nos viene como parametro no los guarda.
        int longitudDescripciones = 0;
        int longitudPalabrasClave = 0;
        int longitudAmbitos = 0;
        int longitudIdentificadores = 0;
        int longitudIdiomas = 0;
        int longitudTitulo = 0;
        int[] longitudTextosDesc = new int[0];
        int[] longitudTextosPCla = new int[0];
        int[] longitudTextosAmbitos = new int[0];
        Object[] desc = null;
        Object[] pCla = null;
        Object[] amb = null;

        if (valor instanceof GeneralFormImpl) {
            GeneralFormImpl valorGen = ((GeneralFormImpl) valor);
            desc = valorGen.getDescripcionesAsArray();
            pCla = valorGen.getPalabrasClaveAsArray();
            amb = valorGen.getAmbitosAsArray();
            longitudPalabrasClave = valorGen.getPalabrasClaveAsArray() != null
                    ? valorGen.getPalabrasClaveAsArray().length
                    : 0;
            longitudAmbitos = valorGen.getAmbitosAsArray() != null ? valorGen.getAmbitosAsArray().length : 0;
            longitudIdentificadores = valorGen.getIdentificadoresAsArray() != null
                    ? valorGen.getIdentificadoresAsArray().length
                    : 0;
            longitudIdiomas = valorGen.getIdiomasAsArray() != null ? valorGen.getIdiomasAsArray().length : 0;
            longitudTitulo = (((TituloVO[]) valorGen.getTitulosAsArray())[0]) != null
                    ? (((TituloVO[]) valorGen.getTitulosAsArray())[0]).getTextos().length
                    : 0;
        } else if (valor instanceof GeneralFormSubmitFormImpl) {
            GeneralFormSubmitFormImpl valorGen = ((GeneralFormSubmitFormImpl) valor);
            desc = valorGen.getDescripcionesAsArray();
            pCla = valorGen.getPalabrasClaveAsArray();
            amb = valorGen.getAmbitosAsArray();
            longitudPalabrasClave = valorGen.getPalabrasClaveAsArray() != null
                    ? valorGen.getPalabrasClaveAsArray().length
                    : 0;
            longitudAmbitos = valorGen.getAmbitosAsArray() != null ? valorGen.getAmbitosAsArray().length : 0;
            longitudIdentificadores = valorGen.getIdentificadoresAsArray() != null
                    ? valorGen.getIdentificadoresAsArray().length
                    : 0;
            longitudIdiomas = valorGen.getIdiomasAsArray() != null ? valorGen.getIdiomasAsArray().length : 0;
            longitudTitulo = (((TituloVO[]) valorGen.getTitulosAsArray())[0]) != null
                    ? (((TituloVO[]) valorGen.getTitulosAsArray())[0]).getTextos().length
                    : 0;

        } else if (valor instanceof ValidoGeneralVolverFormImpl) {
            ValidoGeneralVolverFormImpl valorGen = ((ValidoGeneralVolverFormImpl) valor);
            desc = valorGen.getDescripcionesAsArray();
            pCla = valorGen.getPalabrasClaveAsArray();
            amb = valorGen.getAmbitosAsArray();
            longitudPalabrasClave = valorGen.getPalabrasClaveAsArray() != null
                    ? valorGen.getPalabrasClaveAsArray().length
                    : 0;
            longitudAmbitos = valorGen.getAmbitosAsArray() != null ? valorGen.getAmbitosAsArray().length : 0;
            longitudIdentificadores = valorGen.getIdentificadoresAsArray() != null
                    ? valorGen.getIdentificadoresAsArray().length
                    : 0;
            longitudIdiomas = valorGen.getIdiomasAsArray() != null ? valorGen.getIdiomasAsArray().length : 0;
            longitudTitulo = (((TituloVO[]) valorGen.getTitulosAsArray())[0]) != null
                    ? (((TituloVO[]) valorGen.getTitulosAsArray())[0]).getTextos().length
                    : 0;

        } else if (valor instanceof NoValidoGeneralVolverFormImpl) {
            NoValidoGeneralVolverFormImpl valorGen = ((NoValidoGeneralVolverFormImpl) valor);
            desc = valorGen.getDescripcionesAsArray();
            pCla = valorGen.getPalabrasClaveAsArray();
            amb = valorGen.getAmbitosAsArray();
            longitudPalabrasClave = valorGen.getPalabrasClaveAsArray() != null
                    ? valorGen.getPalabrasClaveAsArray().length
                    : 0;
            longitudAmbitos = valorGen.getAmbitosAsArray() != null ? valorGen.getAmbitosAsArray().length : 0;
            longitudIdentificadores = valorGen.getIdentificadoresAsArray() != null
                    ? valorGen.getIdentificadoresAsArray().length
                    : 0;
            longitudIdiomas = valorGen.getIdiomasAsArray() != null ? valorGen.getIdiomasAsArray().length : 0;
            longitudTitulo = (((TituloVO[]) valorGen.getTitulosAsArray())[0]) != null
                    ? (((TituloVO[]) valorGen.getTitulosAsArray())[0]).getTextos().length
                    : 0;

        }

        longitudTextosDesc = new int[desc.length];
        for (int i = 0; i < desc.length; i++) {
            longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
        }
        longitudTextosPCla = new int[pCla.length];
        for (int i = 0; i < pCla.length; i++) {
            longitudTextosPCla[i] = ((PalabraClaveVO) pCla[i]).getTextos().length;
        }
        longitudTextosAmbitos = new int[amb.length];
        for (int i = 0; i < amb.length; i++) {
            longitudTextosAmbitos[i] = ((AmbitoVO) amb[i]).getTextos().length;
        }
        longitudDescripciones = desc.length;

        //Recogemos los cambio del request mediante parametros
        cambioFormulario(request, longitudTextosDesc, longitudTextosPCla, longitudTextosAmbitos,
                longitudDescripciones, longitudPalabrasClave, longitudAmbitos, longitudIdentificadores,
                longitudIdiomas, longitudTitulo);

        //Guardamos los cambios en el form obtenido de request.getSession.getAttribute("form") para que en caso de faltar
        //algun idioma o texto sin rellenar cargue el formulario con lo cambio y no perdamos todo lo modificado hasta ese
        //momento, si no lo hicieramos cargara el formulario anterior. (Nivel de Agregacion y Estructura si mantienen los
        //cambios)

        //IDENTIFICADORES
        IdentificadorVO[] identificadoresAux = new IdentificadorVO[identificadores.length];
        for (int i = 0; i < identificadores.length; i++) {
            IdentificadorVO auxIdentificador = new IdentificadorVO();
            auxIdentificador.setCatalogo(identificadores[i].getCatalogo().trim());
            auxIdentificador.setEntrada(identificadores[i].getEntrada().trim());
            identificadoresAux[i] = auxIdentificador;
        }

        //IDIOMAS
        IdiomaVO[] idiomasAux = new IdiomaVO[idiomas.length];
        for (int i = 0; i < idiomas.length; i++) {
            IdiomaVO auxIdioma = new IdiomaVO();
            auxIdioma.setTexto(idiomas[i].getTexto());
            idiomasAux[i] = auxIdioma;
        }

        //TITULOS
        TituloVO[] titulosAux = new TituloVO[1];
        LangStringVO[] langTitAux = new LangStringVO[titulos[0].getTextos().length];
        for (int i = 0; i < titulos[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(titulos[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(titulos[0].getTextos()[i].getTexto().trim());
            langTitAux[i] = nuevoLang;
        }
        TituloVO titAux = new TituloVO();
        titAux.setTextos(langTitAux);
        titulosAux[0] = titAux;

        //DESCRIPCIONES
        DescripcionVO[] descripcionesAux = new DescripcionVO[descripciones.length];
        for (int i = 0; i < descripciones.length; i++) {
            DescripcionVO descripAux = new DescripcionVO();
            LangStringVO[] langDescrip = descripciones[i].getTextos();
            LangStringVO[] langDescripAux = new LangStringVO[langDescrip.length];
            for (int j = 0; j < langDescrip.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langDescrip[j].getIdioma());
                nuevoLang.setTexto(langDescrip[j].getTexto().trim());
                langDescripAux[j] = nuevoLang;
            }
            descripAux.setTextos(langDescripAux);
            descripcionesAux[i] = descripAux;
        }

        //PALABRAS CLAVE
        PalabraClaveVO[] palabrasClaveAux = new PalabraClaveVO[palabrasClave.length];
        for (int i = 0; i < palabrasClave.length; i++) {
            PalabraClaveVO pClaveAux = new PalabraClaveVO();
            LangStringVO[] langPClave = palabrasClave[i].getTextos();
            LangStringVO[] langPClaveAux = new LangStringVO[langPClave.length];
            for (int j = 0; j < langPClave.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langPClave[j].getIdioma());
                nuevoLang.setTexto(langPClave[j].getTexto().trim());
                langPClaveAux[j] = nuevoLang;
            }
            pClaveAux.setTextos(langPClaveAux);
            palabrasClaveAux[i] = pClaveAux;
        }

        //AMBITOS
        AmbitoVO[] ambitosAux = new AmbitoVO[ambitos.length];
        for (int i = 0; i < ambitos.length; i++) {
            AmbitoVO ambAux = new AmbitoVO();
            LangStringVO[] langAmbitos = ambitos[i].getTextos();
            LangStringVO[] langAmbitosAux = new LangStringVO[langAmbitos.length];
            for (int j = 0; j < langAmbitos.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langAmbitos[j].getIdioma());
                nuevoLang.setTexto(langAmbitos[j].getTexto().trim());
                langAmbitosAux[j] = nuevoLang;
            }
            ambAux.setTextos(langAmbitosAux);
            ambitosAux[i] = ambAux;
        }

        if (valor instanceof GeneralFormImpl) {
            ((GeneralFormImpl) valor).setIdiomasAsArray(idiomasAux);
            ((GeneralFormImpl) valor).setTitulosAsArray(titulosAux);
            ((GeneralFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((GeneralFormImpl) valor).setPalabrasClaveAsArray(palabrasClaveAux);
            ((GeneralFormImpl) valor).setAmbitosAsArray(ambitosAux);
        } else if (valor instanceof GeneralFormSubmitFormImpl) {
            ((GeneralFormSubmitFormImpl) valor).setIdiomasAsArray(idiomasAux);
            ((GeneralFormSubmitFormImpl) valor).setTitulosAsArray(titulosAux);
            ((GeneralFormSubmitFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((GeneralFormSubmitFormImpl) valor).setPalabrasClaveAsArray(palabrasClaveAux);
            ((GeneralFormSubmitFormImpl) valor).setAmbitosAsArray(ambitosAux);
        } else if (valor instanceof ValidoGeneralVolverFormImpl) {
            ((ValidoGeneralVolverFormImpl) valor).setIdiomasAsArray(idiomasAux);
            ((ValidoGeneralVolverFormImpl) valor).setTitulosAsArray(titulosAux);
            ((ValidoGeneralVolverFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((ValidoGeneralVolverFormImpl) valor).setPalabrasClaveAsArray(palabrasClaveAux);
            ((ValidoGeneralVolverFormImpl) valor).setAmbitosAsArray(ambitosAux);
        } else if (valor instanceof NoValidoGeneralVolverFormImpl) {
            ((NoValidoGeneralVolverFormImpl) valor).setIdiomasAsArray(idiomasAux);
            ((NoValidoGeneralVolverFormImpl) valor).setTitulosAsArray(titulosAux);
            ((NoValidoGeneralVolverFormImpl) valor).setDescripcionesAsArray(descripcionesAux);
            ((NoValidoGeneralVolverFormImpl) valor).setPalabrasClaveAsArray(palabrasClaveAux);
            ((NoValidoGeneralVolverFormImpl) valor).setAmbitosAsArray(ambitosAux);
        }

        estructura = form.getEstructura();
        nivelAgregacion = form.getNivelAgregacion();

        //Obtnemos los terminos de los ids seleccionados en todos los combos, y los guarda en los VO 
        dameTerminoId();

        //Comprobamos si los campos ha sido rellenados adecuadamente

        //IDENTIFICADORES       
        if (identificadores != null && identificadores.length != 0) {
            ArrayList lista = new ArrayList();
            for (int j = 0; j < identificadores.length; j++) {
                IdentificadorVO ident = (IdentificadorVO) identificadores[j];

                if (ident != null) {
                    IdentificadorVO identAux = new IdentificadorVO();
                    String catalogo = ident.getCatalogo().trim();
                    String entrada = ident.getEntrada().trim();
                    if (((catalogo != null) && (!catalogo.equals("")))
                            || ((entrada != null) && (!entrada.equals("")))) {
                        identAux.setCatalogo(catalogo);
                        identAux.setEntrada(entrada);
                        lista.add(identAux);
                    }
                }
            }
            identificadores = (IdentificadorVO[]) lista.toArray(new IdentificadorVO[lista.size()]);
            if (identificadores.length == 0)
                identificadores = null;
        } else
            identificadores = null;

        auxAvanzado.getGeneral().setIdentificadores(identificadores);

        //TITULOS
        tituloVO = new TituloVO();
        if (titulos != null && titulos.length != 0) {
            TituloVO titulo = (TituloVO) titulos[0];
            LangStringVO[] textos = titulo.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lTit = (LangStringVO) textos[j];

                if (lTit != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lTit.getIdioma();
                    String texto = lTit.getTexto().trim();

                    if (((idioma != null) && (!idioma.equals("")))
                            && ((texto != null) && (!texto.equals("")))) {
                        lLang.setIdioma(idioma);
                        lLang.setTexto(texto);
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.equals(""))
                            errorFaltaTexto = true;
                    }
                }

            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0) {
                tituloVO = null;
                errorFaltaUnTitulo = true;
            } else
                tituloVO.setTextos(lLangS);
        } else {
            tituloVO = null;
            errorFaltaUnTitulo = true;
        }

        auxAvanzado.getGeneral().setTitulo(tituloVO);

        //IDIOMAS
        ArrayList lTextos = new ArrayList();
        //if(!((idiomas.length == 1) && (idiomas[0].getTexto().equals("")))){
        if (idiomas != null && !((idiomas.length == 1) && (idiomas[0].getTexto().equals("")))) {
            for (int i = 0; i < idiomas.length; i++) {
                if (idiomas[i] != null) {
                    IdiomaVO idiomaVO = new IdiomaVO();
                    IdiomaVO idiVO = (IdiomaVO) (idiomas[i]);
                    if ((idiVO.getTexto() != null) && (!idiVO.getTexto().equals(""))) {
                        idiomaVO.setTexto(idiVO.getTexto());
                        lTextos.add(idiomaVO);
                    }
                } else
                    idiomas = null;
            }
            idiomas = (IdiomaVO[]) lTextos.toArray(new IdiomaVO[lTextos.size()]);
            if (idiomas.length == 0)
                idiomas = null;
        } else {
            idiomas = null;
        }

        auxAvanzado.getGeneral().setIdiomas(idiomas);

        //DESCRIPCIONES
        ArrayList listaDesc = new ArrayList();
        if (descripciones != null && descripciones.length != 0) {
            LangStringVO[] textos = descripciones[0].getTextos();
            if (descripciones.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().equals("")) {
                descripciones = null;
            } else {
                for (int i = 0; i < descripciones.length; i++) {
                    if (descripciones[i] != null) {
                        ArrayList listDesc = new ArrayList();
                        DescripcionVO lDesc = (DescripcionVO) (descripciones[i]);
                        DescripcionVO lDescripciones = new DescripcionVO();
                        for (int j = 0; j < lDesc.getTextos().length; j++) {
                            LangStringVO lang = lDesc.getTextos()[j];
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto().trim();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto);
                                listDesc.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;
                            }
                        }
                        if (listDesc.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listDesc
                                    .toArray(new LangStringVO[listDesc.size()]);
                            lDescripciones.setTextos(langs);
                            listaDesc.add(lDescripciones);
                        }
                    }
                }
                if (listaDesc.size() == 0)
                    descripciones = null;
                else
                    descripciones = (DescripcionVO[]) listaDesc.toArray(new DescripcionVO[listaDesc.size()]);
            }
        } else {
            descripciones = null;
        }
        auxAvanzado.getGeneral().setDescripciones(descripciones);

        //PALABRAS CLAVE
        ArrayList listaPalabras = null;
        if (palabrasClave != null && palabrasClave.length != 0) {
            LangStringVO[] textos = palabrasClave[0].getTextos();
            if (palabrasClave.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().equals("")) {
                palabrasClave = null;
            } else {
                listaPalabras = new ArrayList();
                for (int i = 0; i < palabrasClave.length; i++) {
                    if (palabrasClave[i] != null) {
                        ArrayList listPalabras = new ArrayList();
                        PalabraClaveVO lPalabras = (PalabraClaveVO) (palabrasClave[i]);
                        PalabraClaveVO lPalabrasClave = new PalabraClaveVO();
                        for (int j = 0; j < lPalabras.getTextos().length; j++) {
                            LangStringVO lang = (LangStringVO) (lPalabras.getTextos()[j]);
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto().trim();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto);
                                listPalabras.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;

                            }
                        }
                        if (listPalabras.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listPalabras
                                    .toArray(new LangStringVO[listPalabras.size()]);
                            lPalabrasClave.setTextos(langs);
                            listaPalabras.add(lPalabrasClave);
                        }
                    }
                }
                if (listaPalabras.size() == 0)
                    palabrasClave = null;
                else
                    palabrasClave = (PalabraClaveVO[]) listaPalabras
                            .toArray(new PalabraClaveVO[listaPalabras.size()]);
            }
        } else
            palabrasClave = null;

        auxAvanzado.getGeneral().setPalabrasClave(palabrasClave);

        //AMBITOS
        ArrayList listaAmbitos = null;
        if (ambitos != null && ambitos.length != 0) {
            LangStringVO[] textos = ambitos[0].getTextos();
            if (ambitos.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().equals("")) {
                ambitos = null;
            } else {
                listaAmbitos = new ArrayList();
                for (int i = 0; i < ambitos.length; i++) {
                    if (ambitos[i] != null) {
                        ArrayList listAmbito = new ArrayList();
                        AmbitoVO lAmbito = (AmbitoVO) (ambitos[i]);
                        AmbitoVO lAmb = new AmbitoVO();
                        for (int j = 0; j < lAmbito.getTextos().length; j++) {
                            LangStringVO lang = (LangStringVO) (lAmbito.getTextos()[j]);
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto().trim();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto);
                                listAmbito.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;

                            }
                        }
                        if (listAmbito.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listAmbito
                                    .toArray(new LangStringVO[listAmbito.size()]);
                            lAmb.setTextos(langs);
                            listaAmbitos.add(lAmb);
                        }
                    }
                }
                if (listaAmbitos.size() == 0)
                    ambitos = null;
                else
                    ambitos = (AmbitoVO[]) listaAmbitos.toArray(new AmbitoVO[listaAmbitos.size()]);
            }
        } else
            ambitos = null;

        auxAvanzado.getGeneral().setAmbitos(ambitos);

        //ESTRUCTURA
        estructuraSV = new SourceValueVO();
        if ((estructura != null) && (!estructura.equals(""))) {
            estructuraSV.setValor(estructura);
            estructuraSV.setSource(source);
        } else {
            estructuraSV = null;
        }
        auxAvanzado.getGeneral().setEstructura(estructuraSV);

        //NIVEL AGREGACION
        nivel = new SourceValueVO();
        if ((nivelAgregacion != null) && (!nivelAgregacion.equals(""))) {
            nivel.setSource(source);
            nivel.setValor(nivelAgregacion);
        } else {
            nivel = null;
        }
        auxAvanzado.getGeneral().setNivelAgregacion(nivel);

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new Exception("general", ad);
    } catch (Exception e) {
        logger.error("Error en Servicio de catalogacionWeb, categora General, mtodo guardarGeneral " + e);
        throw new Exception("general", e);
    }

    if (!errorFaltaIdioma && !errorFaltaTexto && !errorFaltaUnTitulo) {
        try {
            //         Cargamos el objeto de sesion
            if (catalogadorAvSession.getMDSesion() == null) {
                catalogadorAvSession.setMDSesion(auxAvanzado);

            } else {
                if (identificadores == null && idiomas == null && tituloVO == null
                        && descripciones == null & palabrasClave == null && ambitos == null && nivel == null
                        && estructuraSV == null)
                    catalogadorAvSession.getMDSesion().setGeneral(null);
                else
                    catalogadorAvSession.getMDSesion().setGeneral(auxAvanzado.getGeneral());

            }
        } catch (Exception e) {
            logger.error("Error en Servicio de catalogacionWeb, categora General, mtodo guardarGeneral " + e);
            throw new Exception("general", e);
        }

    } else {
        if (errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma_texto}");
        else if (!errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.texto}");
        else if (errorFaltaIdioma && !errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma}");
        else if (errorFaltaUnTitulo)
            throw new ValidatorException("{general.error.falta_titulo}");

    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.DetalleClasificacionControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.DetalleClasificacionController#guardarClasificacion(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.clasificacion.detalleClasificacion.GuardarClasificacionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 *///from  w  w  w  . j  a  v a 2 s .  co  m
public final void guardarClasificacion(ActionMapping mapping, GuardarClasificacionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorDatosEntidad = false;
    boolean errorFechaObli = false;

    boolean errorFuenteTexto = false;
    boolean errorFuenteIdioma = false;
    boolean errorTaxones = false;
    RutaTaxonomicaVO[] rutasT = null;
    InputStream is = null;
    Properties prop = new Properties();
    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    AvClassificationVO clasificacionG = null;

    try {
        is = this.getClass().getResourceAsStream("/catalogadorAvanzado.properties");
        prop.load(is);

        String idiomaLdap = ((Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE))
                .getLanguage();

        String usuario = LdapUserDetailsUtils.getUsuario();
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(idiomaLdap);
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        // metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);
        //Recoge los valores y los cambios en el formulario
        Object valor = request.getSession().getAttribute("form");
        //rellenamos los datos del formulario dependiendo del tipo de formulario que nos venga
        if (valor instanceof DetalleClasificacionFormImpl) {
            form.setComboIdiomaValueList(((DetalleClasificacionFormImpl) valor).getComboIdiomaValueList());
            form.setComboIdiomaLabelList(((DetalleClasificacionFormImpl) valor).getComboIdiomaLabelList());
            form.setDescripciones(((DetalleClasificacionFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((DetalleClasificacionFormImpl) valor).getPalabrasClave());
            form.setTituloClasificacion(((DetalleClasificacionFormImpl) valor).getTituloClasificacion());
            form.setRazonValueList(((DetalleClasificacionFormImpl) valor).getRazonValueList());
            form.setRazonLabelList(((DetalleClasificacionFormImpl) valor).getRazonLabelList());
            form.setRutaTaxonomica(((DetalleClasificacionFormImpl) valor).getRutaTaxonomica());
            form.setSourceValueList(((DetalleClasificacionFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((DetalleClasificacionFormImpl) valor).getSourceLabelList());
        } else if (valor instanceof DetalleClasificacionSubmitFormImpl) {
            form.setComboIdiomaValueList(
                    ((DetalleClasificacionSubmitFormImpl) valor).getComboIdiomaValueList());
            form.setComboIdiomaLabelList(
                    ((DetalleClasificacionSubmitFormImpl) valor).getComboIdiomaLabelList());
            form.setDescripciones(((DetalleClasificacionSubmitFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((DetalleClasificacionSubmitFormImpl) valor).getPalabrasClave());
            form.setTituloClasificacion(((DetalleClasificacionSubmitFormImpl) valor).getTituloClasificacion());
            form.setRazonValueList(((DetalleClasificacionSubmitFormImpl) valor).getRazonValueList());
            form.setRazonLabelList(((DetalleClasificacionSubmitFormImpl) valor).getRazonLabelList());
            form.setRutaTaxonomica(((DetalleClasificacionSubmitFormImpl) valor).getRutaTaxonomica());
            form.setSourceValueList(((DetalleClasificacionSubmitFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((DetalleClasificacionSubmitFormImpl) valor).getSourceLabelList());
        } else if (valor instanceof ClasificacionNoValidaVolverFormImpl) {
            form.setComboIdiomaLabelList(
                    ((ClasificacionNoValidaVolverFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(
                    ((ClasificacionNoValidaVolverFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((ClasificacionNoValidaVolverFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((ClasificacionNoValidaVolverFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((ClasificacionNoValidaVolverFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((ClasificacionNoValidaVolverFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((ClasificacionNoValidaVolverFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((ClasificacionNoValidaVolverFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((ClasificacionNoValidaVolverFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((ClasificacionNoValidaVolverFormImpl) valor).getSourceLabelList());
        } else if (valor instanceof ClasificacionValidaVolverFormImpl) {
            form.setComboIdiomaLabelList(((ClasificacionValidaVolverFormImpl) valor).getComboIdiomaLabelList());
            form.setComboIdiomaValueList(((ClasificacionValidaVolverFormImpl) valor).getComboIdiomaValueList());
            form.setDescripciones(((ClasificacionValidaVolverFormImpl) valor).getDescripciones());
            form.setPalabrasClave(((ClasificacionValidaVolverFormImpl) valor).getPalabrasClave());
            form.setRazonLabelList(((ClasificacionValidaVolverFormImpl) valor).getRazonLabelList());
            form.setRazonValueList(((ClasificacionValidaVolverFormImpl) valor).getRazonValueList());
            form.setRutaTaxonomica(((ClasificacionValidaVolverFormImpl) valor).getRutaTaxonomica());
            form.setTituloClasificacion(((ClasificacionValidaVolverFormImpl) valor).getTituloClasificacion());
            form.setSourceValueList(((ClasificacionValidaVolverFormImpl) valor).getSourceValueList());
            form.setSourceLabelList(((ClasificacionValidaVolverFormImpl) valor).getSourceLabelList());
        }

        int longitudTextosDesc = form.getDescripciones().size();
        int[] longitudTextosPCla = new int[form.getPalabrasClave().size()];
        for (int i = 0; i < form.getPalabrasClave().size(); i++) {
            longitudTextosPCla[i] = ((PalabraClaveVO) (form.getPalabrasClaveAsArray()[i])).getTextos().length;
        }
        int longitudPalabrasClave = form.getPalabrasClave().size();
        int longitudRutaTaxonomica = form.getRutaTaxonomica().size();
        int[] longiTextosFuente = new int[form.getRutaTaxonomica().size()];
        int[] longiTaxones = new int[form.getRutaTaxonomica().size()];
        if (form.getRutaTaxonomica() != null) {
            for (int i = 0; i < form.getRutaTaxonomica().size(); i++) {
                longiTextosFuente[i] = ((RutaTaxonomicaVO) (form.getRutaTaxonomicaAsArray()[i])).getFuente()
                        .getTextos().length;
                longiTaxones[i] = ((RutaTaxonomicaVO) (form.getRutaTaxonomicaAsArray()[i])).getTaxones().length;
            }
        }

        cambioFormulario(request, longitudTextosDesc, longitudTextosPCla, longitudPalabrasClave,
                longitudRutaTaxonomica, longiTextosFuente, longiTaxones, null);
        form.setRazon(razon);
        form.setRutaTaxonomicaAsArray(rutasTaxonomicas);
        form.setDescripcionesAsArray(descripcion.getTextos());
        form.setPalabrasClaveAsArray(palabrasClave);
        //MODIFICAMOS VALOR!!
        if (valor instanceof DetalleClasificacionFormImpl) {
            DetalleClasificacionFormImpl formulario = (DetalleClasificacionFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
        } else if (valor instanceof DetalleClasificacionSubmitFormImpl) {
            DetalleClasificacionSubmitFormImpl formulario = (DetalleClasificacionSubmitFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());

        } else if (valor instanceof ClasificacionNoValidaVolverFormImpl) {
            ClasificacionNoValidaVolverFormImpl formulario = (ClasificacionNoValidaVolverFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
        } else if (valor instanceof ClasificacionValidaVolverFormImpl) {
            ClasificacionValidaVolverFormImpl formulario = (ClasificacionValidaVolverFormImpl) valor;
            formulario.setComboIdiomaLabelList(form.getComboIdiomaLabelList());
            formulario.setComboIdiomaValueList(form.getComboIdiomaValueList());
            formulario.setDescripcionesAsArray(form.getDescripcionesAsArray());
            formulario.setPalabrasClaveAsArray(form.getPalabrasClaveAsArray());
            formulario.setTituloClasificacion(form.getTituloClasificacion());
            formulario.setRazonLabelList(form.getRazonLabelList());
            formulario.setRazonValueList(form.getRazonValueList());
            formulario.setRutaTaxonomica(form.getRutaTaxonomica());
            formulario.setSourceLabelList(form.getSourceLabelList());
            formulario.setSourceValueList(form.getSourceValueList());
        }

        ////////////////////////////////////////////////////////////////////////////
        //Hasta aqui tenemos recogidos todos los cambios del formulario que vams a guardar
        clasificacionG = new AvClassificationVO();
        clasificacionG.setRutasTaxonomicas(rutasTaxonomicas);
        //clasificacionG.setRutasTaxonomicas(rutasT);

        //Guardamos DESCRIPCIONES
        if (descripcion != null) {
            LangStringVO[] landDesc = descripcion.getTextos();
            ArrayList descAux = new ArrayList();
            for (int d = 0; d < landDesc.length; d++) {
                if (landDesc[d] != null) {
                    String textoDesc = landDesc[d].getTexto();
                    String idioDesc = landDesc[d].getIdioma();
                    if (((textoDesc != null) && (!textoDesc.equals("")))
                            && ((idioDesc != null) && (!idioDesc.equals("")))) {
                        LangStringVO lanDescAux = new LangStringVO();
                        lanDescAux.setTexto(textoDesc);
                        lanDescAux.setIdioma(idioDesc);
                        descAux.add(lanDescAux); //lo metemos en el array auxiliar
                    } else {//comprueba si alguno esta incompleto
                        if (idioDesc.equals("") && !textoDesc.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioDesc.equals("") && textoDesc.equals(""))
                            errorFaltaTexto = true;
                    }

                }
            }
            LangStringVO[] textos = null;
            if (descAux.size() > 0)
                textos = (LangStringVO[]) descAux.toArray(new LangStringVO[descAux.size()]);
            descripcion.setTextos(textos);
        }
        clasificacionG.setDescripcion(descripcion);

        //Guardamos PALABRAS CLAVE
        ArrayList listaPalabras = null;
        if (palabrasClave != null && palabrasClave.length != 0) {
            LangStringVO[] textos = palabrasClave[0].getTextos();
            if (palabrasClave.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().equals("")) {
                palabrasClave = null;
            } else {
                listaPalabras = new ArrayList();
                for (int i = 0; i < palabrasClave.length; i++) {
                    if (palabrasClave[i] != null) {
                        ArrayList listPalabras = new ArrayList();
                        PalabraClaveVO lPalabras = (PalabraClaveVO) (palabrasClave[i]);
                        PalabraClaveVO lPalabrasClave = new PalabraClaveVO();
                        for (int j = 0; j < lPalabras.getTextos().length; j++) {
                            LangStringVO lang = (LangStringVO) (lPalabras.getTextos()[j]);
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto);
                                listPalabras.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;

                            }
                        }
                        if (listPalabras.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listPalabras
                                    .toArray(new LangStringVO[listPalabras.size()]);
                            lPalabrasClave.setTextos(langs);
                            listaPalabras.add(lPalabrasClave);
                        }
                    }
                }
                if (listaPalabras.size() == 0)
                    palabrasClave = null;
                else
                    palabrasClave = (PalabraClaveVO[]) listaPalabras
                            .toArray(new PalabraClaveVO[listaPalabras.size()]);
            }
        } //fin inicio palabra clave
        else
            palabrasClave = null;
        clasificacionG.setPalabrasClave(palabrasClave);

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new java.lang.Exception("detalle.clasificacion", ad);
    } catch (Exception e) {
        logger.error("Error en catalogadorWeb, categoria DetalleClasificacion, metodo guardarMetadatos " + e);
        throw new java.lang.Exception("detalle.clasificacion", e);

    }
    //fin
    if (!errorFuenteTexto && !errorFuenteIdioma && !errorTaxones && !errorFaltaIdioma && !errorFaltaTexto) {
        try {
            //no hay errores y guardamos
            String titulo = "";
            titulo = form.getTituloClasificacion();
            if (titulo == null) {
                titulo = catalogadorAvSession.getTituloCategoria() != null
                        ? catalogadorAvSession.getTituloCategoria()
                        : "1";
            }
            int posiTitu = Integer.parseInt(titulo) - 1;

            //Obtnemos los terminos de los ids seleccionados en todos los combos
            dameTerminoId("en"); //para guardar es en ingles
            //            Guardamos PROPOSITO (RAZON)
            SourceValueVO proposito = new SourceValueVO();
            proposito.setSource(AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos")); //source
            proposito.setValor(razon != null ? razon : ""); //Tengo q recoger su nombre dameId
            clasificacionG.setProposito(proposito);

            //RUTAS TAXONOMICAS
            //volvemos a guardar las rutas q ya estan traducidas ejm idioma --> es en vez de 5.1.1
            //Aadimos los cambios para que no cargue las etiquetas vacas
            ArrayList arrayRutas = new ArrayList();
            if (rutasTaxonomicas != null && rutasTaxonomicas.length > 0) {
                for (int i = 0; i < rutasTaxonomicas.length; i++) {
                    FuenteVO fuente = rutasTaxonomicas[i].getFuente();

                    if (fuente != null && fuente.getTextos() != null && fuente.getTextos().length > 0) {
                        //                     comprobamos que si es la ultima ruta taxonomica tenga taxones asociados si no es asi
                        //                     quiere decir que tenemos los combos y no guardamos esos valores pues no hay taxones
                        if (i != rutasTaxonomicas.length - 1
                                || (i == rutasTaxonomicas.length - 1 && tieneTaxonNoVacio())) {
                            LangStringVO[] langFuente = fuente.getTextos();
                            for (int j = 0; j < langFuente.length; j++) {
                                String langIdioma = langFuente[j].getIdioma();
                                langFuente[j].setIdioma(langIdioma);
                                String langTexto = langFuente[j].getTexto();
                                if ((langTexto == null || langTexto.equals(""))) {
                                    fuente = null;
                                }
                            }
                        } else
                            fuente = null;
                    } else {
                        fuente = null;
                    }
                    rutasTaxonomicas[i].setFuente(fuente);
                    TaxonVO[] taxones = rutasTaxonomicas[i].getTaxones();
                    ArrayList arrayTaxo = new ArrayList();

                    if (taxones != null && taxones.length > 0) {
                        for (int j = 0; j < taxones.length; j++) {
                            EntryVO entry = taxones[j].getEntry();
                            if (entry != null && entry.getTextos() != null && entry.getTextos().length > 0) {
                                LangStringVO[] entryTex = entry.getTextos();
                                for (int k = 0; k < entryTex.length; k++) {
                                    String idiomaEntry = entryTex[k].getIdioma();
                                    entryTex[k].setIdioma(idiomaEntry);
                                    String textoEntry = entryTex[k].getTexto();
                                    if ((idiomaEntry == null || idiomaEntry.equals("")
                                            && (textoEntry == null || textoEntry.equals("")))) {
                                        entry = null;
                                    }
                                }
                            } else {
                                entry = null;
                            }
                            IdVO id = taxones[j].getId();
                            String textoId = id.getTexto();
                            if (textoId == null || textoId.equals(""))
                                id = null;
                            if (id != null && textoId != null && !textoId.equals("")) {
                                LangStringVO[] lang = null;
                                entry = taxones[j].getEntry();
                                if (entry != null && entry.getTextos() != null
                                        && entry.getTextos().length > 0) {
                                    LangStringVO[] entryTex = entry.getTextos();
                                    ArrayList arrayEntry = new ArrayList();
                                    for (int k = 0; k < entryTex.length; k++) {

                                        String textoEntry = entryTex[k].getTexto();
                                        if (textoEntry != null && !textoEntry.equals("")) {
                                            arrayEntry.add(entryTex[k]);
                                        }
                                    }
                                    lang = (LangStringVO[]) arrayEntry
                                            .toArray(new LangStringVO[arrayEntry.size()]);
                                    entry.setTextos(lang);
                                } else {
                                    entry = null;
                                }

                            }

                            if (entry == null && id == null) {
                                taxones[j] = null;
                            }

                            if (taxones[j] != null)
                                arrayTaxo.add(taxones[j]);
                        }

                    }
                    if (arrayTaxo != null && arrayTaxo.size() > 0) {
                        taxones = (TaxonVO[]) arrayTaxo.toArray(new TaxonVO[arrayTaxo.size()]);
                    } else {
                        taxones = new TaxonVO[0];
                    }
                    rutasTaxonomicas[i].setTaxones(taxones);
                    if (rutasTaxonomicas[i].getFuente() == null && (rutasTaxonomicas[i].getTaxones() == null
                            || rutasTaxonomicas[i].getTaxones().length == 0))
                        rutasTaxonomicas[i] = null;
                    if (rutasTaxonomicas[i] != null)
                        arrayRutas.add(rutasTaxonomicas[i]);
                }
                if (arrayRutas != null && arrayRutas.size() > 0) {
                    rutasTaxonomicas = (RutaTaxonomicaVO[]) arrayRutas
                            .toArray(new RutaTaxonomicaVO[arrayRutas.size()]);
                } else {
                    rutasTaxonomicas = null;
                }

            } else
                rutasTaxonomicas = null;
            clasificacionG.setRutasTaxonomicas(rutasTaxonomicas);

            if (clasificacionG.getDescripcion().getTextos() == null
                    && clasificacionG.getProposito().getValor().equals("")
                    && clasificacionG.getPalabrasClave() == null
                    && clasificacionG.getRutasTaxonomicas() == null)
                clasificacionG = null;

            if (catalogadorAvSession.getMDSesion() == null) { //tenemos que crearnos un LomAvanzadoVO
                LomAvanzadoVO lomNew = new LomAvanzadoVO();
                AvClassificationVO[] clasificaciones = null;
                ArrayList arrClasi = new ArrayList();
                arrClasi.add(clasificacionG);
                clasificaciones = (AvClassificationVO[]) arrClasi
                        .toArray(new AvClassificationVO[arrClasi.size()]);
                lomNew.setClasificaciones(clasificaciones);
                catalogadorAvSession.setMDSesion(lomNew);

            } else if (catalogadorAvSession.getMDSesion().getClasificaciones() == null) { //no hay ninguna clasificacion
                if (clasificacionG != null) {
                    AvClassificationVO[] clasificaciones = null;
                    ArrayList arrClasi = new ArrayList();
                    arrClasi.add(clasificacionG);
                    clasificaciones = (AvClassificationVO[]) arrClasi
                            .toArray(new AvClassificationVO[arrClasi.size()]);
                    catalogadorAvSession.getMDSesion().setClasificaciones(clasificaciones);
                }

            } else { //tenemos que buscar la clasificacion
                AvClassificationVO[] clasificaciones = catalogadorAvSession.getMDSesion().getClasificaciones();

                if (clasificaciones.length == posiTitu)//GUARDAR CUANDO HEMOS PULSADO BOTON CREAR
                {
                    ArrayList listaClasi = new ArrayList();
                    for (int i = 0; i < clasificaciones.length; i++)
                        listaClasi.add(clasificaciones[i]);

                    if (clasificacionG != null) {
                        listaClasi.add(clasificacionG);
                    }

                    AvClassificationVO[] clasificacionesAux = (AvClassificationVO[]) listaClasi
                            .toArray(new AvClassificationVO[0]);
                    catalogadorAvSession.getMDSesion().setClasificaciones(clasificacionesAux);

                } else //boton modificar
                {
                    ArrayList listaClasi = new ArrayList();
                    for (int i = 0; i < clasificaciones.length; i++) {
                        if (posiTitu == i) {
                            if (clasificacionG != null)
                                listaClasi.add(clasificacionG);
                        } else
                            listaClasi.add(clasificaciones[i]);
                    }
                    AvClassificationVO[] clasificacionesAux = (AvClassificationVO[]) listaClasi
                            .toArray(new AvClassificationVO[0]);
                    catalogadorAvSession.getMDSesion().setClasificaciones(clasificacionesAux);
                }

                //               if ((posiTitu>=0) && (posiTitu<clasificaciones.length)) {
                //                  clasificaciones[posiTitu]=clasificacionG;
                //                  catalogadorAvSession.getMDSesion().setClasificaciones(clasificaciones);
                //                  
                //               }else if (posiTitu>= clasificaciones.length) { //si es uno nuevo
                ////                  tenemos que crearlo al final
                //                  int newTam=clasificaciones.length +1;
                //                  AvClassificationVO[] clasiAux = new AvClassificationVO[newTam];
                //                   for(int i = 0; i<clasificaciones.length;i++)
                //                      clasiAux[i]=clasificaciones[i];
                //                   clasiAux[newTam-1]= clasificacionG;//clasificacion a guardar
                //                   catalogadorAvSession.getMDSesion().setClasificaciones(clasiAux);
                //               }
            }

            //               al final del todo inicializamos setClasificacionAux
            if (catalogadorAvSession != null)
                catalogadorAvSession.setClasificacionAux(null); //inicializado

        } catch (Exception e) {
            logger.error(
                    "Error en catalogadorWeb, categoria DetalleClasificacion, metodo guardarMetadatos " + e);
            throw new java.lang.Exception("detalle.clasificacion", e);
        }

    } else {
        //lanzamos errores de validacion
        if (errorTaxones) {
            throw new ValidatorException("{detalleclasi.error.taxones}");
        } else if ((errorFaltaIdioma && errorFaltaTexto) || (errorFuenteTexto && errorFuenteIdioma))
            throw new ValidatorException("{general.error.idioma_texto}");

        else if ((!errorFaltaIdioma && errorFaltaTexto) || (!errorFuenteIdioma && errorFuenteTexto))
            throw new ValidatorException("{general.error.texto}");
        else
            throw new ValidatorException("{general.error.idioma}");
    }
    if (is != null) {
        is.close();
    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.tecnica.TecnicaControllerImpl.java

/**
 * @see es.pode.catalogadorWeb.presentacion.categoriasAvanzado.tecnica.TecnicaController#guardarTecnica(org.apache.struts.action.ActionMapping, es.pode.catalogadorWeb.presentacion.categoriasAvanzado.tecnica.GuardarTecnicaForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 *///  w  ww.  j  av a2 s  .  c om
public final void guardarTecnica(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.tecnica.GuardarTecnicaForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorNoNumero = false;
    boolean errorSegundos = false;
    boolean tamNum = true;

    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);
    LomAvanzadoVO auxAvanzado = null;
    TamanioVO tamAux = null;
    PautasInstalacionVO pautas = null;
    OtrosRequisitosVO otros = null;
    DuracionVO duracionVO = null;

    try {
        auxAvanzado = new LomAvanzadoVO();
        AvTechnicalVO tecnica = new AvTechnicalVO();
        auxAvanzado.setTechnical(tecnica);

        String source = AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos");
        String idiomaLdap = ((Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE))
                .getLanguage();
        String usuario = LdapUserDetailsUtils.getUsuario();
        //String usuario="empaquetador";
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(idiomaLdap);
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        //          metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);

        Object valor = request.getSession().getAttribute("form");

        //Obtenemos la longitudes de los VOs, que pasamos a cambioFormulario para que se obtengan del request los cambios que hemos hecho
        //Pues en el form que nos viene como parametro no los guarda.

        int longitudFormatos = 0;
        int longitudTamanio = 1;
        int longitudLocalizaciones = 0;
        int longitudRequerimientos = 0;
        int[] longitudAgregadores = new int[0];
        int longitudInstalaciones = 0;
        int longitudMasRequerimientos = 0;
        int longitudDescDuracion = 0;

        if (valor instanceof TecnicaFormImpl) {
            TecnicaFormImpl valorTec = ((TecnicaFormImpl) valor);
            Object[] req = valorTec.getRequerimientoAsArray();
            longitudAgregadores = new int[req.length];
            for (int i = 0; i < req.length; i++) {
                longitudAgregadores[i] = ((RequisitoVO) (req[i])).getAgregadoresOR().length;
            }

            longitudRequerimientos = req.length;
            longitudFormatos = ((TecnicaFormImpl) valor).getFormatosAsArray().length;
            longitudLocalizaciones = ((TecnicaFormImpl) valor).getLocalizacionAsArray().length;
            longitudInstalaciones = (((PautasInstalacionVO[]) ((TecnicaFormImpl) valor)
                    .getDescripcionInstalacionAsArray())[0]).getTextos().length;
            longitudMasRequerimientos = (((OtrosRequisitosVO[]) ((TecnicaFormImpl) valor)
                    .getDescripcionRequerimientosAsArray())[0]).getTextos().length;

            longitudDescDuracion = ((DescripcionVO[]) ((TecnicaFormImpl) valor)
                    .getDescripcionDuracionAsArray())[0].getTextos().length;

        } else if (valor instanceof TecnicaFormAccionSubmitFormImpl) {
            TecnicaFormAccionSubmitFormImpl valorTec = ((TecnicaFormAccionSubmitFormImpl) valor);
            Object[] req = valorTec.getRequerimientoAsArray();
            longitudAgregadores = new int[req.length];
            for (int i = 0; i < req.length; i++) {
                longitudAgregadores[i] = ((RequisitoVO) (req[i])).getAgregadoresOR().length;
            }

            longitudRequerimientos = req.length;
            longitudFormatos = ((TecnicaFormAccionSubmitFormImpl) valor).getFormatosAsArray().length;
            longitudLocalizaciones = ((TecnicaFormAccionSubmitFormImpl) valor).getLocalizacionAsArray().length;
            longitudInstalaciones = (((PautasInstalacionVO[]) ((TecnicaFormAccionSubmitFormImpl) valor)
                    .getDescripcionInstalacionAsArray())[0]).getTextos().length;
            longitudMasRequerimientos = (((OtrosRequisitosVO[]) ((TecnicaFormAccionSubmitFormImpl) valor)
                    .getDescripcionRequerimientosAsArray())[0]).getTextos().length;
            longitudDescDuracion = ((DescripcionVO[]) ((TecnicaFormAccionSubmitFormImpl) valor)
                    .getDescripcionDuracionAsArray())[0].getTextos().length;

        } else if (valor instanceof TecnicaValidaVolverFormImpl) {
            TecnicaValidaVolverFormImpl valorTec = ((TecnicaValidaVolverFormImpl) valor);
            Object[] req = valorTec.getRequerimientoAsArray();
            longitudAgregadores = new int[req.length];
            for (int i = 0; i < req.length; i++) {
                longitudAgregadores[i] = ((RequisitoVO) (req[i])).getAgregadoresOR().length;
            }

            longitudRequerimientos = req.length;
            longitudFormatos = ((TecnicaValidaVolverFormImpl) valor).getFormatosAsArray().length;
            longitudLocalizaciones = ((TecnicaValidaVolverFormImpl) valor).getLocalizacionAsArray().length;
            longitudInstalaciones = (((PautasInstalacionVO[]) ((TecnicaValidaVolverFormImpl) valor)
                    .getDescripcionInstalacionAsArray())[0]).getTextos().length;
            longitudMasRequerimientos = (((OtrosRequisitosVO[]) ((TecnicaValidaVolverFormImpl) valor)
                    .getDescripcionRequerimientosAsArray())[0]).getTextos().length;
            longitudDescDuracion = ((DescripcionVO[]) ((TecnicaValidaVolverFormImpl) valor)
                    .getDescripcionDuracionAsArray())[0].getTextos().length;

        } else if (valor instanceof TecnicaNoValidaVolverFormImpl) {
            TecnicaNoValidaVolverFormImpl valorTec = ((TecnicaNoValidaVolverFormImpl) valor);
            Object[] req = valorTec.getRequerimientoAsArray();
            longitudAgregadores = new int[req.length];
            for (int i = 0; i < req.length; i++) {
                longitudAgregadores[i] = ((RequisitoVO) (req[i])).getAgregadoresOR().length;
            }

            longitudRequerimientos = req.length;
            longitudFormatos = ((TecnicaNoValidaVolverFormImpl) valor).getFormatosAsArray().length;
            longitudLocalizaciones = ((TecnicaNoValidaVolverFormImpl) valor).getLocalizacionAsArray().length;
            longitudInstalaciones = (((PautasInstalacionVO[]) ((TecnicaNoValidaVolverFormImpl) valor)
                    .getDescripcionInstalacionAsArray())[0]).getTextos().length;
            longitudMasRequerimientos = (((OtrosRequisitosVO[]) ((TecnicaNoValidaVolverFormImpl) valor)
                    .getDescripcionRequerimientosAsArray())[0]).getTextos().length;
            longitudDescDuracion = ((DescripcionVO[]) ((TecnicaNoValidaVolverFormImpl) valor)
                    .getDescripcionDuracionAsArray())[0].getTextos().length;
        }

        cambioFormulario(request, longitudFormatos, longitudLocalizaciones, longitudRequerimientos,
                longitudAgregadores, longitudInstalaciones, longitudMasRequerimientos, longitudDescDuracion);

        //       Guardamos los cambios en el form obtenido de request.getSession.getAttribute("form") para que en caso de faltar
        //algun idioma o texto sin rellenar cargue el formulario con lo cambio y no perdamos todo lo modificado hasta ese
        //momento, si no lo hicieramos cargara el formulario anterior.

        //FORMATOS

        FormatoVO[] formatosAux = new FormatoVO[formatos.length];
        for (int i = 0; i < formatos.length; i++) {
            FormatoVO auxFormato = new FormatoVO();
            auxFormato.setTexto(formatos[i].getTexto().trim());
            formatosAux[i] = auxFormato;

        }

        //TAMAO
        tamAux = new TamanioVO();
        if (!tamao.equals(""))
            tamAux.setTexto(tamao);
        else
            tamAux = null;
        //tamao=tamao;

        //LOCALIZACIONES

        LocalizacionVO[] localizacionesAux = new LocalizacionVO[localizaciones.length];
        for (int i = 0; i < localizaciones.length; i++) {
            LocalizacionVO auxLocalizacion = new LocalizacionVO();
            auxLocalizacion.setTexto(localizaciones[i].getTexto().trim());
            localizacionesAux[i] = auxLocalizacion;
        }

        //REQUERIMIENTOS

        RequisitoVO[] requisitoAux = new RequisitoVO[requisitos.length];
        for (int i = 0; i < requisitos.length; i++) {
            RequisitoVO auxRequisito = new RequisitoVO();
            RequisitoVO requisito = requisitos[i];
            AgregadorORVO[] agrega = requisito.getAgregadoresOR();
            AgregadorORVO[] agregadoresAux = new AgregadorORVO[agrega.length];
            for (int j = 0; j < agrega.length; j++) {
                AgregadorORVO auxAgregador = new AgregadorORVO();
                SourceValueVO nom = new SourceValueVO();
                nom.setSource(agrega[j].getNombre().getSource());
                nom.setValor(agrega[j].getNombre().getValor());
                auxAgregador.setNombre(nom);
                SourceValueVO tip = new SourceValueVO();
                tip.setSource(agrega[j].getTipo().getSource());
                tip.setValor(agrega[j].getTipo().getValor());
                auxAgregador.setTipo(tip);
                VersionMaxVO max = new VersionMaxVO();
                max.setTexto(agrega[j].getVersionMax().getTexto().trim());
                auxAgregador.setVersionMax(max);
                VersionMinVO min = new VersionMinVO();
                min.setTexto(agrega[j].getVersionMin().getTexto().trim());
                auxAgregador.setVersionMin(min);
                agregadoresAux[j] = auxAgregador;
            }
            auxRequisito.setAgregadoresOR(agregadoresAux);
            requisitoAux[i] = auxRequisito;
        }

        //NOTAS DE INSTALACION
        PautasInstalacionVO[] pautasAux = new PautasInstalacionVO[1];

        LangStringVO[] langPautaAux = new LangStringVO[notasDeInstalacion[0].getTextos().length];
        for (int i = 0; i < notasDeInstalacion[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(notasDeInstalacion[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(notasDeInstalacion[0].getTextos()[i].getTexto().trim());
            langPautaAux[i] = nuevoLang;
        }
        PautasInstalacionVO pautaAux = new PautasInstalacionVO();
        pautaAux.setTextos(langPautaAux);
        pautasAux[0] = pautaAux;

        //MAS REQUERIMIENTOS

        OtrosRequisitosVO[] otrosAux = new OtrosRequisitosVO[1];

        LangStringVO[] langOtroAux = new LangStringVO[masRequisitos[0].getTextos().length];
        for (int i = 0; i < masRequisitos[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(masRequisitos[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(masRequisitos[0].getTextos()[i].getTexto().trim());
            langOtroAux[i] = nuevoLang;
        }
        OtrosRequisitosVO otroAux = new OtrosRequisitosVO();
        otroAux.setTextos(langOtroAux);
        otrosAux[0] = otroAux;

        //DURACION

        DescripcionVO[] descAux = new DescripcionVO[1];
        LangStringVO[] langDescAux = new LangStringVO[duracionDesc[0].getTextos().length];
        for (int i = 0; i < duracionDesc[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(duracionDesc[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(duracionDesc[0].getTextos()[i].getTexto().trim());
            langDescAux[i] = nuevoLang;
        }
        DescripcionVO otroDesc = new DescripcionVO();
        otroDesc.setTextos(langDescAux);
        descAux[0] = otroDesc;

        if (valor instanceof TecnicaFormImpl) {
            ((TecnicaFormImpl) valor).setFormatosAsArray(formatosAux);
            ((TecnicaFormImpl) valor).setTamanio(tamao);
            ((TecnicaFormImpl) valor).setLocalizacionAsArray(localizacionesAux);
            ((TecnicaFormImpl) valor).setRequerimientoAsArray(requisitoAux);
            ((TecnicaFormImpl) valor).setDescripcionInstalacionAsArray(pautasAux);
            ((TecnicaFormImpl) valor).setDescripcionRequerimientosAsArray(otrosAux);
            ((TecnicaFormImpl) valor).setDescripcionDuracionAsArray(descAux);
            ((TecnicaFormImpl) valor).setAnyo(anyos);
            ((TecnicaFormImpl) valor).setMes(meses);
            ((TecnicaFormImpl) valor).setDia(dias);
            ((TecnicaFormImpl) valor).setHora(horas);
            ((TecnicaFormImpl) valor).setMinutos(minutos);
            ((TecnicaFormImpl) valor).setSegundosP1(segundosP1);
            ((TecnicaFormImpl) valor).setSegundosP2(segundosP2);
        } else if (valor instanceof TecnicaFormAccionSubmitFormImpl) {
            ((TecnicaFormAccionSubmitFormImpl) valor).setFormatosAsArray(formatosAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setTamanio(tamao);
            ((TecnicaFormAccionSubmitFormImpl) valor).setLocalizacionAsArray(localizacionesAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setRequerimientoAsArray(requisitoAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setDescripcionInstalacionAsArray(pautasAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setDescripcionRequerimientosAsArray(otrosAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setDescripcionDuracionAsArray(descAux);
            ((TecnicaFormAccionSubmitFormImpl) valor).setAnyo(anyos);
            ((TecnicaFormAccionSubmitFormImpl) valor).setMes(meses);
            ((TecnicaFormAccionSubmitFormImpl) valor).setDia(dias);
            ((TecnicaFormAccionSubmitFormImpl) valor).setHora(horas);
            ((TecnicaFormAccionSubmitFormImpl) valor).setMinutos(minutos);
            ((TecnicaFormAccionSubmitFormImpl) valor).setSegundosP1(segundosP1);
            ((TecnicaFormAccionSubmitFormImpl) valor).setSegundosP2(segundosP2);
        } else if (valor instanceof TecnicaValidaVolverFormImpl) {
            ((TecnicaValidaVolverFormImpl) valor).setFormatosAsArray(formatosAux);
            ((TecnicaValidaVolverFormImpl) valor).setTamanio(tamao);
            ((TecnicaValidaVolverFormImpl) valor).setLocalizacionAsArray(localizacionesAux);
            ((TecnicaValidaVolverFormImpl) valor).setRequerimientoAsArray(requisitoAux);
            ((TecnicaValidaVolverFormImpl) valor).setDescripcionInstalacionAsArray(pautasAux);
            ((TecnicaValidaVolverFormImpl) valor).setDescripcionRequerimientosAsArray(otrosAux);
            ((TecnicaValidaVolverFormImpl) valor).setDescripcionDuracionAsArray(descAux);
            ((TecnicaValidaVolverFormImpl) valor).setAnyo(anyos);
            ((TecnicaValidaVolverFormImpl) valor).setMes(meses);
            ((TecnicaValidaVolverFormImpl) valor).setDia(dias);
            ((TecnicaValidaVolverFormImpl) valor).setHora(horas);
            ((TecnicaValidaVolverFormImpl) valor).setMinutos(minutos);
            ((TecnicaValidaVolverFormImpl) valor).setSegundosP1(segundosP1);
            ((TecnicaValidaVolverFormImpl) valor).setSegundosP2(segundosP2);
        } else if (valor instanceof TecnicaNoValidaVolverFormImpl) {
            ((TecnicaNoValidaVolverFormImpl) valor).setFormatosAsArray(formatosAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setTamanio(tamao);
            ((TecnicaNoValidaVolverFormImpl) valor).setLocalizacionAsArray(localizacionesAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setRequerimientoAsArray(requisitoAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setDescripcionInstalacionAsArray(pautasAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setDescripcionRequerimientosAsArray(otrosAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setDescripcionDuracionAsArray(descAux);
            ((TecnicaNoValidaVolverFormImpl) valor).setAnyo(anyos);
            ((TecnicaNoValidaVolverFormImpl) valor).setMes(meses);
            ((TecnicaNoValidaVolverFormImpl) valor).setDia(dias);
            ((TecnicaNoValidaVolverFormImpl) valor).setHora(horas);
            ((TecnicaNoValidaVolverFormImpl) valor).setMinutos(minutos);
            ((TecnicaNoValidaVolverFormImpl) valor).setSegundosP1(segundosP1);
            ((TecnicaNoValidaVolverFormImpl) valor).setSegundosP2(segundosP2);
        }

        //       Obtnemos los terminos de los ids seleccionados en todos los combos, y los guarda en los VO 
        dameTerminoId();
        //      Comprobamos si los campos ha sido rellenados adecuadamente

        //FORMATOS

        if ((formatos != null) && (formatos.length != 0)) {
            ArrayList lista = new ArrayList();
            for (int i = 0; i < formatos.length; i++) {
                FormatoVO forma = (FormatoVO) formatos[i];
                if ((forma != null) && (!forma.getTexto().equals(""))) {
                    FormatoVO formatoAux = new FormatoVO();
                    formatoAux.setTexto(forma.getTexto().trim());
                    lista.add(formatoAux);
                }
            }
            formatos = (FormatoVO[]) lista.toArray(new FormatoVO[lista.size()]);
            if (formatos.length == 0)
                formatos = null;
        } else
            formatos = null;
        auxAvanzado.getTechnical().setFormatos(formatos);

        //TAMAO??
        auxAvanzado.getTechnical().setTamanio(tamAux);

        //LOCALIZACION
        if ((localizaciones != null) && (localizaciones.length != 0)) {
            ArrayList lista = new ArrayList();
            for (int i = 0; i < localizaciones.length; i++) {
                LocalizacionVO loca = (LocalizacionVO) localizaciones[i];
                if ((loca != null) && (!loca.getTexto().equals(""))) {
                    LocalizacionVO localizacionAux = new LocalizacionVO();
                    localizacionAux.setTexto(loca.getTexto().trim());
                    lista.add(localizacionAux);
                }
            }
            localizaciones = (LocalizacionVO[]) lista.toArray(new LocalizacionVO[lista.size()]);
            if (localizaciones.length == 0)
                localizaciones = null;
        } else
            localizaciones = null;
        auxAvanzado.getTechnical().setLocalizaciones(localizaciones);

        //REQUERIMIENTOS

        if ((requisitos != null) && (requisitos.length != 0)) {
            ArrayList lista = new ArrayList();
            AgregadorORVO[] agregadores = requisitos[0].getAgregadoresOR();

            if (requisitos.length == 1 && agregadores.length == 1
                    && agregadores[0].getNombre().getValor().equals("")
                    && agregadores[0].getTipo().getValor().equals("")
                    && agregadores[0].getVersionMax().getTexto().equals("")
                    && agregadores[0].getVersionMin().getTexto().equals("")) {
                requisitos = null;
            } else {
                for (int i = 0; i < requisitos.length; i++) {
                    if (requisitos != null) {
                        ArrayList listAgr = new ArrayList();
                        RequisitoVO lRequi = (RequisitoVO) requisitos[i];
                        RequisitoVO lRequisitos = new RequisitoVO();
                        for (int j = 0; j < lRequi.getAgregadoresOR().length; j++) {
                            AgregadorORVO agrega = lRequi.getAgregadoresOR()[j];
                            AgregadorORVO lAgrega = new AgregadorORVO();
                            String name = agrega.getNombre().getValor();
                            String type = agrega.getTipo().getValor();
                            String min = agrega.getVersionMin().getTexto();
                            String max = agrega.getVersionMax().getTexto();
                            if (((name != null) && (!name.equals(""))) || ((type != null) && (!type.equals("")))
                                    || ((min != null) && (!min.trim().equals("")))
                                    || ((max != null) && (!max.trim().equals("")))) {
                                SourceValueVO nombre = new SourceValueVO();
                                nombre.setSource(source);
                                nombre.setValor(name);
                                lAgrega.setNombre(nombre);
                                SourceValueVO tipo = new SourceValueVO();
                                tipo.setSource(source);
                                tipo.setValor(type);
                                lAgrega.setTipo(tipo);
                                VersionMaxVO maxi = new VersionMaxVO();
                                maxi.setTexto(max.trim());
                                lAgrega.setVersionMax(maxi);
                                VersionMinVO mini = new VersionMinVO();
                                mini.setTexto(min.trim());
                                lAgrega.setVersionMin(mini);
                                listAgr.add(lAgrega);
                            }
                        }
                        if (listAgr.size() != 0) {
                            AgregadorORVO[] agregas = (AgregadorORVO[]) listAgr
                                    .toArray(new AgregadorORVO[listAgr.size()]);
                            lRequisitos.setAgregadoresOR(agregas);
                            lista.add(lRequisitos);

                        }
                    }
                }
                if (lista.size() == 0)
                    requisitos = null;
                else
                    requisitos = (RequisitoVO[]) lista.toArray(new RequisitoVO[lista.size()]);
            }
        } else
            requisitos = null;
        auxAvanzado.getTechnical().setRequisitos(requisitos);

        //NOTAS DE INSTALACION

        pautas = new PautasInstalacionVO();
        if (notasDeInstalacion != null && notasDeInstalacion.length != 0) {
            PautasInstalacionVO pauta = (PautasInstalacionVO) notasDeInstalacion[0];
            LangStringVO[] textos = pauta.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lPat = (LangStringVO) textos[j];

                if (lPat != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lPat.getIdioma();
                    String texto = lPat.getTexto().trim();
                    if (((idioma != null) && (!idioma.equals("")))
                            && ((texto != null) && (!texto.trim().equals("")))) {
                        lLang.setIdioma(idioma);
                        lLang.setTexto(texto);
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.equals(""))
                            errorFaltaTexto = true;
                    }
                }
            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0)
                pautas = null;
            else
                pautas.setTextos(lLangS);
        } else
            pautas = null;

        auxAvanzado.getTechnical().setPautasInstalacion(pautas);

        //MAS REQUERIMIENTOS

        otros = new OtrosRequisitosVO();
        if (masRequisitos != null && masRequisitos.length != 0) {
            OtrosRequisitosVO otro = (OtrosRequisitosVO) masRequisitos[0];
            LangStringVO[] textos = otro.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lOtro = (LangStringVO) textos[j];

                if (lOtro != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lOtro.getIdioma();
                    String texto = lOtro.getTexto();
                    if (((idioma != null) && (!idioma.equals("")))
                            && ((texto != null) && (!texto.trim().equals("")))) {
                        lLang.setIdioma(idioma);
                        lLang.setTexto(texto.trim());
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.equals(""))
                            errorFaltaTexto = true;
                    }
                }
            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0)
                otros = null;
            else
                otros.setTextos(lLangS);
        } else
            otros = null;

        auxAvanzado.getTechnical().setOtrosRequisitos(otros);

        //Duracion
        DescripcionVO duras = new DescripcionVO();
        if (duracionDesc != null && duracionDesc.length != 0) {
            DescripcionVO descD = (DescripcionVO) duracionDesc[0];
            LangStringVO[] textos = descD.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lOtro = (LangStringVO) textos[j];

                if (lOtro != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lOtro.getIdioma();
                    String texto = lOtro.getTexto();
                    if (((idioma != null) && (!idioma.equals("")))
                            && ((texto != null) && (!texto.trim().equals("")))) {
                        lLang.setIdioma(idioma);
                        lLang.setTexto(texto.trim());
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.equals(""))
                            errorFaltaTexto = true;
                    }
                }
            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0)
                duras = null;
            else
                duras.setTextos(lLangS);
        } else
            duras = null;
        anyos = anyos.trim();
        meses = meses.trim();
        dias = dias.trim();
        horas = horas.trim();
        minutos = minutos.trim();
        segundosP1 = segundosP1.trim();
        segundosP2 = segundosP2.trim();
        form.setAnyo(anyos);
        form.setMes(meses);
        form.setDia(dias);
        form.setHora(horas);
        form.setMinutos(minutos);
        form.setSegundosP1(segundosP1);
        form.setSegundosP2(segundosP2);

        duracionVO = new DuracionVO();
        duracionVO.setDescripcion(duras);

        String duration = "";
        if (!dias.equals("") || !meses.equals("") || !anyos.equals("")) {
            duration = "P";
            if (!anyos.equals(""))
                if (!anyos.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + anyos + "Y";
            if (!meses.equals(""))
                if (!meses.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + meses + "M";
            if (!dias.equals("")) {
                if (!dias.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + dias + "D";
            }

        }
        if (!horas.equals("") || !minutos.equals("") || !segundosP1.equals("") || !segundosP2.equals("")) {
            if (duration.equals(""))
                duration = "PT";
            else
                duration = duration + "T";
            if (!horas.equals(""))
                if (!horas.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + horas + "H";
            if (!minutos.equals(""))
                if (!minutos.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + minutos + "M";
            if (!segundosP1.equals(""))
                if (!segundosP1.matches("\\d{1,}"))
                    errorNoNumero = true;
                else if (segundosP2.equals(""))
                    duration = duration + segundosP1 + "S";
                else if (!segundosP2.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duration = duration + segundosP1 + "." + segundosP2 + "S";
            if (segundosP1.equals("") && !segundosP2.equals(""))
                errorSegundos = true;
        }
        if (duration.equals(""))
            duration = null;
        duracionVO.setDuracion(duration);

        if ((duracionVO.getDescripcion() == null) && (duracionVO.getDuracion() == null)) {
            duracionVO = null;
        }

        auxAvanzado.getTechnical().setDuracion(duracionVO);
        //TAMAO
        if (tamao != null && !tamao.equals("")) {
            try {
                Long bigTamao = new Long(tamao);
                if (bigTamao.intValue() < 0) {
                    tamNum = false;
                }
            } catch (Exception e) {
                tamNum = false;
            }
        }

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new java.lang.Exception("tecnica", ad);

    } catch (Exception e) {
        logger.error("Error en catalogadorWeb, categora Tecnica, metodo guardarTecnica " + e);
        throw new java.lang.Exception("tecnica", e);

    }

    if (!errorFaltaIdioma && !errorFaltaTexto && !errorNoNumero && !errorSegundos && tamNum) {
        try {
            //         Cargamos el objeto de sesion
            if (catalogadorAvSession.getMDSesion() == null) {
                catalogadorAvSession.setMDSesion(auxAvanzado);

            } else {
                if (formatos == null && tamAux == null && localizaciones == null && requisitos == null
                        && pautas == null && otros == null && duracionVO == null)
                    catalogadorAvSession.getMDSesion().setTechnical(null);
                else
                    catalogadorAvSession.getMDSesion().setTechnical(auxAvanzado.getTechnical());
            }
        } catch (Exception e) {
            logger.error("Error en catalogadorWeb, categora Tecnica, mtodo guardarTecnica " + e);
            throw new java.lang.Exception("tecnica", e);
        }

    } else {
        if (errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{tecnica.error.idioma_texto}");
        else if (!errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{tecnica.error.texto}");
        else if (errorFaltaIdioma && !errorFaltaTexto)
            throw new ValidatorException("{tecnica.error.idioma}");
        else if (errorNoNumero)
            throw new ValidatorException("{tecnica.error.NoNumero}");
        else if (errorSegundos)
            throw new ValidatorException("{tecnica.error.Segundos}");
        else if (!tamNum)
            throw new ValidatorException("{tecnica.error.Tamaino}");
    }

}

From source file:es.pode.catalogadorWeb.presentacion.categoriasAvanzado.usoeducativo.detalleUsoEducativo.DetalleUsoEduControllerImpl.java

public final void guardarUsoEducativo(ActionMapping mapping,
        es.pode.catalogadorWeb.presentacion.categoriasAvanzado.usoeducativo.detalleUsoEducativo.GuardarUsoEducativoForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    boolean errorFaltaIdioma = false;
    boolean errorFaltaTexto = false;
    boolean errorNoNumero = false;
    boolean errorSegundos = false;

    LomAvanzadoVO auxAvanzado = null;// w w  w . j a v a2s.  c o m
    AvEducationalVO educacion = null;
    AvEducationalVO[] arrayEducacion = null;
    CatalogadorAvSession catalogadorAvSession = this.getCatalogadorAvSession(request);

    try {
        auxAvanzado = new LomAvanzadoVO();

        educacion = new AvEducationalVO();
        arrayEducacion = new AvEducationalVO[1];
        arrayEducacion[0] = educacion;
        auxAvanzado.setEducational(arrayEducacion);

        String source = AgregaPropertiesImpl.getInstance().getProperty("esquemaDeMetadatos");

        String idiomaLdap = ((Locale) request.getSession().getAttribute(ConstantesAgrega.DEFAULT_LOCALE))
                .getLanguage();

        String usuario = LdapUserDetailsUtils.getUsuario();
        //String usuario="empaquetador";
        String identificador = request.getParameter("identificador");
        if (identificador == null) {
            identificador = catalogadorAvSession.getIdentificador();
        }
        String returnURL = request.getParameter("returnURL");
        if (returnURL == null)
            returnURL = catalogadorAvSession.getReturnURL();

        catalogadorAvSession.setIdioma(idiomaLdap);
        catalogadorAvSession.setIdentificador(identificador);
        catalogadorAvSession.setUsuario(usuario);
        //          metemos en la sesion el parametro de vuelta al empaquetador
        catalogadorAvSession.setReturnURL(returnURL);

        Object valor = request.getSession().getAttribute("form");

        //Obtenemos la longitudes de los VOs, que pasamos a cambioFormulario para que se obtengan del request los cambios que hemos hecho
        //Pues en el form que nos viene como parametro no los guarda.
        int longitudDescripciones = 0;
        int longitudIdiomas = 0;
        int longitudTipoRecurso = 0;
        int longitudRoles = 0;
        int longitudContextos = 0;
        int longitudProcesos = 0;
        int longitudTADesc = 0;
        int longitudRangos = 0;
        int[] longitudTextosDesc = new int[0];
        int[] longitudTextosRangosEdad = new int[0];

        if (valor instanceof DetalleUsoEduFormImpl) {
            DetalleUsoEduFormImpl formulario = ((DetalleUsoEduFormImpl) valor);
            Object[] desc = formulario.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }
            Object[] eTipica = formulario.getEdadTipicaAsArray();
            longitudTextosRangosEdad = new int[eTipica.length];
            for (int i = 0; i < eTipica.length; i++) {
                longitudTextosRangosEdad[i] = ((RangoEdadVO) eTipica[i]).getTextos().length;
            }
            longitudDescripciones = desc.length;
            longitudRangos = formulario.getEdadTipicaAsArray().length;
            longitudTipoRecurso = formulario.getTipoRecursoAsArray().length;
            longitudRoles = formulario.getRolUsuarioAsArray().length;
            longitudIdiomas = formulario.getIdiomasAsArray().length;
            longitudContextos = formulario.getContextoAsArray().length;
            longitudProcesos = formulario.getProcesoCognitivoAsArray().length;
            longitudTADesc = (((DescripcionVO[]) formulario.getTiempoApDescripcionAsArray())[0])
                    .getTextos().length;
        } else if (valor instanceof DetalleUsoEducativoSubmitFormImpl) {
            DetalleUsoEducativoSubmitFormImpl formulario = ((DetalleUsoEducativoSubmitFormImpl) valor);
            Object[] desc = formulario.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }
            Object[] eTipica = formulario.getEdadTipicaAsArray();
            longitudTextosRangosEdad = new int[eTipica.length];
            for (int i = 0; i < eTipica.length; i++) {
                longitudTextosRangosEdad[i] = ((RangoEdadVO) eTipica[i]).getTextos().length;
            }
            longitudDescripciones = desc.length;
            longitudRangos = formulario.getEdadTipicaAsArray().length;
            longitudTipoRecurso = formulario.getTipoRecursoAsArray().length;
            longitudRoles = formulario.getRolUsuarioAsArray().length;
            longitudIdiomas = formulario.getIdiomasAsArray().length;
            longitudContextos = formulario.getContextoAsArray().length;
            longitudProcesos = formulario.getProcesoCognitivoAsArray().length;
            longitudTADesc = (((DescripcionVO[]) formulario.getTiempoApDescripcionAsArray())[0])
                    .getTextos().length;
        } else if (valor instanceof UsoEducativoValidoVolverFormImpl) {
            UsoEducativoValidoVolverFormImpl formulario = ((UsoEducativoValidoVolverFormImpl) valor);
            Object[] desc = formulario.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }
            Object[] eTipica = formulario.getEdadTipicaAsArray();
            longitudTextosRangosEdad = new int[eTipica.length];
            for (int i = 0; i < eTipica.length; i++) {
                longitudTextosRangosEdad[i] = ((RangoEdadVO) eTipica[i]).getTextos().length;
            }
            longitudDescripciones = desc.length;
            longitudRangos = formulario.getEdadTipicaAsArray().length;
            longitudTipoRecurso = formulario.getTipoRecursoAsArray().length;
            longitudRoles = formulario.getRolUsuarioAsArray().length;
            longitudIdiomas = formulario.getIdiomasAsArray().length;
            longitudContextos = formulario.getContextoAsArray().length;
            longitudProcesos = formulario.getProcesoCognitivoAsArray().length;
            longitudTADesc = (((DescripcionVO[]) formulario.getTiempoApDescripcionAsArray())[0])
                    .getTextos().length;
        } else if (valor instanceof UsoEducativoNoValidoVolverFormImpl) {
            UsoEducativoNoValidoVolverFormImpl formulario = ((UsoEducativoNoValidoVolverFormImpl) valor);
            Object[] desc = formulario.getDescripcionesAsArray();
            longitudTextosDesc = new int[desc.length];
            for (int i = 0; i < desc.length; i++) {
                longitudTextosDesc[i] = ((DescripcionVO) (desc[i])).getTextos().length;
            }
            Object[] eTipica = formulario.getEdadTipicaAsArray();
            longitudTextosRangosEdad = new int[eTipica.length];
            for (int i = 0; i < eTipica.length; i++) {
                longitudTextosRangosEdad[i] = ((RangoEdadVO) eTipica[i]).getTextos().length;
            }
            longitudDescripciones = desc.length;
            longitudRangos = formulario.getEdadTipicaAsArray().length;
            longitudTipoRecurso = formulario.getTipoRecursoAsArray().length;
            longitudRoles = formulario.getRolUsuarioAsArray().length;
            longitudIdiomas = formulario.getIdiomasAsArray().length;
            longitudContextos = formulario.getContextoAsArray().length;
            longitudProcesos = formulario.getProcesoCognitivoAsArray().length;
            longitudTADesc = (((DescripcionVO[]) formulario.getTiempoApDescripcionAsArray())[0])
                    .getTextos().length;
        }

        //Recogemos los cambio del request mediante parametros
        cambioFormulario(request, longitudTextosDesc, longitudTextosRangosEdad, longitudDescripciones,
                longitudRangos, longitudIdiomas, longitudTipoRecurso, longitudRoles, longitudContextos,
                longitudProcesos, longitudTADesc, source);

        //Guardamos los cambios en el form obtenido de request.getSession.getAttribute("form") para que en caso de faltar
        //algun idioma o texto sin rellenar cargue el formulario con lo cambio y no perdamos todo lo modificado hasta ese
        //momento, si no lo hicieramos cargara el formulario anterior. 

        //IDIOMAS
        IdiomaVO[] idiomasAux = new IdiomaVO[idiomas.length];
        for (int i = 0; i < idiomas.length; i++) {
            IdiomaVO auxIdioma = new IdiomaVO();
            auxIdioma.setTexto(idiomas[i].getTexto());
            idiomasAux[i] = auxIdioma;
        }

        //TIPOS RECURSOS
        SourceValueVO[] tiposRecursoAux = new SourceValueVO[tiposRecurso.length];
        for (int i = 0; i < tiposRecurso.length; i++) {
            SourceValueVO auxTipoRecurso = new SourceValueVO();
            auxTipoRecurso.setValor(tiposRecurso[i].getValor());
            auxTipoRecurso.setSource(source);
            tiposRecursoAux[i] = auxTipoRecurso;
        }

        //ROLES O DESTINATARIOS
        SourceValueVO[] rolesAux = new SourceValueVO[roles.length];
        for (int i = 0; i < roles.length; i++) {
            SourceValueVO auxRoles = new SourceValueVO();
            auxRoles.setValor(roles[i].getValor());
            auxRoles.setSource(source);
            rolesAux[i] = auxRoles;
        }

        //CONTEXTOS
        SourceValueVO[] contextosAux = new SourceValueVO[contextos.length];
        for (int i = 0; i < contextos.length; i++) {
            SourceValueVO auxContexto = new SourceValueVO();
            auxContexto.setValor(contextos[i].getValor());
            auxContexto.setSource(source);
            contextosAux[i] = auxContexto;
        }

        //PROCESOS COGNITIVOS
        SourceValueVO[] procesosAux = new SourceValueVO[procesosCognitivos.length];
        for (int i = 0; i < procesosCognitivos.length; i++) {
            SourceValueVO auxProceso = new SourceValueVO();
            auxProceso.setValor(procesosCognitivos[i].getValor());
            auxProceso.setSource(source);
            procesosAux[i] = auxProceso;
        }

        //DESCRIPCION TIEMPO APRENDIZAJE
        DescripcionVO[] taDescripcionAux = new DescripcionVO[1];
        LangStringVO[] langTADescAux = new LangStringVO[tiempoApDescripcion[0].getTextos().length];
        for (int i = 0; i < tiempoApDescripcion[0].getTextos().length; i++) {
            LangStringVO nuevoLang = new LangStringVO();
            nuevoLang.setIdioma(tiempoApDescripcion[0].getTextos()[i].getIdioma());
            nuevoLang.setTexto(tiempoApDescripcion[0].getTextos()[i].getTexto().trim());
            langTADescAux[i] = nuevoLang;
        }
        DescripcionVO taDescAux = new DescripcionVO();
        taDescAux.setTextos(langTADescAux);
        taDescripcionAux[0] = taDescAux;

        //DESCRIPCIONES
        DescripcionVO[] descripcionesAux = new DescripcionVO[descripciones.length];
        for (int i = 0; i < descripciones.length; i++) {
            DescripcionVO descripAux = new DescripcionVO();
            LangStringVO[] langDescrip = descripciones[i].getTextos();
            LangStringVO[] langDescripAux = new LangStringVO[langDescrip.length];
            for (int j = 0; j < langDescrip.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langDescrip[j].getIdioma());
                nuevoLang.setTexto(langDescrip[j].getTexto().trim());
                langDescripAux[j] = nuevoLang;
            }
            descripAux.setTextos(langDescripAux);
            descripcionesAux[i] = descripAux;
        }

        //RANGOS EDAD
        RangoEdadVO[] rangosEdadAux = new RangoEdadVO[rangosEdad.length];
        for (int i = 0; i < rangosEdad.length; i++) {
            RangoEdadVO rEdadAux = new RangoEdadVO();
            LangStringVO[] langREdad = rangosEdad[i].getTextos();
            LangStringVO[] langREdadAux = new LangStringVO[langREdad.length];
            for (int j = 0; j < langREdad.length; j++) {
                LangStringVO nuevoLang = new LangStringVO();
                nuevoLang.setIdioma(langREdad[j].getIdioma());
                nuevoLang.setTexto(langREdad[j].getTexto().trim());
                langREdadAux[j] = nuevoLang;
            }
            rEdadAux.setTextos(langREdadAux);
            rangosEdadAux[i] = rEdadAux;
        }

        if (valor instanceof DetalleUsoEduFormImpl) {
            DetalleUsoEduFormImpl formulario = (DetalleUsoEduFormImpl) valor;
            formulario.setIdiomasAsArray(idiomasAux);
            formulario.setTiempoApDescripcionAsArray(taDescripcionAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
            formulario.setEdadTipicaAsArray(rangosEdadAux);
            formulario.setTipoRecursoAsArray(tiposRecursoAux);
            formulario.setRolUsuarioAsArray(rolesAux);
            formulario.setContextoAsArray(contextosAux);
            formulario.setProcesoCognitivoAsArray(procesosAux);
            formulario.setAnyo(anyos);
            formulario.setMes(meses);
            formulario.setDia(dias);
            formulario.setHora(horas);
            formulario.setMinutos(minutos);
            formulario.setSegundosP1(segundosP1);
            formulario.setSegundosP2(segundosP2);
        } else if (valor instanceof DetalleUsoEducativoSubmitFormImpl) {
            DetalleUsoEducativoSubmitFormImpl formulario = (DetalleUsoEducativoSubmitFormImpl) valor;
            formulario.setIdiomasAsArray(idiomasAux);
            formulario.setTiempoApDescripcionAsArray(taDescripcionAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
            formulario.setEdadTipicaAsArray(rangosEdadAux);
            formulario.setTipoRecursoAsArray(tiposRecursoAux);
            formulario.setRolUsuarioAsArray(rolesAux);
            formulario.setContextoAsArray(contextosAux);
            formulario.setProcesoCognitivoAsArray(procesosAux);
            formulario.setAnyo(anyos);
            formulario.setMes(meses);
            formulario.setDia(dias);
            formulario.setHora(horas);
            formulario.setMinutos(minutos);
            formulario.setSegundosP1(segundosP1);
            formulario.setSegundosP2(segundosP2);
        } else if (valor instanceof UsoEducativoValidoVolverFormImpl) {
            UsoEducativoValidoVolverFormImpl formulario = (UsoEducativoValidoVolverFormImpl) valor;
            formulario.setIdiomasAsArray(idiomasAux);
            formulario.setTiempoApDescripcionAsArray(taDescripcionAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
            formulario.setEdadTipicaAsArray(rangosEdadAux);
            formulario.setTipoRecursoAsArray(tiposRecursoAux);
            formulario.setRolUsuarioAsArray(rolesAux);
            formulario.setContextoAsArray(contextosAux);
            formulario.setProcesoCognitivoAsArray(procesosAux);
            formulario.setAnyo(anyos);
            formulario.setMes(meses);
            formulario.setDia(dias);
            formulario.setHora(horas);
            formulario.setMinutos(minutos);
            formulario.setSegundosP1(segundosP1);
            formulario.setSegundosP2(segundosP2);
        } else if (valor instanceof UsoEducativoNoValidoVolverFormImpl) {
            UsoEducativoNoValidoVolverFormImpl formulario = (UsoEducativoNoValidoVolverFormImpl) valor;
            formulario.setIdiomasAsArray(idiomasAux);
            formulario.setTiempoApDescripcionAsArray(taDescripcionAux);
            formulario.setDescripcionesAsArray(descripcionesAux);
            formulario.setEdadTipicaAsArray(rangosEdadAux);
            formulario.setTipoRecursoAsArray(tiposRecursoAux);
            formulario.setRolUsuarioAsArray(rolesAux);
            formulario.setContextoAsArray(contextosAux);
            formulario.setProcesoCognitivoAsArray(procesosAux);
            formulario.setAnyo(anyos);
            formulario.setMes(meses);
            formulario.setDia(dias);
            formulario.setHora(horas);
            formulario.setMinutos(minutos);
            formulario.setSegundosP1(segundosP1);
            formulario.setSegundosP2(segundosP2);
        }

        tipoInteractividad = form.getTipoInteractividad();
        nivelInteractividad = form.getNivelInteractividad();
        densidadSemantica = form.getDensidadSemantica();
        dificultad = form.getDificultad();

        //Obtnemos los terminos de los ids seleccionados en todos los combos, y los guarda en los VO 
        dameTerminoId();

        //Comprobamos si los campos ha sido rellenados adecuadamente

        //TIEMPO DE APRENDIZAJE
        DuracionVO duracionVO = new DuracionVO();
        duracion = "";
        if (!dias.equals("") || !meses.equals("") || !anyos.equals("")) {
            duracion = "P";

            if (!anyos.equals(""))
                if (!anyos.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + anyos + "Y";

            if (!meses.equals(""))
                if (!meses.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + meses + "M";

            if (!dias.equals("")) {
                if (!dias.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + dias + "D";
            }
        }
        if (!horas.equals("") || !minutos.equals("") || !segundosP1.equals("") || !segundosP2.equals("")) {
            if (duracion.equals(""))
                duracion = "PT";
            else
                duracion = duracion + "T";
            if (!horas.equals(""))
                if (!horas.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + horas + "H";
            if (!minutos.equals(""))
                if (!minutos.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + minutos + "M";
            if (!segundosP1.equals(""))
                if (!segundosP1.matches("\\d{1,}"))
                    errorNoNumero = true;
                else if (segundosP2.equals(""))
                    duracion = duracion + segundosP1 + "S";
                else if (!segundosP2.matches("\\d{1,}"))
                    errorNoNumero = true;
                else
                    duracion = duracion + segundosP1 + "." + segundosP2 + "S";
            if (segundosP1.equals("") && !segundosP2.equals(""))
                errorSegundos = true;
        }
        duracionVO.setDuracion(duracion);
        //DESCRIPCIONES TIEMPO APRENDIZAJE
        DescripcionVO taDescripcionVO = new DescripcionVO();
        if (tiempoApDescripcion != null && tiempoApDescripcion.length != 0) {
            DescripcionVO taDescripcion = (DescripcionVO) tiempoApDescripcion[0];
            LangStringVO[] textos = taDescripcion.getTextos();
            ArrayList lista = new ArrayList();
            for (int j = 0; j < textos.length; j++) {
                LangStringVO lTADesc = (LangStringVO) textos[j];

                if (lTADesc != null) {
                    LangStringVO lLang = new LangStringVO();
                    String idioma = lTADesc.getIdioma();
                    String texto = lTADesc.getTexto();
                    if (((idioma != null) && (!idioma.equals("")))
                            && ((texto != null) && (!texto.trim().equals("")))) {
                        lLang.setIdioma(idioma);
                        lLang.setTexto(texto.trim());
                        lista.add(lLang);
                    } else {
                        if (idioma.equals("") && !texto.equals(""))
                            errorFaltaIdioma = true;
                        if (!idioma.equals("") && texto.equals(""))
                            errorFaltaTexto = true;
                    }
                }
            }
            LangStringVO[] lLangS = (LangStringVO[]) lista.toArray(new LangStringVO[lista.size()]);
            if (lLangS.length == 0)
                taDescripcionVO = null;
            else
                taDescripcionVO.setTextos(lLangS);
        } else
            taDescripcionVO = null;
        if ((duracion == null || duracion.equals("")) && taDescripcionVO == null)
            duracionVO = null;
        else
            duracionVO.setDescripcion(taDescripcionVO);

        auxAvanzado.getEducational()[0].setTiempoAprendizaje(duracionVO);

        //IDIOMAS
        ArrayList lTextos = new ArrayList();
        //if(!((idiomas.length == 1) && (idiomas[0].getTexto().equals("")))){
        if (idiomas != null && !((idiomas.length == 1) && (idiomas[0].getTexto().equals("")))) {
            for (int i = 0; i < idiomas.length; i++) {
                if (idiomas[i] != null) {
                    IdiomaVO idiomaVO = new IdiomaVO();
                    IdiomaVO idiVO = (IdiomaVO) (idiomas[i]);
                    if ((idiVO.getTexto() != null) && (!idiVO.getTexto().trim().equals(""))) {
                        idiomaVO.setTexto(idiVO.getTexto().trim());
                        lTextos.add(idiomaVO);
                    }
                } else
                    idiomas = null;
            }
            idiomas = (IdiomaVO[]) lTextos.toArray(new IdiomaVO[lTextos.size()]);
            if (idiomas.length == 0)
                idiomas = null;
        } else {
            idiomas = null;
        }

        auxAvanzado.getEducational()[0].setIdiomas(idiomas);

        //TIPOS RECURSOS
        ArrayList lTextosTR = new ArrayList();
        if (tiposRecurso != null && !((tiposRecurso.length == 1) && (tiposRecurso[0].getValor().equals("")))) {
            for (int i = 0; i < tiposRecurso.length; i++) {
                if (tiposRecurso[i] != null) {
                    SourceValueVO tipoRecursoVO = new SourceValueVO();
                    SourceValueVO tRecursoVO = (SourceValueVO) (tiposRecurso[i]);
                    if ((tRecursoVO.getValor() != null) && (!tRecursoVO.getValor().equals(""))) {
                        tipoRecursoVO.setValor(tRecursoVO.getValor());
                        tipoRecursoVO.setSource(source);
                        lTextosTR.add(tipoRecursoVO);
                    }
                } else
                    tiposRecurso = null;
            }
            tiposRecurso = (SourceValueVO[]) lTextosTR.toArray(new SourceValueVO[lTextosTR.size()]);
            if (tiposRecurso.length == 0)
                tiposRecurso = null;
        } else {
            tiposRecurso = null;
        }
        auxAvanzado.getEducational()[0].setTiposrecursoedu(tiposRecurso);

        //ROLES
        ArrayList lTextosR = new ArrayList();
        if (roles != null && !((roles.length == 1) && (roles[0].getValor().equals("")))) {
            for (int i = 0; i < roles.length; i++) {
                if (roles[i] != null) {
                    SourceValueVO rolesVO = new SourceValueVO();
                    SourceValueVO auxRolesVO = (SourceValueVO) (roles[i]);
                    if ((auxRolesVO.getValor() != null) && (!auxRolesVO.getValor().equals(""))) {
                        rolesVO.setValor(auxRolesVO.getValor());
                        rolesVO.setSource(source);
                        lTextosR.add(rolesVO);
                    }
                } else
                    roles = null;
            }
            roles = (SourceValueVO[]) lTextosR.toArray(new SourceValueVO[lTextosR.size()]);
            if (roles.length == 0)
                roles = null;
        } else {
            roles = null;
        }
        auxAvanzado.getEducational()[0].setDestinatarios(roles);

        //CONTEXTOS
        ArrayList lTextosC = new ArrayList();
        if (contextos != null && !((contextos.length == 1) && (contextos[0].getValor().equals("")))) {
            for (int i = 0; i < contextos.length; i++) {
                if (contextos[i] != null) {
                    SourceValueVO contextoVO = new SourceValueVO();
                    SourceValueVO auxContextoVO = (SourceValueVO) (contextos[i]);
                    if ((auxContextoVO.getValor() != null) && (!auxContextoVO.getValor().equals(""))) {
                        contextoVO.setValor(auxContextoVO.getValor());
                        contextoVO.setSource(source);
                        lTextosC.add(contextoVO);
                    }
                } else
                    contextos = null;
            }
            contextos = (SourceValueVO[]) lTextosC.toArray(new SourceValueVO[lTextosC.size()]);
            if (contextos.length == 0)
                contextos = null;
        } else {
            contextos = null;
        }
        auxAvanzado.getEducational()[0].setContextos(contextos);

        //PROCESOS COGNITIVOS
        ArrayList lTextosPC = new ArrayList();
        if (procesosCognitivos != null
                && !((procesosCognitivos.length == 1) && (procesosCognitivos[0].getValor().equals("")))) {
            for (int i = 0; i < procesosCognitivos.length; i++) {
                if (procesosCognitivos[i] != null) {
                    SourceValueVO procesoVO = new SourceValueVO();
                    SourceValueVO auxProcesoVO = (SourceValueVO) (procesosCognitivos[i]);
                    if ((auxProcesoVO.getValor() != null) && (!auxProcesoVO.getValor().equals(""))) {
                        procesoVO.setValor(auxProcesoVO.getValor());
                        procesoVO.setSource(source);
                        lTextosPC.add(procesoVO);
                    }
                } else
                    procesosCognitivos = null;
            }
            procesosCognitivos = (SourceValueVO[]) lTextosPC.toArray(new SourceValueVO[lTextosPC.size()]);
            if (procesosCognitivos.length == 0)
                procesosCognitivos = null;
        } else {
            procesosCognitivos = null;
        }
        auxAvanzado.getEducational()[0].setProcesoscognitivos(procesosCognitivos);

        //DESCRIPCIONES
        ArrayList listaDesc = new ArrayList();
        if (descripciones != null && descripciones.length != 0) {
            LangStringVO[] textos = descripciones[0].getTextos();
            if (descripciones.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().trim().equals("")) {
                descripciones = null;
            } else {
                for (int i = 0; i < descripciones.length; i++) {
                    if (descripciones[i] != null) {
                        ArrayList listDesc = new ArrayList();
                        DescripcionVO lDesc = (DescripcionVO) (descripciones[i]);
                        DescripcionVO lDescripciones = new DescripcionVO();
                        for (int j = 0; j < lDesc.getTextos().length; j++) {
                            LangStringVO lang = lDesc.getTextos()[j];
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.trim().equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto.trim());
                                listDesc.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;
                            }
                        }
                        if (listDesc.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listDesc
                                    .toArray(new LangStringVO[listDesc.size()]);
                            lDescripciones.setTextos(langs);
                            listaDesc.add(lDescripciones);
                        }
                    }
                }
                if (listaDesc.size() == 0)
                    descripciones = null;
                else
                    descripciones = (DescripcionVO[]) listaDesc.toArray(new DescripcionVO[listaDesc.size()]);
            }
        } else {
            descripciones = null;
        }
        auxAvanzado.getEducational()[0].setDescripciones(descripciones);

        //RANGOS DE EDAD O EDAD TIPICA
        ArrayList listaRangos = null;
        if (rangosEdad != null && rangosEdad.length != 0) {
            LangStringVO[] textos = rangosEdad[0].getTextos();
            if (rangosEdad.length == 1 && textos.length == 1 & textos[0].getIdioma().equals("")
                    && textos[0].getTexto().trim().equals("")) {
                rangosEdad = null;
            } else {
                listaRangos = new ArrayList();
                for (int i = 0; i < rangosEdad.length; i++) {
                    if (rangosEdad[i] != null) {
                        ArrayList listRangos = new ArrayList();
                        RangoEdadVO lRangos = (RangoEdadVO) (rangosEdad[i]);
                        RangoEdadVO lRangosEdad = new RangoEdadVO();
                        for (int j = 0; j < lRangos.getTextos().length; j++) {
                            LangStringVO lang = (LangStringVO) (lRangos.getTextos()[j]);
                            LangStringVO lLang = new LangStringVO();
                            String idioma = lang.getIdioma();
                            String texto = lang.getTexto();
                            if (((idioma != null) && (!idioma.equals("")))
                                    && ((texto != null) && (!texto.trim().equals("")))) {
                                lLang.setIdioma(idioma);
                                lLang.setTexto(texto.trim());
                                listRangos.add(lLang);
                            } else {
                                if (idioma.equals("") && !texto.equals(""))
                                    errorFaltaIdioma = true;
                                if (!idioma.equals("") && texto.equals(""))
                                    errorFaltaTexto = true;

                            }
                        }
                        if (listRangos.size() != 0) {
                            LangStringVO[] langs = (LangStringVO[]) listRangos
                                    .toArray(new LangStringVO[listRangos.size()]);
                            lRangosEdad.setTextos(langs);
                            listaRangos.add(lRangosEdad);
                        }
                    }
                }
                if (listaRangos.size() == 0)
                    rangosEdad = null;
                else
                    rangosEdad = (RangoEdadVO[]) listaRangos.toArray(new RangoEdadVO[listaRangos.size()]);
            }
        } else
            rangosEdad = null;

        auxAvanzado.getEducational()[0].setRangoedades(rangosEdad);

        //TIPO INTERACTIVIDAD
        SourceValueVO tipoInteractividadSV = new SourceValueVO();
        if ((tipoInteractividad != null) && (!tipoInteractividad.equals(""))) {
            tipoInteractividadSV.setValor(tipoInteractividad);
            tipoInteractividadSV.setSource(source);
        } else {
            tipoInteractividadSV = null;
        }
        auxAvanzado.getEducational()[0].setTipoDeInteractividad(tipoInteractividadSV);

        //NIVEL AGREGACION
        SourceValueVO nivel = new SourceValueVO();
        if ((nivelInteractividad != null) && (!nivelInteractividad.equals(""))) {
            nivel.setSource(source);
            nivel.setValor(nivelInteractividad);
        } else {
            nivel = null;
        }
        auxAvanzado.getEducational()[0].setNivelInteractividad(nivel);

        //DENSIDAD SEMANTICA
        SourceValueVO densidad = new SourceValueVO();
        if ((densidadSemantica != null) && (!densidadSemantica.equals(""))) {
            densidad.setSource(source);
            densidad.setValor(densidadSemantica);
        } else {
            densidad = null;
        }
        auxAvanzado.getEducational()[0].setDensidadSemantica(densidad);

        //DIFICULTAD
        SourceValueVO dificultadSV = new SourceValueVO();
        if ((dificultad != null) && (!dificultad.equals(""))) {
            dificultadSV.setSource(source);
            dificultadSV.setValor(dificultad);
        } else {
            dificultadSV = null;
        }
        auxAvanzado.getEducational()[0].setDificultad(dificultadSV);

        AvEducationalVO eduAux = auxAvanzado.getEducational()[0];

        if (eduAux.getContextos() == null && eduAux.getDensidadSemantica() == null
                && eduAux.getDescripciones() == null && eduAux.getDestinatarios() == null
                && eduAux.getDificultad() == null && eduAux.getIdiomas() == null
                && eduAux.getNivelInteractividad() == null && eduAux.getProcesoscognitivos() == null
                && eduAux.getRangoedades() == null && eduAux.getTiempoAprendizaje() == null
                && eduAux.getTipoDeInteractividad() == null && eduAux.getTiposrecursoedu() == null)
            auxAvanzado = null;

    } catch (org.acegisecurity.AccessDeniedException ad) {
        logger.error("Error de Acceso " + ad);
        throw new java.lang.Exception("detalle.uso.edu", ad);

    } catch (Exception e) {
        logger.error(
                "Error en catalogadorWeb, categora Detall Uso Educativo, metodo guardarUsoEducativo " + e);
        throw new java.lang.Exception("detalle.uso.edu", e);

    }
    if (!errorFaltaIdioma && !errorFaltaTexto && !errorNoNumero && !errorSegundos) {
        try {
            //         Cargamos el objeto de sesion
            if (catalogadorAvSession.getMDSesion() == null) {
                if (auxAvanzado != null)
                    catalogadorAvSession.setMDSesion(auxAvanzado);

            } else {
                AvEducationalVO[] educaciones = catalogadorAvSession.getMDSesion().getEducational();

                //              comprobamos que educaciones no sea null, si es null nos creamos uno   
                if (educaciones == null) {
                    if (auxAvanzado != null)
                        catalogadorAvSession.getMDSesion().setEducational(auxAvanzado.getEducational());
                } else {
                    //creamos uno mas (cogemos la longitud de las educaciones pues el nuevo indice, si teniamos 4 educaciones los indices
                    //iban de 0 a 3 el indice para la nueva educacion seria 4 y ahora tendriamos 5 educaciones con indices de 0 a 4)
                    if (educaciones.length == iEdu) {//GUARDAR CUANDO HEMOS PULSADO BOTON CREAR
                        ArrayList listaEdu = new ArrayList();
                        for (int i = 0; i < educaciones.length; i++)
                            listaEdu.add(educaciones[i]);

                        if (auxAvanzado != null && auxAvanzado.getEducational()[0] != null) {
                            listaEdu.add(auxAvanzado.getEducational()[0]);
                        }

                        AvEducationalVO[] educacionesAux = (AvEducationalVO[]) listaEdu
                                .toArray(new AvEducationalVO[0]);
                        catalogadorAvSession.getMDSesion().setEducational(educacionesAux);
                    } else {//GUARDAR CUANDO HEMOS PULSADO BOTON MODIFICAR
                        ArrayList listaEdu = new ArrayList();
                        for (int i = 0; i < educaciones.length; i++) {
                            if (iEdu == i) {
                                if (auxAvanzado != null && auxAvanzado.getEducational()[0] != null)
                                    listaEdu.add(auxAvanzado.getEducational()[0]);
                            } else
                                listaEdu.add(educaciones[i]);
                        }

                        AvEducationalVO[] educacionesAux = (AvEducationalVO[]) listaEdu
                                .toArray(new AvEducationalVO[0]);
                        catalogadorAvSession.getMDSesion().setEducational(educacionesAux);
                    }
                }
            }
        } catch (Exception e) {
            logger.error(
                    "Error en catalogadorWeb, categora Detall Uso Educativo, metodo guardarUsoEducativo " + e);
            throw new java.lang.Exception("detalle.uso.edu", e);
        }

    } else {
        if (errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma_texto}");
        else if (!errorFaltaIdioma && errorFaltaTexto)
            throw new ValidatorException("{general.error.texto}");
        else if (errorFaltaIdioma && !errorFaltaTexto)
            throw new ValidatorException("{general.error.idioma}");
        else if (errorNoNumero)
            throw new ValidatorException("{educacion.error.NoNumero}");
        else if (errorSegundos)
            throw new ValidatorException("{educacion.error.Segundos}");
    }

}