Example usage for java.util ArrayList set

List of usage examples for java.util ArrayList set

Introduction

In this page you can find the example usage for java.util ArrayList set.

Prototype

public E set(int index, E element) 

Source Link

Document

Replaces the element at the specified position in this list with the specified element.

Usage

From source file:nl.systemsgenetics.cellTypeSpecificAlleleSpecificExpression.PhasedEntry.java

private Pair<HashMap<String, ArrayList<IndividualSnpData>>, ArrayList<GenomicRegion>> addPhasingToSNPHashMap(
        HashMap<String, ArrayList<IndividualSnpData>> snpHashMap, String couplingLoc,
        ArrayList<GenomicRegion> genomicRegions, String vcfLoc) throws IOException {

    String tabixLoc = vcfLoc + ".tbi";

    VcfGenotypeData genotypeData = new VcfGenotypeData(new File(vcfLoc), new File(tabixLoc),
            GlobalVariables.variantProb);

    //make a Hashmap with the coupling information correct.
    String[] sampleNames = genotypeData.getSampleNames();
    ArrayList<String> couplingList = UtilityMethods.readFileIntoStringArrayList(couplingLoc);

    HashMap<String, Integer> couplingMap = new HashMap<String, Integer>();

    for (String iSample : couplingList) {
        String[] tempCouple = iSample.split("\t");
        boolean found = false;
        for (int i = 0; i < sampleNames.length; i++) {
            if (tempCouple[0].equals(sampleNames[i])) {
                couplingMap.put(tempCouple[1], i);
                found = true;/* www .  j  av  a2 s . c  o m*/
                break;
            }
        }

        if (!found && GlobalVariables.verbosity >= 10) {
            System.out.println("Couldn't find individual " + tempCouple[0]
                    + " in sampleNames, continueing with the next.");
            System.out.println(Arrays.toString(sampleNames));
        }
    }

    if (GlobalVariables.verbosity >= 100) {
        System.out.println("final coupling map:");
        System.out.println(couplingMap.toString());
    }

    int snpsDone = 0;
    for (int regionIndicator = 0; regionIndicator < genomicRegions.size(); regionIndicator++) {

        GenomicRegion iRegion = genomicRegions.get(regionIndicator);

        Iterable<GeneticVariant> VariantsInRegion;
        VariantsInRegion = genotypeData.getVariantsByRange(iRegion.getSequence(), iRegion.getTestStart() - 1, //minus one because bigger than.
                iRegion.getTestEnd());

        ArrayList<String> snpsInThisTestRegion = new ArrayList<String>();

        for (GeneticVariant currentVariant : VariantsInRegion) {

            if (GlobalVariables.verbosity >= 100) {
                System.out.println("Starting " + currentVariant.getPrimaryVariantId());
            }

            if (!(currentVariant.isSnp() && currentVariant.isBiallelic())) {
                //not a valid variant
                if (GlobalVariables.verbosity >= 100) {
                    System.out.println("continueing because not a valid variant");
                }
                continue;
            }

            String snpName = currentVariant.getPrimaryVariantId();
            String chr = currentVariant.getSequenceName();
            String posString = Integer.toString(currentVariant.getStartPos());

            ArrayList<IndividualSnpData> oldSnpData = snpHashMap.get(chr + ":" + posString);

            if (oldSnpData == null) {
                if (GlobalVariables.verbosity >= 100) {
                    System.out.println(
                            "Couldn't find SNP: " + snpName + " in AS reads, continueing with the next.");
                }
                continue;
            }

            if (!oldSnpData.get(0).getSnpName().equals(snpName)) {
                if (GlobalVariables.verbosity >= 10) {
                    System.out.println("Couldn't find SNP: " + snpName + " in the correct position: " + chr
                            + ":" + posString);
                    System.out.println(oldSnpData.get(0).getSnpName());
                }
                continue;
            }

            snpsInThisTestRegion.add(chr + ":" + posString);

            //If phasing is already add to this variant we may as well stop right here.
            if (oldSnpData.get(0).hasPhasing()) {
                //this assumes all individuals in oldSNPdata are phased at the same time.
                //currently this is the case, but if it changes it, it might break.
                continue;
            }

            ArrayList<IndividualSnpData> newSnpData = new ArrayList<IndividualSnpData>();
            List<Boolean> SamplePhasing = currentVariant.getSamplePhasing();
            List<Alleles> Variants = currentVariant.getSampleVariants();

            boolean passSNP = false;

            for (IndividualSnpData iAS : oldSnpData) {
                int i;

                i = couplingMap.get(iAS.getSampleName());

                //make sure there is phasing data available:
                if (SamplePhasing.get(i)) {

                    char Alt = iAS.getAlternative();

                    //Genotype IO used the phasing boolean, and the 
                    //order of the allele characters for the phasing.
                    char[] alleleChars;
                    alleleChars = Variants.get(i).getAllelesAsChars();

                    if (GlobalVariables.verbosity >= 100) {
                        System.out.println(Arrays.toString(alleleChars));
                    }

                    //first assuming the allele is reference
                    //if not the cse, then we change it.
                    int first = 0;
                    int second = 0;

                    if (alleleChars[0] == Alt) {
                        first = 1;
                    }
                    if (alleleChars[1] == Alt) {
                        second = 1;
                    }

                    try {
                        iAS.setPhasing(first, second);
                    } catch (IllegalDataException e) {
                        if (GlobalVariables.verbosity >= 10 && !passSNP) {
                            System.out.println("Did not set phasing for variant" + snpName
                                    + " phasing does not match genotype.");
                        }
                        passSNP = true;

                    }
                }
                newSnpData.add(iAS);
            }

            //something went wrong in the SNP with phasing information and genotype from other data.
            if (passSNP) {
                newSnpData = oldSnpData;
            }

            //overwrite this into the snpHashMap

            snpHashMap.put(chr + ":" + posString, newSnpData);
            snpsDone++;
        }

        iRegion.setSnpInRegions(snpsInThisTestRegion);

        genomicRegions.set(regionIndicator, iRegion);

        if (GlobalVariables.verbosity >= 10 && regionIndicator % 1000 == 0) {
            System.out.println("Finished adding phasing to " + Integer.toString(regionIndicator) + " regions, "
                    + Integer.toString(snpsDone) + " snps.");
        }
    }

    //so I can output it easily
    Pair<HashMap<String, ArrayList<IndividualSnpData>>, ArrayList<GenomicRegion>> returnPair;

    returnPair = new Pair<HashMap<String, ArrayList<IndividualSnpData>>, ArrayList<GenomicRegion>>(snpHashMap,
            genomicRegions);

    return returnPair;
}

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

private void cambioFormulario(HttpServletRequest request, int[] longitudTextosDesc, int[] longitudTextosPCla,
        int[] longitudTextosAmbitos, int longitudDescripciones, int longitudPalabrasClave, int longitudAmbitos,
        int longitudIdentificadores, int longitudIdiomas, int longitudTitulo) throws Exception {

    identificadores = new IdentificadorVO[longitudIdentificadores];//form.getIdentificadores().size()
    titulos = new TituloVO[1];
    idiomas = new IdiomaVO[longitudIdiomas];//form.getIdiomas().size()
    descripciones = new DescripcionVO[longitudDescripciones];//form.getDescripciones().size()
    caracteristicas = new Caracteristica[longitudDescripciones][];
    palabrasClave = new PalabraClaveVO[longitudPalabrasClave];//form.getPalabrasClave().size()
    ambitos = new AmbitoVO[longitudAmbitos];
    ArrayList[] textoDescripciones = new ArrayList[longitudDescripciones];
    ArrayList[] caractDescrpciones = new ArrayList[longitudDescripciones];
    ArrayList[] idiomaDescripciones = new ArrayList[longitudDescripciones];

    ArrayList[] textoPalabrasClave = new ArrayList[longitudPalabrasClave];
    ArrayList[] idiomaPalabrasClave = new ArrayList[longitudPalabrasClave];
    ArrayList[] textoAmbito = new ArrayList[longitudAmbitos];//form.getAmbitos().size()
    ArrayList[] idiomaAmbito = new ArrayList[longitudAmbitos];
    String[] catalogos = new String[longitudIdentificadores];
    String[] entradas = new String[longitudIdentificadores];
    String[] textoTitulo = new String[longitudTitulo];
    String[] idiomaTitulo = new String[longitudTitulo];
    String[] idiomaValor = new String[longitudIdiomas];
    for (Enumeration names = request.getParameterNames(); names.hasMoreElements();) {
        String name = String.valueOf(names.nextElement());
        if (name.startsWith("Id")) {
            if (name.startsWith("IdCat")) {
                int i = Integer.parseInt(name.substring(5, name.length()));
                catalogos[i] = request.getParameter(name);
            }//from  w  ww  . ja  v  a 2s  .c  o m

            if (name.startsWith("IdEnt")) {
                int i = Integer.parseInt(name.substring(5, name.length()));
                entradas[i] = request.getParameter(name);
            }
        }
        if (name.startsWith("Tit")) {
            if (name.startsWith("TitTex")) {
                int i = Integer.parseInt(name.substring(6, name.length()));
                textoTitulo[i] = request.getParameter(name);
            }

            if (name.startsWith("TitIdio")) {
                int i = Integer.parseInt(name.substring(7, name.length()));
                idiomaTitulo[i] = request.getParameter(name);
            }
        }
        if (name.startsWith("Idio")) {
            int i = Integer.parseInt(name.substring(4, name.length()));
            idiomaValor[i] = request.getParameter(name);
        }
        if (name.startsWith("Des")) {
            String[] namePartido = name.split("_");
            int i = Integer.parseInt(namePartido[0].substring(3, namePartido[0].length()));
            if (namePartido[1].startsWith("Tex")) {
                int j = Integer.parseInt(namePartido[1].substring(3, namePartido[1].length()));
                ArrayList lDesc = textoDescripciones[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add("");
                }

                lDesc.set(j, request.getParameter(name));
                textoDescripciones[i] = lDesc;
            } else if (namePartido[1].startsWith("Idio")) {//Idio
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lDesc = idiomaDescripciones[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add("");
                }

                lDesc.set(j, request.getParameter(name));
                idiomaDescripciones[i] = lDesc;
            } else { //caracteristicas
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lCarac = caractDescrpciones[i];
                if (lCarac == null) {
                    lCarac = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lCarac.add(Caracteristica.getInstance("", null)); //creo un objeto caracteristica vacio
                }
                if (namePartido[1].startsWith("CDim"))//Dimension
                    ((Caracteristica) lCarac.get(j)).setDimension(request.getParameter(name));
                else if (namePartido[1].startsWith("CCol"))//Color
                    ((Caracteristica) lCarac.get(j)).setModoColor(request.getParameter(name));
                else if (namePartido[1].startsWith("CBan"))//Banda Sonora
                    ((Caracteristica) lCarac.get(j)).setBandaSonora(request.getParameter(name));
                else if (namePartido[1].startsWith("CFor"))//Formato
                    ((Caracteristica) lCarac.get(j)).setFormato(request.getParameter(name));
                else if (namePartido[1].startsWith("CTip"))//Tipo Plano
                    ((Caracteristica) lCarac.get(j)).setTipoPlano(request.getParameter(name));
                else if (namePartido[1].startsWith("CLuz"))//Luz
                    ((Caracteristica) lCarac.get(j)).setLuz(request.getParameter(name));
                else if (namePartido[1].startsWith("CEst"))//Estructura Formal
                    ((Caracteristica) lCarac.get(j)).setEstructuraFormal(request.getParameter(name));
                else if (namePartido[1].startsWith("CAng"))//Angulacion
                    ((Caracteristica) lCarac.get(j)).setAngulacion(request.getParameter(name));
                else //Resolucion
                    ((Caracteristica) lCarac.get(j)).setResolucion(request.getParameter(name));

                caractDescrpciones[i] = lCarac;
            }
        } else if (name.startsWith("Pcla")) {
            String[] namePartido = name.split("_");
            int i = Integer.parseInt(namePartido[0].substring(4, namePartido[0].length()));
            if (namePartido[1].startsWith("Tex")) {
                int j = Integer.parseInt(namePartido[1].substring(3, namePartido[1].length()));
                ArrayList lPCla = textoPalabrasClave[i];
                if (lPCla == null) {
                    lPCla = new ArrayList();
                    for (int k = 0; k < longitudTextosPCla[i]; k++)
                        lPCla.add("");
                }

                lPCla.set(j, request.getParameter(name));
                textoPalabrasClave[i] = lPCla;
            } else {//Idio
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lPCla = idiomaPalabrasClave[i];
                if (lPCla == null) {
                    lPCla = new ArrayList();
                    for (int k = 0; k < longitudTextosPCla[i]; k++)
                        lPCla.add("");
                }

                lPCla.set(j, request.getParameter(name));
                idiomaPalabrasClave[i] = lPCla;
            }
        } else if (name.startsWith("Amb")) {
            String[] namePartido = name.split("_");
            int i = Integer.parseInt(namePartido[0].substring(3, namePartido[0].length()));
            if (namePartido[1].startsWith("Tex")) {
                int j = Integer.parseInt(namePartido[1].substring(3, namePartido[1].length()));
                ArrayList lAmb = textoAmbito[i];
                if (lAmb == null) {
                    lAmb = new ArrayList();

                    for (int k = 0; k < longitudTextosAmbitos[i]; k++)
                        lAmb.add("");
                }

                lAmb.set(j, request.getParameter(name));
                textoAmbito[i] = lAmb;
            } else {//Idio
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lAmb = idiomaAmbito[i];
                if (lAmb == null) {
                    lAmb = new ArrayList();
                    for (int k = 0; k < longitudTextosAmbitos[i]; k++)
                        lAmb.add("");
                }

                lAmb.set(j, request.getParameter(name));
                idiomaAmbito[i] = lAmb;
            }
        }
    }

    //identificadores
    for (int i = 0; i < catalogos.length; i++) {
        IdentificadorVO idVO = new IdentificadorVO();
        String catalogosI = catalogos[i] != null ? catalogos[i] : "";
        idVO.setCatalogo(catalogosI.trim());
        String entradasI = entradas[i] != null ? entradas[i] : "";
        idVO.setEntrada(entradasI.trim());
        identificadores[i] = idVO;
    }

    //titulo
    TituloVO titVO = new TituloVO();
    LangStringVO[] aLangTitulo = new LangStringVO[textoTitulo.length];
    for (int i = 0; i < textoTitulo.length; i++) {
        LangStringVO langTitulo = new LangStringVO();
        String textoTituI = textoTitulo[i] != null ? textoTitulo[i] : "";
        langTitulo.setTexto(textoTituI.trim());
        String idiomaTituI = idiomaTitulo[i] != null ? idiomaTitulo[i] : "";
        langTitulo.setIdioma(idiomaTituI);
        aLangTitulo[i] = langTitulo;
    }
    titVO.setTextos(aLangTitulo);
    titulos[0] = titVO;

    //idioma
    for (int i = 0; i < idiomaValor.length; i++) {
        IdiomaVO idioVO = new IdiomaVO();
        idioVO.setTexto(idiomaValor[i]);
        idiomas[i] = idioVO;
    }

    //caracteristicas
    for (int i = 0; i < caractDescrpciones.length; i++) {
        caracteristicas[i] = (Caracteristica[]) caractDescrpciones[i].toArray(new Caracteristica[0]);
    }
    //descripciones
    I18n i18n = I18n.getInstance();

    for (int i = 0; i < textoDescripciones.length; i++) {
        DescripcionVO descVO = new DescripcionVO();
        if (textoDescripciones[i] != null) {
            LangStringVO[] aLangDesc = new LangStringVO[textoDescripciones[i].size()];
            for (int j = 0; j < textoDescripciones[i].size(); j++) {
                LangStringVO langDesc = new LangStringVO();
                String idiomaDescIJ = (idiomaDescripciones[i].get(j) != null ? idiomaDescripciones[i].get(j)
                        : "").toString();
                langDesc.setIdioma(idiomaDescIJ);

                String textoDescIJ;
                String idioma = (String) listaIdiomas.get(idiomaDescIJ);
                if (idioma == null)
                    idioma = this.getCatalogadorAvSession(request).getIdioma();

                if (caracteristicas[i][j] != null && !caracteristicas[i][j].getVacio() && idioma != null) {
                    String[] captions = i18n.getResource("caracteristicas.captions", "application-resources",
                            new Locale(idioma)).split(",");
                    Caracteristica caractAux = caracteristicas[i][j];
                    StringBuffer sb = new StringBuffer();
                    sb.append(captions[0]);

                    // busco las traducciones correspondientes a cada idioma
                    String[] codigos = caractAux.getCodigos();
                    TerminoVO[] terminosTrad = this.getSrvVocabulariosControladosService()
                            .crearTraduccionAIdioma(codigos, idioma);

                    int indice = 0;
                    if (caractAux.getResolucion() != null && !caractAux.getResolucion().equals(""))
                        sb.append(captions[1]).append(" (").append(caractAux.getResolucion()).append("),");
                    if (caractAux.getDimension() != null && !caractAux.getDimension().equals("")
                            && codigos[0] != "") {
                        sb.append(captions[2]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getModoColor() != null && !caractAux.getModoColor().equals("")
                            && codigos[1] != "") {
                        sb.append(captions[3]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getBandaSonora() != null && !caractAux.getBandaSonora().equals("")
                            && codigos[2] != "") {
                        sb.append(captions[4]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getFormato() != null && !caractAux.getFormato().equals("")
                            && codigos[3] != "") {
                        sb.append(captions[5]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getTipoPlano() != null && !caractAux.getTipoPlano().equals("")
                            && codigos[4] != "") {
                        sb.append(captions[6]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getLuz() != null && !caractAux.getLuz().equals("") && codigos[5] != "") {
                        sb.append(captions[7]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getEstructuraFormal() != null && !caractAux.getEstructuraFormal().equals("")
                            && codigos[6] != "") {
                        sb.append(captions[8]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }
                    if (caractAux.getAngulacion() != null && !caractAux.getAngulacion().equals("")
                            && codigos[7] != "") {
                        sb.append(captions[9]).append(" (").append(terminosTrad[indice].getNomTermino())
                                .append("),");
                        indice++;
                    }

                    textoDescIJ = sb.toString();
                    textoDescIJ = textoDescIJ.substring(0, textoDescIJ.length() - 1);// le quito la ultima coma
                } else {
                    textoDescIJ = (textoDescripciones[i].get(j) != null ? textoDescripciones[i].get(j) : "")
                            .toString();
                }
                langDesc.setTexto(textoDescIJ.trim());

                aLangDesc[j] = langDesc;
            }
            descVO.setTextos(aLangDesc);
        } else {
            LangStringVO[] aLangString = new LangStringVO[1];
            LangStringVO langString = new LangStringVO();
            langString.setIdioma("");
            langString.setTexto("");
            aLangString[0] = langString;
            descVO.setTextos(aLangString);
        }
        descripciones[i] = descVO;
    }

    //palabras clave

    for (int i = 0; i < textoPalabrasClave.length; i++) {
        PalabraClaveVO pClaVO = new PalabraClaveVO();
        if (textoPalabrasClave[i] != null) {
            LangStringVO[] aLangPCla = new LangStringVO[textoPalabrasClave[i].size()];
            for (int j = 0; j < textoPalabrasClave[i].size(); j++) {
                LangStringVO langPCla = new LangStringVO();
                String textoPalClaveIJ = (textoPalabrasClave[i].get(j) != null ? textoPalabrasClave[i].get(j)
                        : "").toString();
                langPCla.setTexto(textoPalClaveIJ.trim());
                String idiomaPalClaveIJ = (idiomaPalabrasClave[i].get(j) != null ? idiomaPalabrasClave[i].get(j)
                        : "").toString();
                langPCla.setIdioma(idiomaPalClaveIJ);
                aLangPCla[j] = langPCla;
            }
            pClaVO.setTextos(aLangPCla);

        } else {
            LangStringVO[] aLangString = new LangStringVO[1];
            LangStringVO langString = new LangStringVO();
            langString.setIdioma("");
            langString.setTexto("");
            aLangString[0] = langString;
            pClaVO.setTextos(aLangString);
        }
        palabrasClave[i] = pClaVO;
    }
    //         form.setPalabrasClaveAsArray(palabrasClave); 
    //ambitos

    for (int i = 0; i < textoAmbito.length; i++) {
        AmbitoVO ambVO = new AmbitoVO();
        if (textoAmbito[i] != null) {
            LangStringVO[] aLangAmb = new LangStringVO[textoAmbito[i].size()];
            for (int j = 0; j < textoAmbito[i].size(); j++) {
                LangStringVO langAmb = new LangStringVO();
                String textoAmbitoIJ = (textoAmbito[i].get(j) != null ? textoAmbito[i].get(j) : "").toString();
                langAmb.setTexto(textoAmbitoIJ.trim());
                String idiomaAmbitoIJ = (idiomaAmbito[i].get(j) != null ? idiomaAmbito[i].get(j) : "")
                        .toString();
                langAmb.setIdioma(idiomaAmbitoIJ);
                aLangAmb[j] = langAmb;
            }
            ambVO.setTextos(aLangAmb);

        } else {
            LangStringVO[] aLangString = new LangStringVO[1];
            LangStringVO langString = new LangStringVO();
            langString.setIdioma("");
            langString.setTexto("");
            aLangString[0] = langString;
            ambVO.setTextos(aLangString);
        }
        ambitos[i] = ambVO;
    }
    //       form.setAmbitosAsArray(ambitos);
}

From source file:es.pode.publicacion.negocio.servicios.SrvPublicacionServiceImpl.java

private String comprobarVocabulariosYFechas(Manifest manifest) throws Exception {
    logger.debug("AOV: Recogiendo vocabularios controlados...");
    String vocabControlados = getPropertyValue("vocabulariosControlados");
    //      String vocabControlados = "1.3,1.7,1.8,2.2,2.3.1,3.2.1,3.4,4.1,4.4.1.1,4.4.1.2,5.1,5.2,5.3,5.4,5.5,5.6,5.8,5.11,5.12,6.1,6.2,6.4.1,7.1,9.1";
    String[] vocabularios = vocabControlados.split(",");
    logger.debug("AOV: Vamos a obtener los valores de los vocabularios");

    SrvVocabulariosControladosService vocabSrv = this.getSrvVocabulariosControladosService();
    VocabularioVO[] vocabVO = vocabSrv.obtenerCombos(vocabularios, "en");

    /********vocabularios de general********/
    VocabularioVO idiomaV = vocabVO[0];//1.3
    ArrayList aIdiomaV = this.obtenValoresVocabulario(idiomaV);

    VocabularioVO estructuraV = vocabVO[1];//1.7
    ArrayList aEstructuraV = this.obtenValoresVocabulario(estructuraV);

    VocabularioVO nivelAgregacionV = vocabVO[2];//1.8
    ArrayList aNivelAgregacionV = this.obtenValoresVocabulario(nivelAgregacionV);

    /********vocabularios de ciclo de vida********/
    VocabularioVO estadoV = vocabVO[3];//2.2
    ArrayList aEstadoV = this.obtenValoresVocabulario(estadoV);

    VocabularioVO tipoContribucionV = vocabVO[4];//2.3.1
    ArrayList aTipoContribucionV = this.obtenValoresVocabulario(tipoContribucionV);

    /********vocabularios de meta-metadatos********/
    VocabularioVO tipoContribucionMetaV = vocabVO[5];//3.2.1
    ArrayList aTipoContribucionMetaV = this.obtenValoresVocabulario(tipoContribucionMetaV);

    VocabularioVO idiomaCatalogacionV = vocabVO[6];//3.4
    ArrayList aIdiomaCatalogacionV = this.obtenValoresVocabulario(idiomaCatalogacionV);

    /********vocabularios de tecnica********/
    VocabularioVO formatoV = vocabVO[7];//4.1
    ArrayList aFormatoV = this.obtenValoresVocabulario(formatoV);

    VocabularioVO tipoRequisitoV = vocabVO[8];//4.4.1.1
    ArrayList aTipoRequisitoV = this.obtenValoresVocabulario(tipoRequisitoV);

    VocabularioVO nombreRequisitoV = vocabVO[9];//4.4.1.2
    ArrayList aNombreRequisitosV = this.obtenValoresVocabulario(nombreRequisitoV);

    /********vocabularios de uso educativo********/
    VocabularioVO tipoInteractividadV = vocabVO[10];//5.1
    ArrayList aTipoInteractividadV = this.obtenValoresVocabulario(tipoInteractividadV);

    VocabularioVO tipoRecursoV = vocabVO[11];//5.2
    ArrayList aTipoRecursoV = this.obtenValoresVocabulario(tipoRecursoV);

    VocabularioVO nivelInteractividadV = vocabVO[12];//5.3
    ArrayList aNivelInteractividadV = this.obtenValoresVocabulario(nivelInteractividadV);

    VocabularioVO densidadSemanticaV = vocabVO[13];//5.4
    ArrayList aDensidadSemanticaV = this.obtenValoresVocabulario(densidadSemanticaV);

    VocabularioVO destinatarioV = vocabVO[14];//5.5
    ArrayList aDestinatarioV = this.obtenValoresVocabulario(destinatarioV);

    VocabularioVO contextoV = vocabVO[15];//5.6
    ArrayList aContextoV = this.obtenValoresVocabulario(contextoV);

    VocabularioVO dificultadV = vocabVO[16];//5.8
    ArrayList aDificultadV = this.obtenValoresVocabulario(dificultadV);

    VocabularioVO idiomaDestinatarioV = vocabVO[17];//5.11
    ArrayList aIdiomaDestinatarioV = this.obtenValoresVocabulario(idiomaDestinatarioV);

    VocabularioVO procesoCognitivoV = vocabVO[18];//5.12
    ArrayList aProcesoCognitivoV = this.obtenValoresVocabulario(procesoCognitivoV);

    /********vocabularios de derechos********/
    VocabularioVO costeV = vocabVO[19];//6.1
    ArrayList aCosteV = this.obtenValoresVocabulario(costeV);

    VocabularioVO derechosAutorV = vocabVO[20];//6.2
    ArrayList aDerechosAutorV = this.obtenValoresVocabulario(derechosAutorV);

    VocabularioVO tipoAccesoV = vocabVO[21];//6.4.1
    ArrayList aTipoAccesoV = this.obtenValoresVocabulario(tipoAccesoV);

    /********vocabularios de relacion********/
    VocabularioVO tipoRelacionV = vocabVO[22];//7.1
    ArrayList aTipoRelacionV = this.obtenValoresVocabulario(tipoRelacionV);

    /********vocabularios de clasificacion********/
    VocabularioVO propositoV = vocabVO[23];//9.1
    ArrayList aPropositoV = this.obtenValoresVocabulario(propositoV);

    StringBuffer resultado = new StringBuffer("");

    ManifestAgrega manifestAgrega = new ManifestAgrega(manifest);

    HashMap lomesMap = manifestAgrega.recuperarLomesMap();

    Set padreLomes = lomesMap.keySet();
    Object[] padresLomesArray = padreLomes.toArray();

    for (int i = 0; i < padresLomesArray.length; i++) {
        boolean haCambiado = false;
        String idPadre = (String) padresLomesArray[i];
        Lom lomes = (Lom) lomesMap.get(padresLomesArray[i]);
        LomAgrega lomAgrega = new LomAgrega(lomes);

        //         /**********************General**********************/
        logger.debug("Comprobando campos de la categora General");
        GeneralAgrega generalAgrega = lomAgrega.getGeneralAgrega();
        List idiomas = generalAgrega.getIdiomasAv();

        boolean cambioIdiomas = false;
        ArrayList new_Idiomas = new ArrayList();
        for (int k = 0; k < idiomas.size(); k++) {
            String idioma = (String) idiomas.get(k);
            if (idioma != null && !aIdiomaV.contains(idioma)) {
                //            if(idioma !=null){
                logger.debug("Valor erroneo de idioma: " + idioma + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.idioma")).append(idioma).append(SPLITTER);
                haCambiado = true;//from   w  w w.j a v  a  2  s .  co m
                cambioIdiomas = true;
            } else {
                new_Idiomas.add(idioma);
            }
        }
        if (cambioIdiomas)
            generalAgrega.setIdiomasAv(new_Idiomas);

        String estructura = generalAgrega.getEstructuraAv();
        if (estructura != null && !aEstructuraV.contains(estructura)) {
            //         if(estructura !=null){
            logger.debug("Valor erroneo de estructura: " + estructura + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.estructura")).append(estructura)
                    .append(SPLITTER);

            generalAgrega.setEstructuraAv(null);
            haCambiado = true;

        }

        String nivelAgregacion = generalAgrega.getNivelDeAgregacionAv();
        if (nivelAgregacion != null && !aNivelAgregacionV.contains(nivelAgregacion)) {
            //         if(nivelAgregacion !=null){
            logger.debug("Valor erroneo de nivel de agregacion: " + nivelAgregacion + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.nivelAgregacion")).append(nivelAgregacion)
                    .append(SPLITTER);
            generalAgrega.setNivelDeAgregacionAv(null);
            haCambiado = true;
        }

        //         /**********************Ciclo de vida**********************/
        logger.debug("Comprobando campos de la categora Ciclo de vida");
        LifeCycleAgrega cicloAgrega = lomAgrega.getLifeCycleAgrega();

        String estado = cicloAgrega.getEstatusAv();
        if (estado != null && !aEstadoV.contains(estado)) {
            //         if(estado !=null){
            logger.debug("Valor erroneo de estado: " + estado + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.estado")).append(estado).append(SPLITTER);
            cicloAgrega.setEstatusAv(null);
            haCambiado = true;
        }

        ArrayList<ContribucionAgrega> contribuciones = cicloAgrega.getContribucionesAv();
        ArrayList<ContribucionAgrega> new_contribuciones = new ArrayList<ContribucionAgrega>();
        boolean cambioContrib = false;
        for (int j = 0; j < contribuciones.size(); j++) {
            ContribucionAgrega contribucion = contribuciones.get(j);
            String tipo = contribucion.getTipo();
            //            if(tipo !=null){
            if (tipo != null && !aTipoContribucionV.contains(tipo)) {
                logger.debug("Valor erroneo de tipo de contribucion: " + tipo + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.tipoContribCiclo")).append(tipo)
                        .append(SPLITTER);
                contribucion.setTipo(null);
                //               contribuciones.set(j, contribucion);
                haCambiado = true;
                cambioContrib = true;
            }

            FechaAgrega fecha = contribucion.getFecha();
            if (fecha != null && fecha.getFecha() != null) {
                String sFecha = fecha.getFecha();
                boolean correcta = this.comprobarFecha(sFecha);

                if (!correcta) {
                    logger.debug("Valor erroneo de fecha: " + sFecha + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.fechaCiclo")).append(sFecha)
                            .append(SPLITTER);
                    fecha.setFecha(null);
                    contribucion.setTipo(null);
                    //                  contribuciones.set(j, contribucion);
                    haCambiado = true;
                    cambioContrib = true;
                }

            }

            if ((contribucion.getEntidad() != null && contribucion.getEntidad().size() > 0)
                    || (contribucion.getTipo() != null && !contribucion.getTipo().equals(""))
                    || (contribucion.getFecha() != null && contribucion.getFecha().getFecha() != null
                            && !contribucion.getFecha().getFecha().equals(""))
                    || (contribucion.getFecha() != null && contribucion.getFecha().getDescripciones() != null
                            && contribucion.getFecha().getDescripciones().size() > 0)) {
                new_contribuciones.add(contribucion);
            }
        }
        if (cambioContrib) {
            cicloAgrega.setContribucionesAv(new_contribuciones);
        }

        //         /**********************Meta-metadatos**********************/
        logger.debug("Comprobando campos de la categora Meta-metadatos");
        MetaMetadataAgrega metadatosAgrega = lomAgrega.getMetaMetadataAgrega();
        String idiomaCatalogacion = metadatosAgrega.getIdiomaAv();
        //         if(idiomaCatalogacion !=null){
        if (idiomaCatalogacion != null && !aIdiomaCatalogacionV.contains(idiomaCatalogacion)) {
            logger.debug(
                    "Valor erroneo de idioma de catalogacion: " + idiomaCatalogacion + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.idiomaCatalogacion")).append(idiomaCatalogacion)
                    .append(SPLITTER);
            metadatosAgrega.setIdiomasAv(null);
            haCambiado = true;
        }

        ArrayList<ContribucionAgrega> contribucionesMeta = metadatosAgrega.getContribucionesAv();
        ArrayList<ContribucionAgrega> new_contribucionesMeta = new ArrayList<ContribucionAgrega>();
        boolean cambioContribMeta = false;
        for (int j = 0; j < contribucionesMeta.size(); j++) {
            ContribucionAgrega contribucionMeta = contribucionesMeta.get(j);

            String tipo = contribucionMeta.getTipo();
            //            if(tipo !=null){
            if (tipo != null && !aTipoContribucionMetaV.contains(tipo)) {
                logger.debug("Valor erroneo de tipo de contribucion: " + tipo + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.tipoContribMeta")).append(tipo)
                        .append(SPLITTER);
                contribucionMeta.setTipo(null);
                //               contribucionesMeta.set(j, contribucionMeta);
                haCambiado = true;
                cambioContribMeta = true;
            }

            FechaAgrega fecha = contribucionMeta.getFecha();
            if (fecha != null && fecha.getFecha() != null) {
                String sFecha = fecha.getFecha();
                boolean correcta = this.comprobarFecha(sFecha);

                if (!correcta) {
                    logger.debug("Valor erroneo de fecha: " + sFecha + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.fechaMeta")).append(sFecha)
                            .append(SPLITTER);
                    fecha.setFecha(null);
                    contribucionMeta.setTipo(null);
                    //                  contribucionesMeta.set(j, contribucionMeta);
                    haCambiado = true;
                    cambioContribMeta = true;
                }

            }
            if ((contribucionMeta.getEntidad() != null && contribucionMeta.getEntidad().size() > 0)
                    || (contribucionMeta.getTipo() != null && !contribucionMeta.getTipo().equals(""))
                    || (contribucionMeta.getFecha() != null && contribucionMeta.getFecha().getFecha() != null
                            && !contribucionMeta.getFecha().getFecha().equals(""))
                    || (contribucionMeta.getFecha() != null
                            && contribucionMeta.getFecha().getDescripciones() != null
                            && contribucionMeta.getFecha().getDescripciones().size() > 0)) {
                new_contribucionesMeta.add(contribucionMeta);
            }
        }
        if (cambioContribMeta) {
            cicloAgrega.setContribucionesAv(new_contribucionesMeta);
        }

        /**********************Tecnica**********************/
        logger.debug("Comprobando campos de la categora Tecnica");
        TechnicalAgrega tecnicaAgrega = lomAgrega.getTechnicalAgrega();

        ArrayList formatos = tecnicaAgrega.getFormatosAv();
        boolean cambioFormatos = false;
        ArrayList new_formatos = new ArrayList();
        for (int j = 0; j < formatos.size(); j++) {
            String formato = (String) formatos.get(j);
            if (formato != null && !aFormatoV.contains(formato)) {
                //            if(formato !=null){
                logger.debug("Valor erroneo de formato: " + formato + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.formato")).append(formato).append(SPLITTER);
                haCambiado = true;
                cambioFormatos = true;
            } else {
                new_formatos.add(formato);
            }
        }
        if (cambioFormatos)
            tecnicaAgrega.setFormatosAv(new_formatos);

        ArrayList requisitos = tecnicaAgrega.getRequisitosAv();
        boolean cambioRequisitos = false;
        for (int j = 0; j < requisitos.size(); j++) {
            ArrayList<RequisitoAgrega> orComposites = (ArrayList<RequisitoAgrega>) requisitos.get(j);
            boolean cambioOrComposites = true;
            for (int k = 0; k < orComposites.size(); k++) {
                RequisitoAgrega requisito = orComposites.get(k);
                String tipo = requisito.getTipo();
                boolean cambioRequisito = false;
                if (tipo != null && !aTipoRequisitoV.contains(tipo)) {
                    //               if(tipo !=null){
                    logger.debug("Valor erroneo de tipo requisito: " + tipo + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.tipoRequisito")).append(tipo)
                            .append(SPLITTER);
                    requisito.setTipo(null);
                    haCambiado = true;
                    cambioRequisitos = true;
                    cambioOrComposites = true;
                    cambioRequisito = true;
                }

                String nombre = requisito.getNombre();
                if (nombre != null && !aNombreRequisitosV.contains(nombre)) {
                    //               if(nombre !=null){
                    logger.debug("Valor erroneo de nombre de requisito: " + nombre + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.nombreRequisito")).append(nombre)
                            .append(SPLITTER);
                    requisito.setNombre(null);
                    haCambiado = true;
                    cambioRequisitos = true;
                    cambioOrComposites = true;
                    cambioRequisito = true;
                }
                if (cambioRequisito)
                    orComposites.set(k, requisito);

            }
            if (cambioOrComposites)
                requisitos.set(j, orComposites);
        }
        if (cambioRequisitos)
            tecnicaAgrega.setRequisitosAv(requisitos);

        /**********************Uso educativo**********************/
        logger.debug("Comprobando campos de la categora Uso educativo");
        ArrayList<EducationalAgrega> usosEduAgrega = lomAgrega.getEducationalsAgrega();
        ArrayList<EducationalAgrega> new_usosEducativos = new ArrayList<EducationalAgrega>();
        boolean cambioUsosEdu = false;
        for (int j = 0; j < usosEduAgrega.size(); j++) {
            EducationalAgrega usoEducativo = usosEduAgrega.get(j);
            //***********tipoInteractividad***********
            String tipoInteractividad = usoEducativo.getTipoDeInteractividadAv();
            if (tipoInteractividad != null && !aTipoInteractividadV.contains(tipoInteractividad)) {
                //            if(tipoInteractividad !=null){
                logger.debug(
                        "Valor erroneo de tipo de interactividad: " + tipoInteractividad + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.tipoInteractividad"))
                        .append(tipoInteractividad).append(SPLITTER);
                usoEducativo.setTipoDeInteractividadAv(null);
                haCambiado = true;
                cambioUsosEdu = true;
            }
            //***********tipoRecurso***********                     
            ArrayList<String> tipoRecurso = usoEducativo.getTiposDeRecursoAv();
            boolean cambioTipoRecurso = false;
            ArrayList new_tipoRecurso = new ArrayList();
            for (int k = 0; k < tipoRecurso.size(); k++) {
                String recurso = (String) tipoRecurso.get(k);
                if (recurso != null && !aTipoRecursoV.contains(recurso)) {
                    //               if(recurso !=null){
                    logger.debug("Valor erroneo de tipo de recurso: " + recurso + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.tipoRecurso")).append(recurso)
                            .append(SPLITTER);
                    haCambiado = true;
                    cambioTipoRecurso = true;
                    cambioUsosEdu = true;
                } else {
                    new_tipoRecurso.add(recurso);
                }
            }
            if (cambioTipoRecurso)
                usoEducativo.setTiposDeRecursoAv(new_tipoRecurso);
            //***********nivelInteractividad***********
            String nivelInteractividad = usoEducativo.getNivelDeInteractividadAv();
            if (nivelInteractividad != null && !aNivelInteractividadV.contains(nivelInteractividad)) {
                //            if(nivelInteractividad !=null){
                logger.debug("Valor erroneo de nivel de interactividad: " + nivelInteractividad
                        + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.nivelInteractividad"))
                        .append(nivelInteractividad).append(SPLITTER);
                usoEducativo.setNivelDeInteractividadAv(null);
                haCambiado = true;
                cambioUsosEdu = true;
            }
            //***********densidadSemantica***********
            String densidadSemantica = usoEducativo.getDensidadSemanticaAv();
            if (densidadSemantica != null && !aDensidadSemanticaV.contains(densidadSemantica)) {
                //            if(densidadSemantica !=null){
                logger.debug("Valor erroneo de densidad semantica: " + densidadSemantica + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.densidadSemantica"))
                        .append(densidadSemantica).append(SPLITTER);
                usoEducativo.setDensidadSemanticaAv(null);
                haCambiado = true;
                cambioUsosEdu = true;
            }
            //***********destinatarios***********
            ArrayList<String> destinatarios = usoEducativo.getDestinatariosAv();
            boolean cambioDestinatarios = false;
            ArrayList new_Destinatarios = new ArrayList();
            for (int k = 0; k < destinatarios.size(); k++) {
                String destinatario = (String) destinatarios.get(k);
                if (destinatario != null && !aDestinatarioV.contains(destinatario)) {
                    //               if(destinatario !=null){
                    logger.debug("Valor erroneo de destinatario: " + destinatario + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.destinatario")).append(destinatario)
                            .append(SPLITTER);
                    haCambiado = true;
                    cambioDestinatarios = true;
                    cambioUsosEdu = true;
                } else {
                    new_Destinatarios.add(destinatario);
                }
            }
            if (cambioDestinatarios)
                usoEducativo.setDestinatariosAv(new_Destinatarios);
            //***********contextos***********
            ArrayList<String> contextos = usoEducativo.getContextosAv();
            boolean cambioContextos = false;
            ArrayList new_Contextos = new ArrayList();
            for (int k = 0; k < contextos.size(); k++) {
                String contexto = (String) contextos.get(k);
                if (contexto != null && !aContextoV.contains(contexto)) {
                    //               if(contexto !=null){
                    logger.debug("Valor erroneo de contexto: " + contexto + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.contexto")).append(contexto)
                            .append(SPLITTER);
                    haCambiado = true;
                    cambioContextos = true;
                    cambioUsosEdu = true;
                } else {
                    new_Contextos.add(contexto);
                }
            }
            if (cambioContextos)
                usoEducativo.setContextosAv(new_Contextos);

            //***********dificultad***********
            String dificultad = usoEducativo.getDificultadAv();
            if (dificultad != null && !aDificultadV.contains(dificultad)) {
                //            if(dificultad !=null){
                logger.debug("Valor erroneo de dificultad: " + dificultad + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.dificultad")).append(dificultad)
                        .append(SPLITTER);
                usoEducativo.setDificultadAv(null);
                haCambiado = true;
                cambioUsosEdu = true;
            }

            //***********Tiempo de aprendizaje***********            
            DuracionAgrega duracionAgrega = usoEducativo.getTiempoTipicoAprendizajeAv();
            if (duracionAgrega != null) {
                String duracion = duracionAgrega.getDuracion();
                if (duracion != null) {
                    Pattern mask = Pattern.compile(
                            "^P([0-9]+Y){0,1}([0-9]+M){0,1}([0-9]+D){0,1}(T([0-9]+H){0,1}([0-9]+M){0,1}([0-9]+(.[0-9]+){0,1}S){0,1}){0,1}$"); //ejm ee-zz
                    Matcher matcher = mask.matcher(duracion);
                    boolean correcto = matcher.matches();
                    if (!correcto) {
                        logger.debug("Valor erroneo de duracion: " + duracion + ". Borramos valor.");
                        resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                                .append(getPropertyValueI18n("vocabularios.duracion")).append(duracion)
                                .append(SPLITTER);
                        duracionAgrega.setDuracion(null);
                        usoEducativo.setTiempoTipicoAprendizajeAv(duracionAgrega);
                        haCambiado = true;
                        cambioUsosEdu = true;
                    }
                }
            }

            //***********idiomasDestinatarios***********
            ArrayList<String> idiomasDestinatarios = usoEducativo.getIdiomasDestinatarioAv();
            boolean cambioIdiomasDest = false;
            ArrayList new_IdiomasDest = new ArrayList();
            for (int k = 0; k < idiomasDestinatarios.size(); k++) {
                String idioma = (String) idiomasDestinatarios.get(k);
                if (idioma != null && !aIdiomaDestinatarioV.contains(idioma)) {
                    //               if(idioma !=null){
                    logger.debug("Valor erroneo de idioma destinario: " + idioma + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.idiomaDestinatario")).append(idioma)
                            .append(SPLITTER);
                    haCambiado = true;
                    cambioIdiomasDest = true;
                    cambioUsosEdu = true;
                } else {
                    new_IdiomasDest.add(idioma);
                }
            }
            if (cambioIdiomasDest)
                usoEducativo.setIdiomasDestinatarioAv(new_IdiomasDest);
            //***********procesosCognitivos***********            
            ArrayList<String> procesosCognitivos = usoEducativo.getProcesosCognitivosAv();
            boolean cambioProcesosCog = false;
            ArrayList new_ProcesosCog = new ArrayList();
            for (int k = 0; k < procesosCognitivos.size(); k++) {
                String proceso = (String) procesosCognitivos.get(k);
                if (proceso != null && !aProcesoCognitivoV.contains(proceso)) {
                    //               if(proceso !=null){
                    logger.debug("Valor erroneo de proceso cognitivo: " + proceso + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.proceso")).append(proceso)
                            .append(SPLITTER);
                    haCambiado = true;
                    cambioProcesosCog = true;
                    cambioUsosEdu = true;
                } else {
                    new_ProcesosCog.add(proceso);
                }
            }
            if (cambioProcesosCog)
                usoEducativo.setProcesosCognitivosAv(new_ProcesosCog);

            if ((usoEducativo.getTipoDeInteractividadAv() != null
                    && !usoEducativo.getTipoDeInteractividadAv().equals(""))
                    || (usoEducativo.getTiposDeRecursoAv() != null
                            && usoEducativo.getTiposDeRecursoAv().size() > 0)
                    || (usoEducativo.getNivelDeInteractividadAv() != null
                            && !usoEducativo.getNivelDeInteractividadAv().equals(""))
                    || (usoEducativo.getDensidadSemanticaAv() != null
                            && !usoEducativo.getDensidadSemanticaAv().equals(""))
                    || (usoEducativo.getDestinatariosAv() != null && usoEducativo.getDestinatarios().size() > 0)
                    || (usoEducativo.getContextosAv() != null && usoEducativo.getContextosAv().size() > 0)
                    || (usoEducativo.getRangosEdadAv() != null && usoEducativo.getRangosEdadAv().size() > 0)
                    || (usoEducativo.getDificultadAv() != null && !usoEducativo.getDificultadAv().equals(""))
                    || (usoEducativo.getTiempoTipicoAprendizajeAv() != null
                            && usoEducativo.getTiempoTipicoAprendizajeAv().getDuracion() != null
                            && !usoEducativo.getTiempoTipicoAprendizajeAv().getDuracion().equals(""))
                    || (usoEducativo.getTiempoTipicoAprendizajeAv() != null
                            && usoEducativo.getTiempoTipicoAprendizajeAv().getDescripciones() != null
                            && usoEducativo.getTiempoTipicoAprendizajeAv().getDescripciones().size() > 0)
                    || (usoEducativo.getDescripcionesAv() != null
                            && usoEducativo.getDescripcionesAv().size() > 0)
                    || (usoEducativo.getIdiomasDestinatarioAv() != null
                            && usoEducativo.getIdiomasDestinatarioAv().size() > 0)
                    || (usoEducativo.getProcesosCognitivosAv() != null
                            && usoEducativo.getProcesosCognitivosAv().size() > 0)) {
                new_usosEducativos.add(usoEducativo);
            }

        }
        if (cambioUsosEdu) {
            EducationalAgrega[] aUsosEducativos = (EducationalAgrega[]) new_usosEducativos
                    .toArray(new EducationalAgrega[new_usosEducativos.size()]);
            lomAgrega.setEducationalsAgrega(aUsosEducativos);
        }
        /**********************Derechos**********************/
        logger.debug("Comprobando campos de la categora Derechos");
        RightsAgrega derechosAgrega = lomAgrega.getRightsAgrega();

        String coste = derechosAgrega.getCosteAv();
        if (coste != null && !aCosteV.contains(coste)) {
            //         if(coste !=null){
            logger.debug("Valor erroneo de coste: " + coste + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.coste")).append(coste).append(SPLITTER);
            derechosAgrega.setCosteAv(null);
            haCambiado = true;
        }

        String derechosAutor = derechosAgrega.getDerechosDeAutorAv();
        if (derechosAutor != null && !aDerechosAutorV.contains(derechosAutor)) {
            //         if(derechosAutor !=null){
            logger.debug("Valor erroneo de derechos de autor: " + derechosAutor + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.derechosAutor")).append(derechosAutor)
                    .append(SPLITTER);
            derechosAgrega.setDerechosDeAutorAv(null);
            haCambiado = true;
        }

        AccesoAgrega acceso = derechosAgrega.getAccesoAv();
        String tipoAcceso = acceso.getTipoAcceso();
        if (tipoAcceso != null && !aTipoAccesoV.contains(tipoAcceso)) {
            //         if(tipoAcceso !=null){
            logger.debug("Valor erroneo de tipo de acceso: " + tipoAcceso + ". Borramos valor.");
            resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                    .append(getPropertyValueI18n("vocabularios.tipoAcceso")).append(tipoAcceso)
                    .append(SPLITTER);
            acceso.setTipoAcceso(null);
            derechosAgrega.setAccesoAv(acceso);
            haCambiado = true;
        }

        /**********************Relacin**********************/
        logger.debug("Comprobando campos de la categora Relacion");
        ArrayList<RelationAgrega> relacionesAgrega = lomAgrega.getRelationsAgrega();
        ArrayList<RelationAgrega> new_relaciones = new ArrayList<RelationAgrega>();
        boolean cambioRelacion = false;
        for (int j = 0; j < relacionesAgrega.size(); j++) {
            RelationAgrega relacionAgrega = relacionesAgrega.get(j);
            String tipo = relacionAgrega.getTipoAv();
            if (tipo != null && !aTipoRelacionV.contains(tipo)) {
                //            if(tipo !=null){
                logger.debug("Valor erroneo de tipo de relacion: " + tipo + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.tipoRelacion")).append(tipo)
                        .append(SPLITTER);
                relacionAgrega.setTipoAv(null);
                haCambiado = true;
                cambioRelacion = true;
            }
            if ((relacionAgrega.getTipoAv() != null && !relacionAgrega.getTipoAv().equals(""))
                    || (relacionAgrega.getRecursoAv() != null
                            && relacionAgrega.getRecursoAv().getDescripciones() != null
                            && relacionAgrega.getRecursoAv().getDescripciones().size() > 0)
                    || (relacionAgrega.getRecursoAv() != null
                            && relacionAgrega.getRecursoAv().getIdentificador() != null
                            && relacionAgrega.getRecursoAv().getIdentificador().getCatalogo() != null
                            && !relacionAgrega.getRecursoAv().getIdentificador().getCatalogo().equals(""))
                    || (relacionAgrega.getRecursoAv() != null
                            && relacionAgrega.getRecursoAv().getIdentificador() != null
                            && relacionAgrega.getRecursoAv().getIdentificador().getEntrada() != null
                            && !relacionAgrega.getRecursoAv().getIdentificador().getEntrada().equals(""))) {
                new_relaciones.add(relacionAgrega);
            }
        }
        if (cambioRelacion) {
            RelationAgrega[] aRelaciones = (RelationAgrega[]) new_relaciones
                    .toArray(new RelationAgrega[new_relaciones.size()]);
            lomAgrega.setRelationsAgrega(aRelaciones);
        }
        /**********************Anotacion**********************/
        logger.debug("Comprobando campos de la categora Anotacion");
        ArrayList<AnnotationAgrega> anotacionesAgrega = lomAgrega.getAnnotationsAgrega();
        ArrayList<AnnotationAgrega> new_anotaciones = new ArrayList<AnnotationAgrega>();
        boolean cambioAnotacion = false;
        for (int j = 0; j < anotacionesAgrega.size(); j++) {
            AnnotationAgrega anotacionAgrega = anotacionesAgrega.get(j);
            FechaAgrega fecha = anotacionAgrega.getFechaAv();
            if (fecha != null && fecha.getFecha() != null) {
                String sFecha = fecha.getFecha();
                boolean correcta = this.comprobarFecha(sFecha);

                if (!correcta) {
                    logger.debug("Valor erroneo de fecha: " + sFecha + ". Borramos valor.");
                    resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                            .append(getPropertyValueI18n("vocabularios.fechaAnotacion")).append(sFecha)
                            .append(SPLITTER);
                    fecha.setFecha(null);
                    anotacionAgrega.setFechaAv(fecha);
                    haCambiado = true;
                    cambioAnotacion = true;
                }
                if (fecha.getFecha() != null
                        || (fecha.getDescripciones() != null && fecha.getDescripciones().size() > 0)) {
                    new_anotaciones.add(anotacionAgrega);
                }

            }
        }
        if (cambioAnotacion) {
            AnnotationAgrega[] aAnotaciones = (AnnotationAgrega[]) new_anotaciones
                    .toArray(new AnnotationAgrega[new_anotaciones.size()]);
            lomAgrega.setAnnotationsAgrega(aAnotaciones);
        }
        /**********************Clasificacion**********************/
        logger.debug("Comprobando campos de la categora Clasificacion");
        ArrayList<ClassificationAgrega> clasificacionesAgrega = lomAgrega.getClassificationsAgrega();
        ArrayList<ClassificationAgrega> new_clasificaciones = new ArrayList<ClassificationAgrega>();
        boolean cambioClasificacion = false;
        for (int j = 0; j < clasificacionesAgrega.size(); j++) {
            ClassificationAgrega clasificacionAgrega = clasificacionesAgrega.get(j);
            String proposito = clasificacionAgrega.getPropositoAv();
            if (proposito != null && !aPropositoV.contains(proposito)) {
                //            if(proposito !=null){
                logger.debug("Valor erroneo de proposito: " + proposito + ". Borramos valor.");
                resultado.append(getPropertyValueI18n("vocabularios.texto.borrado"))
                        .append(getPropertyValueI18n("vocabularios.proposito")).append(proposito)
                        .append(SPLITTER);
                clasificacionAgrega.setPropostitoAv(null);
                haCambiado = true;
                cambioClasificacion = true;
            }
            if ((clasificacionAgrega.getPropositoAv() != null
                    && !clasificacionAgrega.getPropositoAv().equals(""))
                    || (clasificacionAgrega.getRutaTaxonomicasAv() != null
                            && clasificacionAgrega.getRutaTaxonomicasAv().size() > 0)
                    || (clasificacionAgrega.getPalabrasClaveAv() != null
                            && clasificacionAgrega.getPalabrasClaveAv().size() > 0)
                    || (clasificacionAgrega.getDescripcionesAv() != null
                            && clasificacionAgrega.getDescripcionesAv().size() > 0)) {
                new_clasificaciones.add(clasificacionAgrega);
            }
        }
        if (cambioClasificacion) {
            ClassificationAgrega[] aClasificaciones = (ClassificationAgrega[]) new_clasificaciones
                    .toArray(new ClassificationAgrega[new_clasificaciones.size()]);
            lomAgrega.setClassificationsAgrega(aClasificaciones);
        }

        //obtenemos la localizacin del lomes, por si estuviera referenciado por location
        Object elemento = manifestAgrega.obtenerElemento(idPadre);
        String location = null;
        if (elemento instanceof Manifest) {
            Manifest new_elemento = (Manifest) elemento;
            location = this.obtenLocation(new_elemento.getMetadata());
        } else if (elemento instanceof Organization) {
            Organization new_elemento = (Organization) elemento;
            location = this.obtenLocation(new_elemento.getMetadata());
        } else if (elemento instanceof Item) {
            Item new_elemento = (Item) elemento;
            location = this.obtenLocation(new_elemento.getMetadata());
        } else if (elemento instanceof Resource) {
            Resource new_elemento = (Resource) elemento;
            location = this.obtenLocation(new_elemento.getMetadata());
        }

        if (haCambiado)//si el lomes ha cambiado se inserta de nuevo el manifest o se sobreescribe 
                       //el fichero si estuviera referenciado mediante location
            manifestAgrega.setLom(idPadre, location, lomes);
    }

    return resultado.toString();
}

From source file:ffx.autoparm.PME_2.java

/**
 * <p>//  w  w w .j  a  v  a2s  . co  m
 * polargrp</p>
 */
public static void polargrp() {
    int index;

    ArrayList<ArrayList<Integer>> temp_groups1 = new ArrayList<ArrayList<Integer>>();
    ArrayList<ArrayList<Integer>> temp_groups2 = new ArrayList<ArrayList<Integer>>();
    ArrayList<ArrayList<Integer>> temp_groups3 = new ArrayList<ArrayList<Integer>>();
    ArrayList<ArrayList<Integer>> temp_groups4 = new ArrayList<ArrayList<Integer>>();

    ArrayList<Integer> polarizationGroup = new ArrayList<Integer>();

    ArrayList<Integer> list = new ArrayList<Integer>();
    int nlist = 0;
    ArrayList<Integer> keep = new ArrayList<Integer>();
    //int nkeep = 0;
    ArrayList<Integer> mask = new ArrayList<Integer>();

    ArrayList<Integer> jg;
    ArrayList<Integer> ig;
    int kk;
    int jj;
    int start;
    int stop;
    boolean done;

    for (Atom ai : atoms) {
        ArrayList<Integer> group = new ArrayList<Integer>();
        polarizationGroup.clear();
        index = ai.getXYZIndex() - 1;
        group.add(index);
        //polarizationGroup.add(ai.getType());
        PolarizeType polarizeType = ai.getPolarizeType();
        if (polarizeType != null) {
            if (polarizeType.polarizationGroup != null) {
                for (int i : polarizeType.polarizationGroup) {
                    if (!polarizationGroup.contains(i)) {
                        polarizationGroup.add(i);
                    }
                }
            }
        }
        for (Bond bi : ai.getBonds()) {
            Atom aj = bi.get1_2(ai);
            int tj = aj.getType();
            for (int g : polarizationGroup) {
                if (g == tj) {
                    Integer index2 = aj.getXYZIndex() - 1;
                    group.add(index2);
                }
            }
        }
        Collections.sort(group);
        temp_groups1.add(group);
    }

    //Next part of ip11 creation
    for (int n = 0; n < nAtoms; n++) {
        list.add(n, -1);
    }

    for (int i = 0; i < nAtoms; i++) {
        ig = temp_groups1.get(i);
        done = false;
        start = 1;
        stop = ig.size();
        for (int j = start - 1; j < stop; j++) {
            jj = ig.get(j);
            if (jj < i) {
                done = true;
                jg = temp_groups1.get(jj);
                for (int k = 0; k < jg.size(); k++) {
                    if (k > ig.size() - 1) {
                        for (int s = ig.size(); s < k + 1; s++) {
                            ig.add(0);
                        }
                        ig.set(k, jg.get(k));
                    } else {
                        ig.set(k, jg.get(k));
                    }
                }
            } else {
                list.set(jj, i);
            }
        }
        while (!done) {
            done = true;
            for (int j = start - 1; j < stop; j++) {
                jj = ig.get(j);
                jg = temp_groups1.get(jj);
                for (int k = 0; k < jg.size(); k++) {
                    kk = jg.get(k);
                    if (list.get(kk) != i) {
                        ig.add(kk);
                        list.set(kk, i);
                    }
                }
            }
            if (ig.size() != stop) {
                done = false;
                start = stop + 1;
                stop = ig.size();
            }
        }
        Collections.sort(ig);
    }

    //final part of ip11 array creation
    for (int n = 0; n < nAtoms; n++) {
        ArrayList<Integer> group = temp_groups1.get(n);
        Collections.sort(group);
        //System.out.println(group);
        ip11[n] = new int[group.size()];
        int j = 0;
        for (int k : group) {
            ip11[n][j++] = k;
        }
    }

    //start ip12 creation
    for (int n = 0; n < nAtoms; n++) {
        mask.add(n, -1);
    }
    for (int i = 0; i < nAtoms; i++) {
        list.clear();
        keep.clear();
        ArrayList<Integer> group = new ArrayList<Integer>();
        ig = temp_groups1.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            list.add(jj);
            mask.set(jj, i);
        }
        for (int j = 0; j < list.size(); j++) {
            jj = list.get(j);
            Atom ajj = atoms[jj];
            for (int k = 0; k < ajj.getBonds().size(); k++) {
                kk = ajj.getBonds().get(k).get1_2(ajj).getXYZIndex() - 1;
                //System.out.println(mask.get(kk)+" "+i);
                if (mask.get(kk) != i) {
                    keep.add(kk);
                }
            }
        }
        nlist = 0;
        list.clear();
        for (int j = 0; j < keep.size(); j++) {
            jj = keep.get(j);
            jg = temp_groups1.get(jj);
            for (int k = 0; k < jg.size(); k++) {
                kk = jg.get(k);
                //System.out.println((j+1)+" "+(jj+1)+" "+(k+1)+" "+(kk+1));
                nlist++;
                //list.set(nlist, kk);
                if (nlist - 1 < list.size()) {
                    list.set(nlist - 1, kk);
                } else {
                    list.add(kk);
                }
            }
        }
        Collections.sort(list);
        for (int j = 0; j < list.size(); j++) {
            group.add(j, list.get(j));
        }
        temp_groups2.add(group);
    }
    //final part of ip12 array creation
    for (int n = 0; n < nAtoms; n++) {
        ArrayList<Integer> group = temp_groups2.get(n);
        Collections.sort(group);
        //System.out.println(group);
        ip12[n] = new int[group.size()];
        int j = 0;
        for (int k : group) {
            ip12[n][j++] = k;
        }
    }

    //start ip13 creation
    mask.clear();
    for (int n = 0; n < nAtoms; n++) {
        mask.add(n, -1);
    }
    for (int i = 0; i < nAtoms; i++) {
        list.clear();
        ArrayList<Integer> group = new ArrayList<Integer>();
        ig = temp_groups1.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            mask.set(jj, i);
        }
        ig = temp_groups2.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            mask.set(jj, i);
        }
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            jg = temp_groups2.get(jj);
            for (int k = 0; k < jg.size(); k++) {
                kk = jg.get(k);
                if (mask.get(kk) != i) {
                    list.add(kk);
                }
            }
        }
        Collections.sort(list);
        for (int j = 0; j < list.size(); j++) {
            group.add(j, list.get(j));
        }
        temp_groups3.add(group);
    }
    //final part of ip13 array creation
    for (int n = 0; n < nAtoms; n++) {
        ArrayList<Integer> group = temp_groups3.get(n);
        Collections.sort(group);
        //System.out.println(group);
        ip13[n] = new int[group.size()];
        int j = 0;
        for (int k : group) {
            ip13[n][j++] = k;
        }
    }

    //start ip14 creation
    mask.clear();
    for (int n = 0; n < nAtoms; n++) {
        mask.add(n, -1);
    }
    for (int i = 0; i < nAtoms; i++) {
        list.clear();
        ArrayList<Integer> group = new ArrayList<Integer>();
        ig = temp_groups1.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            mask.set(jj, i);
        }
        ig = temp_groups2.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            mask.set(jj, i);
        }
        ig = temp_groups3.get(i);
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            mask.set(jj, i);
        }
        for (int j = 0; j < ig.size(); j++) {
            jj = ig.get(j);
            jg = temp_groups2.get(jj);
            for (int k = 0; k < jg.size(); k++) {
                kk = jg.get(k);
                if (mask.get(kk) != i) {
                    list.add(kk);
                }
            }
        }
        Collections.sort(list);
        for (int j = 0; j < list.size(); j++) {
            group.add(j, list.get(j));
        }
        temp_groups4.add(group);
    }
    //final part of ip14 array creation
    for (int n = 0; n < nAtoms; n++) {
        ArrayList<Integer> group = temp_groups3.get(n);
        Collections.sort(group);
        //System.out.println(group);
        ip14[n] = new int[group.size()];
        int j = 0;
        for (int k : group) {
            ip14[n][j++] = k;
        }
    }
}

From source file:InternalFrame.InternalFrameproject.java

private void make_TXT_long_futro_futra(String BorE, PrintWriter fw, String cF, String dF,
        ArrayList<Observer[]> X) {

    ArrayList<String> hlavicka = new ArrayList<>();
    ArrayList<Boolean> ISvariable = new ArrayList<>();
    if (BorE == "B") {
        hlavicka = mate_TXT_long_futro_futra_hlavicka(BorE, hlavicka);
    }/*from   w  ww.ja  v  a2s .c o m*/
    if (BorE == "E") {
        hlavicka = mate_TXT_long_futro_futra_hlavicka(BorE, hlavicka);
    }
    if (BorE == "I") {
        hlavicka = mate_TXT_long_futro_futra_hlavicka(BorE, hlavicka);
    }
    if (BorE == "Emod") {
        hlavicka = mate_TXT_long_futro_futra_hlavicka(BorE, hlavicka);
    }

    for (int cl1 = 0; cl1 < 19; cl1++) { // daj vade false a potom len nastav kde bude true
        ISvariable.add(false);
    }
    if (BorE == "B") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getB_RMS1().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getB_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getB_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getB_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getB_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getB_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
    }
    if (BorE == "E") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getE_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getE_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getE_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getE_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getE_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getE_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
    }
    if (BorE == "I") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getI_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getI_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getI_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getI_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getI_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getI_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
    }
    if (BorE == "Emod") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getEmod_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getEmod_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getEmod_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getEmod_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getEmod_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getEmod_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
    }

    String head = "";
    for (int cl1 = 0; cl1 < ISvariable.size(); cl1++) { //poskladaj hlavi?ku
        if (ISvariable.get(cl1) == true) {
            head = head + hlavicka.get(cl1) + " ";
        }
    }
    fw.println(head);

    for (int cl1 = 0; cl1 < X.size(); cl1++) {

        for (int cl2 = 0; cl2 < X.get(cl1).length; cl2++) {
            head = "";
            if (ISvariable.get(0) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getX()) + " ";
            }
            if (ISvariable.get(1) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getY()) + " ";
            }
            if (ISvariable.get(2) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getZ()) + " ";
            }
            if (BorE == "B") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Angle()) + " ";
                }
            }
            if (BorE == "E") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Angle()) + " ";
                }
            }
            if (BorE == "I") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Angle()) + " ";
                }
            }
            if (BorE == "Emod") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Angle()) + " ";
                }
            }

            fw.println(head);
        }
    }

}

From source file:InternalFrame.InternalFrameproject.java

private void make_TXT_long_futro_futraParameter(String BorE, String Parameter, PrintWriter fw, String cF,
        String dF, ArrayList<Observer[]> X) {

    ArrayList<String> hlavicka = new ArrayList<>();
    ArrayList<Boolean> ISvariable = new ArrayList<>();
    if (BorE == "B") {
        hlavicka = mate_TXT_long_futro_futra_hlavickaParmeter(BorE, Parameter, hlavicka);
    }/*from  ww  w  . jav  a 2  s .com*/
    if (BorE == "E") {
        hlavicka = mate_TXT_long_futro_futra_hlavickaParmeter(BorE, Parameter, hlavicka);
    }
    if (BorE == "I") {
        hlavicka = mate_TXT_long_futro_futra_hlavickaParmeter(BorE, Parameter, hlavicka);
    }
    if (BorE == "Emod") {
        hlavicka = mate_TXT_long_futro_futra_hlavickaParmeter(BorE, Parameter, hlavicka);
    }

    for (int cl1 = 0; cl1 < 20; cl1++) { // daj vade false a potom len nastav kde bude true
        ISvariable.add(false);
    }
    if (BorE == "B") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getB_RMS1().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getB_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getB_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getB_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getB_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getB_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
        ISvariable.set(19, true); //parameter
    }
    if (BorE == "E") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getE_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getE_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getE_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getE_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getE_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getE_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
        ISvariable.set(19, true); //parameter
    }
    if (BorE == "I") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getI_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getI_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getI_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getI_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getI_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getI_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
        ISvariable.set(19, true); //parameter
    }
    if (BorE == "Emod") {
        ISvariable.set(0, true); //X cor
        ISvariable.set(1, true); //Y cor
        ISvariable.set(2, true); //Z cor

        if (TxT_JFrame.getEmod_RMS().isSelected() == true) {
            ISvariable.set(3, true);
        }
        if (TxT_JFrame.getEmod_COMPLEX().isSelected() == true) {
            ISvariable.set(4, true);
            ISvariable.set(5, true);
        }
        if (TxT_JFrame.getEmod_PHASOR().isSelected() == true) {
            ISvariable.set(6, true);
        }
        if (TxT_JFrame.getEmod_XYZ_RMS().isSelected() == true) {
            ISvariable.set(7, true);
            ISvariable.set(11, true);
            ISvariable.set(15, true);
        }
        if (TxT_JFrame.getEmod_XYZ_COMPLEX().isSelected() == true) {
            ISvariable.set(8, true);
            ISvariable.set(9, true);
            ISvariable.set(12, true);
            ISvariable.set(13, true);
            ISvariable.set(16, true);
            ISvariable.set(17, true);
        }
        if (TxT_JFrame.getEmod_XYZ_PHASOR().isSelected() == true) {
            ISvariable.set(10, true);
            ISvariable.set(14, true);
            ISvariable.set(18, true);
        }
        ISvariable.set(19, true); //parameter
    }

    String head = "";
    for (int cl1 = 0; cl1 < ISvariable.size(); cl1++) { //poskladaj hlavi?ku
        if (ISvariable.get(cl1) == true) {
            head = head + hlavicka.get(cl1) + " ";
        }
    }
    fw.println(head);

    for (int cl1 = 0; cl1 < X.size(); cl1++) {

        for (int cl2 = 0; cl2 < X.get(cl1).length; cl2++) {
            head = "";
            if (ISvariable.get(0) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getX()) + " ";
            }
            if (ISvariable.get(1) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getY()) + " ";
            }
            if (ISvariable.get(2) == true) {
                head = head + String.format(cF, X.get(cl1)[cl2].getPoloha().getZ()) + " ";
            }
            if (BorE == "B") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getB().getZ_Angle()) + " ";
                }
                if (ISvariable.get(19) == true)
                    ;
                head = head + String.format(dF, X.get(cl1)[cl2].getParameter()) + " ";
            }
            if (BorE == "E") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getE().getZ_Angle()) + " ";
                }
                if (ISvariable.get(19) == true)
                    ;
                head = head + String.format(dF, X.get(cl1)[cl2].getParameter()) + " ";
            }
            if (BorE == "I") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getI().getZ_Angle()) + " ";
                }
                if (ISvariable.get(19) == true)
                    ;
                head = head + String.format(dF, X.get(cl1)[cl2].getParameter()) + " ";
            }
            if (BorE == "Emod") {
                if (ISvariable.get(3) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms_ABS()) + " ";
                }
                if (ISvariable.get(4) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms().getReal()) + " ";
                }
                if (ISvariable.get(5) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms().getImaginary())
                            + " ";
                }
                if (ISvariable.get(6) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getComplex_rms_Angle()) + " ";
                }

                if (ISvariable.get(7) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_ABS()) + " ";
                }
                if (ISvariable.get(8) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Real()) + " ";
                }
                if (ISvariable.get(9) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Imaginary()) + " ";
                }
                if (ISvariable.get(10) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getX_Angle()) + " ";
                }

                if (ISvariable.get(11) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_ABS()) + " ";
                }
                if (ISvariable.get(12) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Real()) + " ";
                }
                if (ISvariable.get(13) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Imaginary()) + " ";
                }
                if (ISvariable.get(14) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getY_Angle()) + " ";
                }

                if (ISvariable.get(15) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_ABS()) + " ";
                }
                if (ISvariable.get(16) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Real()) + " ";
                }
                if (ISvariable.get(17) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Imaginary()) + " ";
                }
                if (ISvariable.get(18) == true) {
                    head = head + String.format(dF, X.get(cl1)[cl2].getEmod().getZ_Angle()) + " ";
                }
                if (ISvariable.get(19) == true)
                    ;
                head = head + String.format(dF, X.get(cl1)[cl2].getParameter()) + " ";
            }

            fw.println(head);
        }
    }

}

From source file:com.lp.webapp.zemecs.CommandZE.java

public synchronized String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {

    super.execute(request, response);

    if (request.getCookies() != null) {
        for (int i = 0; i < request.getCookies().length; i++) {
            Cookie cookie = request.getCookies()[i];
            cookie.setMaxAge(10000000);//w  ww .ja v a  2  s  .  co  m
            response.addCookie(cookie);
        }
    }

    String mandant = request.getParameter("mandant");

    Locale localeLogon = getMandantFac().getLocaleDesHauptmandanten();

    String locale = request.getParameter("locale");

    String localeCookie = getCookieValue("locale", request);

    if (localeCookie != null && localeCookie.length() > 3) {
        locale = localeCookie;
    }

    if (locale != null && locale.length() > 3) {
        localeLogon = new Locale(locale.substring(0, 2), locale.substring(2, 4));
    }

    TheClientDto theclientDto = null;
    synchronized (mutex) {
        theclientDto = getLogonFac().logon(Helper.getFullUsername(sUser),
                Helper.getMD5Hash((sUser + new String("lpwebappzemecs")).toCharArray()), localeLogon, null,
                null, new Timestamp(System.currentTimeMillis()));

        if (mandant != null && mandant.length() > 0) {

            theclientDto = getLogonFac().logon(Helper.getFullUsername(sUser),
                    Helper.getMD5Hash((sUser + "lpwebappzemecs").toCharArray()), localeLogon, mandant,
                    theclientDto, new Timestamp(System.currentTimeMillis()));
        } else {
            BenutzerDto benutzerDto = getBenutzerFac().benutzerFindByCBenutzerkennung("lpwebappzemecs",
                    new String(Helper.getMD5Hash("lpwebappzemecs" + "lpwebappzemecs")));
            mandant = benutzerDto.getMandantCNrDefault();
        }
    }

    getTheClient(request, response).setTheClientDto(theclientDto);

    if (command.equals(TheApp.CMD_ZE_BDESTATION)) {
        String ausweis = request.getParameter("ausweis");
        getTheClient(request, response).setSMsg("");

        if (ausweis != null && ausweis.length() > 1) {
            // Personal suchen
            PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis.substring(2));
            if (personalDto != null) {
                personalDto.setPartnerDto(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

                HashMap<String, Serializable> hmParameter = new HashMap<String, Serializable>();
                ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
                zeitdatenDto.setCWowurdegebucht("BDE-Station " + request.getRemoteHost());
                zeitdatenDto.setPersonalIId(personalDto.getIId());
                hmParameter.put("zeitdaten", zeitdatenDto);
                hmParameter.put("person", personalDto.getPartnerDto().formatFixTitelName1Name2());
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
                return getSJSPNext();
            } else {
                getTheClient(request, response)
                        .setSMsg("Ausweis " + ausweis + " bei diesem Mandanten nicht gefunden! ");
            }
        } else {
            getTheClient(request, response).setSMsg("");
        }
    }
    if (command.equals(TheApp.CMD_ZE_BDESTATION2)) {

        HashMap<String, Serializable> hmParameter = (HashMap<String, Serializable>) getTheClient(request,
                response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String option = request.getParameter("option");
        getTheClient(request, response).setSMsg("");

        ParametermandantDto parameterBdeMitTaetigkeitDto = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_BDE_MIT_TAETIGKEIT);

        Boolean bBdeMitTaetigkeit = (Boolean) parameterBdeMitTaetigkeitDto.getCWertAsObject();
        com.lp.server.artikel.service.ArtikelDto artikelDtoDefaultArbeiztszeit = null;

        if (bBdeMitTaetigkeit == false) {
            ParametermandantDto parameterDtoDefaultarbeitszeit = getParameterFac().getMandantparameter(mandant,
                    ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

            if (parameterDtoDefaultarbeitszeit != null && parameterDtoDefaultarbeitszeit.getCWert() != null
                    && !parameterDtoDefaultarbeitszeit.getCWert().trim().equals("")) {
                try {
                    artikelDtoDefaultArbeiztszeit = getArtikelFac()
                            .artikelFindByCNr(parameterDtoDefaultarbeitszeit.getCWert(), theclientDto);
                    zeitdatenDto.setArtikelIId(artikelDtoDefaultArbeiztszeit.getIId());

                } catch (RemoteException ex2) {
                    myLogger.error("Default-Arbeitszeitartikel " + parameterDtoDefaultarbeitszeit.getCWert()
                            + " nicht vorhanden.", ex2);
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } else {
                myLogger.error("Default-Arbeitszeitartikel " + parameterDtoDefaultarbeitszeit.getCWert()
                        + " nicht definiert.");
                setSJSPNext("bdestation.jsp");
                return getSJSPNext();
            }
        }

        if (option != null && option.length() > 2) {

            // Auftrag
            if (option.substring(0, 2).equals("$A") || option.substring(0, 3).equals("$EA")) {
                try {

                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_GESCHAEFTSJAHR);

                    if (parameterDto != null) {
                        if (parameterDto.getCWert() != null && parameterDto.getCWert().equals("4")) {
                            if (option.charAt(4) == 47) {
                                option = "$A"
                                        + Helper.konvertiereDatum2StelligAuf4Stellig(option.substring(2, 4))
                                        + option.substring(4);
                            }
                        }
                    }
                    AuftragDto auftragDto = null;
                    if (option.substring(0, 2).equals("$A")) {

                        auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, option.substring(2),
                                theclientDto);
                    } else {
                        auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, option.substring(3),
                                theclientDto);

                    }

                    AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                            .auftragpositionFindByAuftrag(auftragDto.getIId());

                    if (auftragDto.getAuftragstatusCNr()
                            .equals(com.lp.server.auftrag.service.AuftragServiceFac.AUFTRAGSTATUS_ERLEDIGT)) {
                        setSJSPNext("bdestation.jsp");
                        getTheClient(request, response).setSMsg("Auf Auftrag " + option.substring(2)
                                + " mit Status " + auftragDto.getAuftragstatusCNr().trim()
                                + " darf nicht gebucht werden! ");
                        return getSJSPNext();
                    } else {
                        if (auftragpositionDtos != null && auftragpositionDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                            zeitdatenDto.setIBelegartid(auftragpositionDtos[0].getBelegIId());
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG);
                            hmParameter.put("beleg", "A" + option.substring(2));

                            MaschineDto maschineDto = new MaschineDto();
                            maschineDto.setCBez("");
                            hmParameter.put("maschine", maschineDto);

                            if (option.substring(0, 2).equals("$A")) {

                                if (bBdeMitTaetigkeit == false) {
                                    setSJSPNext("bdestation.jsp");
                                    getTheClient(request, response).setSMsg(
                                            getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                                    artikelDtoDefaultArbeiztszeit.getCNr(), theclientDto));

                                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false,
                                            theclientDto);
                                    return getSJSPNext();

                                } else {
                                    setSJSPNext("bdestation4.jsp");
                                }
                            } else {
                                hmParameter.put("beleg", "A" + option.substring(3));
                                setSJSPNext("bdestation3gutschlecht.jsp");

                            }

                            return getSJSPNext();
                        } else {
                            getTheClient(request, response)
                                    .setSMsg("Auftrag " + option.substring(2) + " hat keine Positionen! ");
                            setSJSPNext("bdestation.jsp");
                            return getSJSPNext();
                        }
                    }

                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response).setSMsg(
                            "Auftrag '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }
            } // Los
            else if (option.substring(0, 2).equals("$L") || option.substring(0, 3).equals("$EL")) {
                try {

                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_GESCHAEFTSJAHR);

                    if (parameterDto != null) {
                        if (parameterDto.getCWert() != null && parameterDto.getCWert().equals("4")) {
                            if (option.charAt(4) == 47) {
                                option = "$L"
                                        + Helper.konvertiereDatum2StelligAuf4Stellig(option.substring(2, 4))
                                        + option.substring(4);
                            }
                        }
                    }

                    com.lp.server.fertigung.service.LosDto losDto = null;

                    if (option.substring(0, 2).equals("$L")) {
                        losDto = getFertigungFac().losFindByCNrMandantCNr(option.substring(2), mandant);

                    } else {
                        losDto = getFertigungFac().losFindByCNrMandantCNr(option.substring(3), mandant);

                    }

                    // WH 18-01-2006: Los benoetigt keine Positionen

                    if (losDto.getStatusCNr()
                            .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ANGELEGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_AUSGEGEBEN)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_GESTOPPT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ERLEDIGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_STORNIERT)) {
                        getTheClient(request, response)
                                .setSMsg("Auf Los " + option.substring(2) + " mit Status "
                                        + losDto.getStatusCNr().trim() + " darf nicht gebucht werden! ");
                        setSJSPNext("bdestation.jsp");
                        return getSJSPNext();
                    } else {
                        zeitdatenDto.setIBelegartid(losDto.getIId());
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);

                        if (option.substring(0, 2).equals("$L")) {

                            hmParameter.put("beleg", "L" + option.substring(2));

                            if (bBdeMitTaetigkeit == false) {
                                setSJSPNext("bdestation.jsp");
                                getTheClient(request, response).setSMsg(
                                        getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                                artikelDtoDefaultArbeiztszeit.getCNr(), theclientDto));

                                getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true,
                                        theclientDto);
                                return getSJSPNext();
                            } else {
                                setSJSPNext("bdestation3.jsp");
                            }
                        } else {
                            hmParameter.put("beleg", "L" + option.substring(3));
                            setSJSPNext("bdestation3gutschlecht.jsp");
                        }

                        return getSJSPNext();

                    }
                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response)
                            .setSMsg("Los '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } // Kombi-Code
            else if (option.length() > 1 && option.substring(0, 2).equals("$V")) {
                setSJSPNext("bdestation.jsp");

                if (option.length() < 12) {

                    getTheClient(request, response).setSMsg("Kombicode muss 10-Stellig sein ");
                    return getSJSPNext();
                }

                try {

                    ParametermandantDto parameter = getParameterFac().getMandantparameter(
                            theclientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG,
                            ParameterFac.PARAMETER_LOSNUMMER_AUFTRAGSBEZOGEN);
                    int iVerlaengerungLosnummer = 0;
                    if ((Integer) parameter.getCWertAsObject() >= 1) {
                        iVerlaengerungLosnummer = 2;
                    }

                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(option.substring(2, 12 + iVerlaengerungLosnummer), mandant);

                    // WH 18-01-2006: Los benoetigt keine Positionen

                    if (losDto.getStatusCNr()
                            .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ANGELEGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_AUSGEGEBEN)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_GESTOPPT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ERLEDIGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_STORNIERT)) {
                        getTheClient(request, response)
                                .setSMsg("Auf Los " + option.substring(2) + " mit Status "
                                        + losDto.getStatusCNr().trim() + " darf nicht gebucht werden! ");
                    } else {
                        zeitdatenDto.setIBelegartid(losDto.getIId());
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);

                        String maschine = option.substring(12 + iVerlaengerungLosnummer,
                                14 + iVerlaengerungLosnummer);

                        String taetigkeit = option.substring(14 + iVerlaengerungLosnummer);

                        MaschineDto maschineDto = new MaschineDto();
                        maschineDto.setCBez(maschine);
                        hmParameter.put("maschine", maschineDto);

                        hmParameter.put("beleg", "L" + option.substring(2, 12 + iVerlaengerungLosnummer));

                        com.lp.server.artikel.service.ArtikelDto artikelDto = null;
                        try {
                            artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto);

                            zeitdatenDto.setArtikelIId(
                                    getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto).getIId());

                        } catch (RemoteException ex2) {
                            getTheClient(request, response)
                                    .setSMsg("T\u00E4tigkeit '" + taetigkeit + "' nicht gefunden! ");
                            return getSJSPNext();
                        }

                        com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelDto.getIId());

                        if (dtos != null && dtos.length > 0) {

                            if (!maschine.trim().equals("") && !maschine.equals("--")) {

                                try {
                                    Integer maschineIId = getZeiterfassungsFac()
                                            .maschineFindByCIdentifikationsnr(maschine).getIId();

                                    com.lp.server.fertigung.service.LossollarbeitsplanDto[] sollaDtos = getFertigungFac()
                                            .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(
                                                    zeitdatenDto.getIBelegartid(),
                                                    zeitdatenDto.getArtikelIId());

                                    if (sollaDtos != null && sollaDtos.length > 0) {
                                        MaschinenzeitdatenDto maschinenzeitdatenDto = new MaschinenzeitdatenDto();
                                        maschinenzeitdatenDto.setLossollarbeitsplanIId(sollaDtos[0].getIId());
                                        maschinenzeitdatenDto.setMaschineIId(maschineIId);
                                        maschinenzeitdatenDto
                                                .setPersonalIIdGestartet(zeitdatenDto.getPersonalIId());
                                        maschinenzeitdatenDto.setTVon(zeitdatenDto.getTZeit());
                                        getZeiterfassungsFac().createMaschinenzeitdaten(maschinenzeitdatenDto,
                                                theclientDto);
                                    }

                                } catch (RemoteException ex2) {
                                    getTheClient(request, response)
                                            .setSMsg("Maschine '" + maschine + "' nicht gefunden! ");
                                    return getSJSPNext();
                                }
                            }

                            // PJ 15388
                            if (maschine.equals("--")) {
                                hmParameter.put("fertig", "");
                                if (dtos != null && dtos.length > 0) {

                                    LossollarbeitsplanDto dto = dtos[0];
                                    dto.setBFertig(Helper.boolean2Short(true));

                                    try {
                                        getFertigungFac().updateLossollarbeitsplan(dto, theclientDto);
                                        getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                                getTheClient(request, response).getData(),
                                                taetigkeit.substring(2), theclientDto));
                                        return getSJSPNext();
                                    } catch (EJBExceptionLP ex2) {
                                        getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                                        return getSJSPNext();
                                    }
                                } else {
                                    getTheClient(request, response).setSMsg("Das Los "
                                            + option.substring(2, 12 + iVerlaengerungLosnummer)
                                            + " hat keinen entsprechen Arbeitsgang mit der Artikelnummer "
                                            + taetigkeit.substring(2));
                                    return getSJSPNext();
                                }
                            }

                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        } else {
                            com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(losDto.getIId());
                            if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                                zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                            } else {
                                // Bemerkung
                                getTheClient(request, response)
                                        .setSMsg("Los " + option.substring(2) + " hat keine Positionen");
                                return getSJSPNext();

                            }
                        }

                        try {
                            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true,
                                    theclientDto);
                            getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                    getTheClient(request, response).getData(), taetigkeit, theclientDto));

                        } catch (EJBExceptionLP ex2) {
                            getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                            return getSJSPNext();
                        }
                    }
                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response)
                            .setSMsg("Los '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    return getSJSPNext();

                }
                return getSJSPNext();
            } // Sondertaetigkeit
            else {

                if (option.substring(1).equals("SALDO")) {

                    java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);
                    ts = com.lp.util.Helper.cutTimestamp(ts);

                    Calendar c = Calendar.getInstance();
                    c.setTimeInMillis(ts.getTime());

                    String saldoMitUrlaub = "";
                    try {
                        saldoMitUrlaub = getZeiterfassungsFac().erstelleMonatsAbrechnungFuerBDE(
                                zeitdatenDto.getPersonalIId(), new Integer(c.get(Calendar.YEAR)),
                                new Integer(c.get(Calendar.MONTH)), false, new java.sql.Date(ts.getTime()),
                                theclientDto, true, false);

                    } catch (EJBExceptionLP ex7) {

                        if (ex7.getCause() instanceof EJBExceptionLP) {
                            EJBExceptionLP e = (EJBExceptionLP) ex7.getCause();
                            if (e != null && e
                                    .getCode() == EJBExceptionLP.FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM) {
                                getTheClient(request, response)
                                        .setSMsg(new String("FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM"));
                                return getSJSPNext();

                            }
                        }
                        getTheClient(request, response).setSMsg(new String(ex7.getMessage()));
                        setSJSPNext("bdestation.jsp");

                    }

                    getTheClient(request, response).setSMsg(saldoMitUrlaub);

                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();

                } else if (option.substring(1).equals("TAGESSALDO")) {

                    java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);

                    Double d = getZeiterfassungsFac().berechneTagesArbeitszeit(zeitdatenDto.getPersonalIId(),
                            new java.sql.Date(System.currentTimeMillis()), theclientDto);

                    StringBuffer sb = new StringBuffer();
                    sb.append("Tagesarbeitszeit bis jetzt: "
                            + Helper.rundeKaufmaennisch(new BigDecimal(d.doubleValue()), 2).doubleValue()
                            + "h");
                    sb.append("\r\n");

                    getTheClient(request, response).setSMsg(new String(sb));
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();

                } else {

                    try {
                        TaetigkeitDto taetigkeitDto = getZeiterfassungsFac()
                                .taetigkeitFindByCNr(option.substring(1), theclientDto);

                        zeitdatenDto.setTaetigkeitIId(taetigkeitDto.getIId());
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true, theclientDto);
                        getTheClient(request, response).setSMsg(
                                getMeldungGebuchtFuerBDE(hmParameter, option.substring(1), theclientDto));
                    } catch (EJBExceptionLP ex1) {
                        getTheClient(request, response)
                                .setSMsg("Sondert\u00E4tigkeit '" + option.substring(1) + "' nicht gefunden! ");
                    }
                    hmParameter.put("zeitdaten", zeitdatenDto);
                    setSJSPNext("bdestation.jsp");

                }
                getTheClient(request, response).setData(hmParameter);
                return getSJSPNext();
            }
        }

    } else if (command.equals(TheApp.CMD_ZE_BDESTATION3)) {

        HashMap<String, Serializable> hmParameter = (HashMap<String, Serializable>) getTheClient(request,
                response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String option = request.getParameter("option");
        getTheClient(request, response).setSMsg("");

        if (option != null && option.length() > 0) {

            if (option.equals("$PLUS")) {
                // CK: PJ5589
                String beleg = (String) hmParameter.get("beleg");

                if (beleg.substring(0, 1).equals("L")) {
                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                    ZeitverteilungDto zeitverteilungDto = new ZeitverteilungDto();
                    zeitverteilungDto.setLosIId(losDto.getIId());
                    zeitverteilungDto.setTZeit(new Timestamp(System.currentTimeMillis()));
                    zeitverteilungDto.setPersonalIId(zeitdatenDto.getPersonalIId());
                    try {
                        getZeiterfassungsFac().createZeitverteilung(zeitverteilungDto, theclientDto);
                    } catch (EJBExceptionLP e) {
                        hmParameter.remove("beleg");
                        getTheClient(request, response).setData(hmParameter);
                        getTheClient(request, response)
                                .setSMsg("Los '" + losDto.getCNr() + "' wurde bereits mit $PLUS gebucht");
                        setSJSPNext("bdestation2.jsp");
                        return getSJSPNext();
                    }

                } else {
                    getTheClient(request, response).setSMsg("$PLUS ist nur f\u00FCr Lose m\u00F6glich.");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

                hmParameter.remove("beleg");
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
                return getSJSPNext();

            } else if (option.equals("$STORNO")) {
                getZeiterfassungsFac().removeZeitverteilungByPersonalIIdUndTag(zeitdatenDto.getPersonalIId(),
                        new Timestamp(System.currentTimeMillis()));
                hmParameter.remove("beleg");
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
            } else if (option.equals("$SPERREN")) {

                String beleg = (String) hmParameter.get("beleg");
                if (beleg.substring(0, 1).equals("L")) {
                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                    if (losDto.getStuecklisteIId() != null) {
                        Integer artikelIId = getStuecklisteFac()
                                .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto)
                                .getArtikelIId();

                        SperrenDto sDto = getArtikelFac().sperrenFindBDurchfertigung(theclientDto);

                        if (sDto != null) {

                            ArtikelsperrenDto aspDtoVorhanden = getArtikelFac()
                                    .artikelsperrenFindByArtikelIIdSperrenIIdOhneExc(artikelIId, sDto.getIId());
                            if (aspDtoVorhanden == null) {
                                ArtikelsperrenDto spDto = new ArtikelsperrenDto();
                                spDto.setArtikelIId(artikelIId);
                                spDto.setSperrenIId(sDto.getIId());

                                PersonalDto pDto = getPersonalFac()
                                        .personalFindByPrimaryKey(zeitdatenDto.getPersonalIId(), theclientDto);

                                String grund = beleg + " " + pDto.getPartnerDto().getCName1nachnamefirmazeile1()
                                        + " " + pDto.getPartnerDto().getCName2vornamefirmazeile2();

                                if (grund.length() > 80) {
                                    grund = grund.substring(0, 79);
                                }

                                spDto.setCGrund(grund);
                                getArtikelFac().createArtikelsperren(spDto, theclientDto);
                                getTheClient(request, response)
                                        .setSMsg("Los " + losDto.getCNr() + " durch Fertigung gesperrt.");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            } else {
                                getTheClient(request, response)
                                        .setSMsg("St\u00FCckliste bereits durch Fertigung gesperrt.");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            }
                        } else {
                            getTheClient(request, response)
                                    .setSMsg("Fertigungssperre in Grunddaten nicht definiert.");
                            setSJSPNext("bdestation.jsp");
                            return getSJSPNext();
                        }

                    }

                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } else if (option.equals("$FERTIG")) {
                hmParameter.put("fertig", "");
                MaschineDto maschineDto = new MaschineDto();
                maschineDto.setCBez("Fertig");
                hmParameter.put("maschine", maschineDto);
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation4.jsp");
                return getSJSPNext();
            } else {

                setSJSPNext("bdestation.jsp");
                // MASCHINE
                if (option.substring(0, 2).equals("$M")) {

                    String maschine = option.substring(2);

                    try {
                        MaschineDto maschineDto = getZeiterfassungsFac()
                                .maschineFindByCIdentifikationsnr(maschine);
                        hmParameter.put("zeitdaten", zeitdatenDto);
                        hmParameter.put("maschine", maschineDto);
                        setSJSPNext("bdestation4.jsp");
                        return getSJSPNext();

                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response).setSMsg("Maschine '" + maschine + "' nicht gefunden! ");
                        return getSJSPNext();
                    }

                } // TAETIGKEIT
                else {

                    String taetigkeit = option.substring(2);

                    com.lp.server.artikel.service.ArtikelDto artikelDto = null;
                    try {
                        artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto);

                        zeitdatenDto.setArtikelIId(
                                getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto).getIId());

                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response)
                                .setSMsg("T\u00E4tigkeit '" + taetigkeit + "' nicht gefunden! ");
                        return getSJSPNext();
                    }

                    String beleg = (String) hmParameter.get("beleg");

                    if (beleg.substring(0, 1).equals("L")) {
                        com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                                .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                        ZeitverteilungDto[] zvDtos = getZeiterfassungsFac()
                                .zeitverteilungFindByPersonalIIdUndTag(zeitdatenDto.getPersonalIId(),
                                        new Timestamp(System.currentTimeMillis()));
                        if (zvDtos != null & zvDtos.length > 0) {

                            if (zvDtos[0].getArtikelIId() == null) {
                                // Abschlussbuchung eintragen
                                ZeitverteilungDto zv = zvDtos[0];
                                zv.setIId(null);
                                zv.setLosIId(losDto.getIId());
                                zv.setArtikelIId(artikelDto.getIId());
                                try {
                                    getZeiterfassungsFac().createZeitverteilung(zv, theclientDto);
                                } catch (EJBExceptionLP e) {
                                    hmParameter.remove("beleg");
                                    getTheClient(request, response).setData(hmParameter);
                                    getTheClient(request, response).setSMsg(
                                            "Los '" + losDto.getCNr() + "' wurde bereits mit $PLUS gebucht");
                                    setSJSPNext("bdestation2.jsp");
                                    return getSJSPNext();
                                }

                                hmParameter.remove("beleg");
                                getTheClient(request, response).setData(hmParameter);
                                getTheClient(request, response)
                                        .setSMsg("Beginnbuchungen f\u00FCr 'Zeitverteilung' abgeschlossen");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            }
                        }

                        com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelDto.getIId());

                        if (dtos != null && dtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        } else {
                            com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(losDto.getIId());
                            if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                                zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                            } else {
                                // Bemerkung
                                getTheClient(request, response)
                                        .setSMsg("Los " + beleg.substring(1) + " hat keine Positionen");
                                return getSJSPNext();

                            }
                        }
                    }

                    try {
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true, theclientDto);
                        getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                getTheClient(request, response).getData(), taetigkeit, theclientDto));

                        return getSJSPNext();
                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                        return getSJSPNext();
                    }
                }
            }
        }
    } else if (command.equals(TheApp.CMD_ZE_BDESTATION3GUTSCHLECHT)) {
        HashMap<Object, Object> hmParameter = (HashMap<Object, Object>) getTheClient(request, response)
                .getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");

        String gutstueck = request.getParameter("gutstueck");
        if (gutstueck.equals("")) {
            gutstueck = "0";
        }
        String schlechtstueck = request.getParameter("schlechtstueck");
        if (schlechtstueck.equals("")) {
            schlechtstueck = "0";
        }

        BigDecimal bdGutstueck = null;
        BigDecimal bdSchlechtstueck = null;
        try {
            bdGutstueck = new BigDecimal(gutstueck);
            bdSchlechtstueck = new BigDecimal(schlechtstueck);
        } catch (NumberFormatException ex9) {
            getTheClient(request, response)
                    .setSMsg("Gut/Schlechtst\u00FCck d\u00FCrfen nur aus Zahlen bestehen.");
            setSJSPNext("bdestation.jsp");
            return getSJSPNext();
        }

        if (bdGutstueck.doubleValue() < 0 || bdSchlechtstueck.doubleValue() < 0) {
            getTheClient(request, response).setSMsg("Gut/Schlechtst\u00FCck m\u00FCssen Positiv sein.");
            setSJSPNext("bdestation.jsp");
            return getSJSPNext();
        }
        Integer taetigkeitIId_Ende = getZeiterfassungsFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId();
        ZeitdatenDto zeitdatenDtoEnde = new ZeitdatenDto();
        zeitdatenDtoEnde.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 1000));
        zeitdatenDtoEnde.setTaetigkeitIId(taetigkeitIId_Ende);
        zeitdatenDtoEnde.setPersonalIId(zeitdatenDto.getPersonalIId());

        // Hole letzten begonnenen Auftrag und hinterlege gut/schlechtstueck
        Session session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class);
        liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, zeitdatenDto.getPersonalIId()));
        liste.add(Expression.gt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                Helper.cutTimestamp(zeitdatenDto.getTZeit())));

        liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
        List<?> letzerAuftrag = liste.list();

        Iterator<?> it = letzerAuftrag.iterator();
        ZeitdatenDto letzterAuftrag = null;

        while (it.hasNext()) {
            FLRZeitdaten flrLetzerAuftrag = (FLRZeitdaten) it.next();

            if (flrLetzerAuftrag.getC_belegartnr() != null && flrLetzerAuftrag.getI_belegartid() != null) {
                if (flrLetzerAuftrag.getC_belegartnr().equals(zeitdatenDto.getCBelegartnr())
                        && flrLetzerAuftrag.getI_belegartid().equals(zeitdatenDto.getIBelegartid())) {
                    letzterAuftrag = getZeiterfassungsFac()
                            .zeitdatenFindByPrimaryKey(flrLetzerAuftrag.getI_id(), theclientDto);
                    break;
                }
            } else if (flrLetzerAuftrag.getTaetigkeit_i_id() != null
                    && flrLetzerAuftrag.getTaetigkeit_i_id().equals(taetigkeitIId_Ende)) {
                break;
            }

        }

        if (letzterAuftrag != null) {
            // Hier eintragen
            // letzterAuftrag.setNGut(bdGutstueck);
            // letzterAuftrag.setNSchlecht(bdSchlechtstueck);
            getZeiterfassungsFac().updateZeitdaten(letzterAuftrag, theclientDto);
            // und buche ENDE
            getZeiterfassungsFac().createZeitdaten(zeitdatenDtoEnde, false, false, false, theclientDto);

        } else {
            // was nun?
            // Beginn und ende Buchen
            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, false, false, false, theclientDto);
            getZeiterfassungsFac().createZeitdaten(zeitdatenDtoEnde, false, false, false, theclientDto);

        }

        session.close();
        getTheClient(request, response).setSMsg(
                getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(), null, theclientDto));

        setSJSPNext("bdestation.jsp");
        return getSJSPNext();
    }

    else if (command.equals(TheApp.CMD_ZE_BDESTATION4)) {
        HashMap<?, ?> hmParameter = (HashMap<?, ?>) getTheClient(request, response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String taetigkeit = request.getParameter("taetigkeit");
        getTheClient(request, response).setSMsg("");
        if (taetigkeit != null && taetigkeit.length() > 0) {

            setSJSPNext("bdestation.jsp");
            com.lp.server.artikel.service.ArtikelDto artikelDto = null;
            try {
                artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit.substring(2), theclientDto);

                zeitdatenDto.setArtikelIId(artikelDto.getIId());
            } catch (EJBExceptionLP ex2) {
                getTheClient(request, response)
                        .setSMsg("T\u00E4tigkeit '" + taetigkeit.substring(2) + "' nicht gefunden! ");
                return getSJSPNext();
            }

            String beleg = (String) hmParameter.get("beleg");

            if (beleg.substring(0, 1).equals("L")) {
                com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                        .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                        .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                artikelDto.getIId());

                if (hmParameter.containsKey("fertig")) {

                    if (dtos != null && dtos.length > 0) {

                        LossollarbeitsplanDto dto = dtos[0];
                        dto.setBFertig(Helper.boolean2Short(true));

                        ParametermandantDto parameterDtoTriggerTops = getParameterFac().getMandantparameter(
                                mandant, ParameterFac.KATEGORIE_FERTIGUNG,
                                ParameterFac.PARAMETER_TRIGGERT_TRUMPF_TOPS_ABLIEFERUNG);

                        try {
                            getFertigungFac().updateLossollarbeitsplan(dto, theclientDto);

                            // PJ 17916
                            if (parameterDtoTriggerTops.getCWert() != null
                                    && parameterDtoTriggerTops.getCWert().trim().length() > 0) {
                                ArtikelDto aDto = getArtikelFac().artikelFindByCNrMandantCNrOhneExc(
                                        parameterDtoTriggerTops.getCWert().trim(), theclientDto.getMandant());

                                if (aDto == null) {
                                    getTheClient(request, response).setSMsg(
                                            "Der Artikel, der im Parameter TRIGGERT_TRUMPF_TOPS_ABLIEFERUNG hinterlegt ist, exisitiert nicht! "
                                                    + parameterDtoTriggerTops.getCWert());
                                    return getSJSPNext();
                                }
                                if (aDto != null && aDto.getIId().equals(artikelDto.getIId())) {
                                    getFertigungFac().bucheTOPSArtikelAufHauptLager(losDto.getIId(),
                                            theclientDto, null);
                                }
                            }

                            getTheClient(request, response)
                                    .setSMsg(getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                            taetigkeit.substring(2), theclientDto));
                            return getSJSPNext();
                        } catch (EJBExceptionLP ex2) {
                            getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                            return getSJSPNext();
                        }
                    } else {
                        getTheClient(request, response).setSMsg("Das Los " + beleg.substring(1)
                                + " hat keinen entsprechen Arbeitsgang mit der Artikelnummer "
                                + taetigkeit.substring(2));
                        return getSJSPNext();
                    }

                }

                if (dtos != null && dtos.length > 0) {
                    zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                } else {
                    com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                            .lossollarbeitsplanFindByLosIId(losDto.getIId());
                    if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                        zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                    } else {
                        // Bemerkung
                        getTheClient(request, response)
                                .setSMsg("Los " + beleg.substring(1) + " hat keine Positionen");
                        return getSJSPNext();

                    }
                }
            }

            // Maschinenzeitdaten buchen (geht nur auf Los)

            if (hmParameter.containsKey("maschine") && zeitdatenDto.getCBelegartnr() != null
                    && zeitdatenDto.getCBelegartnr().equals(LocaleFac.BELEGART_LOS)
                    && zeitdatenDto.getIBelegartid() != null) {
                MaschineDto maschineDto = (MaschineDto) hmParameter.get("maschine");

                com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                        .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(zeitdatenDto.getIBelegartid(),
                                zeitdatenDto.getArtikelIId());

                if (dtos != null && dtos.length > 0) {
                    MaschinenzeitdatenDto maschinenzeitdatenDto = new MaschinenzeitdatenDto();
                    maschinenzeitdatenDto.setPersonalIIdGestartet(zeitdatenDto.getPersonalIId());
                    maschinenzeitdatenDto.setTVon(zeitdatenDto.getTZeit());
                    maschinenzeitdatenDto.setLossollarbeitsplanIId(dtos[0].getIId());
                    maschinenzeitdatenDto.setMaschineIId(maschineDto.getIId());
                    getZeiterfassungsFac().createMaschinenzeitdaten(maschinenzeitdatenDto, theclientDto);

                }
            }

            try {
                getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                        getTheClient(request, response).getData(), taetigkeit.substring(2), theclientDto));
                return getSJSPNext();
            } catch (EJBExceptionLP ex2) {
                getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                return getSJSPNext();
            }

        }
    } else if (command.equals(TheApp.CMD_ZE_MECS_ONLCHECK)) {
        String beleg = request.getParameter("beleg");

        if (beleg == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'beleg' muss angegeben werden");
            return null;
        }

        beleg = beleg.trim();

        if (beleg.length() < 2) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Parameter 'beleg' muss mindestens 2 Zeichen lang sein");
            return null;
        }

        String status = null;
        BigDecimal offeneMenge = new BigDecimal(0);

        String ueberliefernErlaubt = "1";
        try {

            if (beleg.substring(0, 2).equals("$A")) {

                AuftragDto auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, beleg.substring(2),
                        theclientDto);
                status = auftragDto.getAuftragstatusCNr();

            } else if (beleg.substring(0, 2).equals("$L")) {
                LosDto losDto = getFertigungFac().losFindByCNrMandantCNr(beleg.substring(2), mandant);
                status = losDto.getStatusCNr();

                BigDecimal erledigteMenge = getFertigungFac().getErledigteMenge(losDto.getIId(), theclientDto);
                offeneMenge = losDto.getNLosgroesse().subtract(erledigteMenge);

                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stkDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto);

                    if (Helper.short2boolean(stkDto.getBUeberlieferbar()) == false) {
                        ueberliefernErlaubt = "0";
                    }

                }

            }

        } catch (EJBExceptionLP ex8) {
            status = "Beleg existiert nicht";
        }

        StringBuffer sb = new StringBuffer();

        sb.append(Helper.fitString2Length(beleg, 40, ' '));
        sb.append(Helper.fitString2Length(status, 40, ' '));

        // Offene Menge 17 stellig

        DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
        dfs.setDecimalSeparator('.');
        DecimalFormat dFormat = new DecimalFormat("0.0000", dfs);
        if (offeneMenge.doubleValue() < 0) {
            sb.append("-");
        } else {
            sb.append(" ");
        }
        sb.append(Helper.fitString2LengthAlignRight(dFormat.format(offeneMenge.abs()), 16, ' '));
        sb.append(ueberliefernErlaubt);
        sb.append("\r\n");

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_ONLINECHECK_ABL)) {
        String beleg = request.getParameter("beleg");
        String menge = request.getParameter("menge");

        if (beleg == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'beleg' muss angegeben werden");
            return null;
        }
        if (menge == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'menge' muss angegeben werden");
            return null;
        }

        BigDecimal nMenge = new BigDecimal(menge.trim());

        beleg = beleg.trim();

        if (beleg.length() < 2) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Parameter 'beleg' muss mindestens 2 Zeichen lang sein");
            return null;
        }

        String status = null;
        BigDecimal offeneMenge = new BigDecimal(0);
        boolean ueberliefernErlaubt = true;
        try {

            if (beleg.substring(0, 2).equals("$A")) {

                AuftragDto auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, beleg.substring(2),
                        theclientDto);
                status = auftragDto.getAuftragstatusCNr();

            } else if (beleg.substring(0, 2).equals("$L")) {
                LosDto losDto = getFertigungFac().losFindByCNrMandantCNr(beleg.substring(2), mandant);
                status = losDto.getStatusCNr();

                BigDecimal erledigteMenge = getFertigungFac().getErledigteMenge(losDto.getIId(), theclientDto);
                offeneMenge = losDto.getNLosgroesse().subtract(erledigteMenge);
                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stkDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto);
                    ueberliefernErlaubt = Helper.short2boolean(stkDto.getBUeberlieferbar());
                }

            }

        } catch (EJBExceptionLP ex8) {
            status = "Beleg existiert nicht";
        }

        StringBuffer sb = new StringBuffer();

        // Zeile1
        sb.append(Helper.fitString2Length(beleg, 40, ' '));
        sb.append(Helper.fitString2Length(status, 40, ' '));
        sb.append("\r\n");
        // Offene Menge 17 stellig

        // Zeile2

        // Zuerst 3 Stellen Fehlernummer: 000= Abliefern moeglich 001=
        // Status erlaubt kein Abliefern - 002=
        // Menge der Ablieferung zu gross

        String fehlercode = "";
        String text1 = "";
        String text2 = "";
        if (status.equals(LocaleFac.STATUS_ERLEDIGT) || status.equals(LocaleFac.STATUS_STORNIERT)
                || status.equals(LocaleFac.STATUS_ANGELEGT) || status.equals(LocaleFac.STATUS_GESTOPPT)) {
            fehlercode = "001";
            text1 = "Nicht erlaubt!";
            text2 = "Status: " + status;
        } else {

            if (nMenge.doubleValue() <= offeneMenge.doubleValue()) {
                // Wenn Abliefermenge kleiner als Offene Menge, dann =OK
                fehlercode = "000";
                text1 = "Ablieferung";
                text2 = "erlaubt";
            } else {
                if (ueberliefernErlaubt == false) {
                    fehlercode = "002";
                    text1 = "Nicht erlaubt!";

                    DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
                    dfs.setDecimalSeparator('.');
                    DecimalFormat dFormat = new DecimalFormat("#####0", dfs);
                    text2 = "Nur " + Helper.fitString2LengthAlignRight(dFormat.format(offeneMenge), 6, ' ')
                            + " Stk offen";
                } else {
                    fehlercode = "000";
                    text1 = "Ablieferung";
                    text2 = "erlaubt";
                }
            }
        }
        sb.append(fehlercode);

        // 37 Leerstellen
        sb.append(Helper.fitString2Length("", 37, ' '));

        // Text1
        sb.append(Helper.fitString2Length(text1, 20, ' '));
        // Text2
        sb.append(Helper.fitString2Length(text2, 20, ' '));

        sb.append("\r\n");

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_AUSWEISE)) {
        String fingerprint = request.getParameter("fingerprint");

        if (fingerprint != null) {
            StringBuffer sb = new StringBuffer();
            PersonalfingerDto[] personalfingerDtos = getZutrittscontrollerFac().personalfingerFindAll();
            for (int i = 0; i < personalfingerDtos.length; i++) {
                PersonalfingerDto personalfingerDto = personalfingerDtos[i];
                String id = personalfingerDto.getIId() + "";
                id = Helper.fitString2LengthAlignRight(id, 8, '0');
                StringBuffer tmp = new StringBuffer();
                // unbedingt nach ausweis sortieren
                tmp.setLength(0);
                tmp.append(Helper.fitString2Length(id, 20, ' '));

                PersonalDto personalDto = getPersonalFac()
                        .personalFindByPrimaryKey(personalfingerDto.getPersonalIId(), theclientDto);

                tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
                tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

                String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
                String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

                if (sVorname == null) {
                    sVorname = "";
                }
                tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
                sb.append(tmp).append("\r\n");

            }
            getTheClient(request, response).setSMsg(new String(sb));
        } else {

            // Ausweisnummern holen
            StringBuffer sb = new StringBuffer();
            PersonalDto[] personalDtos = getPersonalFac().personalFindByCAusweisSortiertNachCAusweis();

            ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                    ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_LEAD_IN_AUSWEISNUMMER_MECS);

            String leadIn = "";
            if (parameterDto.getCWert() != null) {
                leadIn = parameterDto.getCWert().trim();
            }

            for (int i = 0; i < personalDtos.length; i++) {
                PersonalDto personalDto = personalDtos[i];
                personalDto.setPartnerDto(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));
                StringBuffer tmp = new StringBuffer();
                // unbedingt nach ausweis sortieren
                tmp.setLength(0);
                tmp.append(Helper.fitString2Length(leadIn + personalDto.getCAusweis(), 20, ' ')); // ausweis
                tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
                tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

                String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
                String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

                if (sVorname == null) {
                    sVorname = "";
                }

                tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
                sb.append(tmp).append("\r\n");

            }

            getTheClient(request, response).setSMsg(new String(sb));
        }
    } else if (command.equals(TheApp.CMD_ZE_MECS_ERLAUBTETAETIGKEITEN)) {

        Session session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria liste = session.createCriteria(FLRTaetigkeit.class);
        liste.add(Expression.eq(ZeiterfassungFac.FLR_TAETIGKEIT_B_BDEBUCHBAR, Helper.boolean2Short(true)));
        liste.addOrder(Order.asc("c_nr"));
        List<?> lReisezeiten = liste.list();
        Iterator<?> it = lReisezeiten.iterator();

        StringBuffer sb = new StringBuffer();

        while (it.hasNext()) {
            FLRTaetigkeit flrTaetigkeit = (FLRTaetigkeit) it.next();
            StringBuffer tmp = new StringBuffer();

            tmp.setLength(0);
            tmp.append('$');
            tmp.append(Helper.fitString2LengthAlignRight(flrTaetigkeit.getC_nr(), 14, ' ')); // persnr
            sb.append(tmp).append("\r\n");

        }
        session.close();

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_PERSSTAMM)) {
        // Personalstamm holen

        StringBuffer sb = new StringBuffer();

        // unbedingt nach personalnummer sortieren
        PersonalDto[] personalDtos = getPersonalFac().personalFindByCAusweisSortiertNachPersonalnr();
        for (int i = 0; i < personalDtos.length; i++) {
            PersonalDto personalDto = personalDtos[i];
            personalDto.setPartnerDto(
                    getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));
            StringBuffer tmp = new StringBuffer();

            tmp.setLength(0);
            tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
            tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

            String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
            String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

            if (sVorname == null) {
                sVorname = "";
            }

            tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
            sb.append(tmp).append("\r\n");

        }
        getTheClient(request, response).setSMsg(new String(sb));
    } else if (command.equals(TheApp.CMD_ZE_MECS_SALDO)) {
        String ausweis = "";
        try {
            ausweis = request.getParameter("ausweis");
        } catch (Exception e) {
            getTheClient(request, response).setBResponseIsReady(true);
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'ausweis' nicht angegeben");
            myLogger.error("doPost; Exception aufgetreten", e);
            return null;
        }
        if (ausweis.startsWith("$P")) {
            ausweis = ausweis.substring(2);
        }

        ausweis = ausweis.trim();

        ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_LEAD_IN_AUSWEISNUMMER_MECS);

        String leadIn = "";
        if (parameterDto.getCWert() != null) {
            leadIn = parameterDto.getCWert().trim();
            int iLaenge = leadIn.length();
            if (ausweis.length() > iLaenge) {
                ausweis = ausweis.substring(iLaenge);
            }
        }

        PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis);

        personalDto.setPartnerDto(
                getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

        java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);
        ts = com.lp.util.Helper.cutTimestamp(ts);

        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(ts.getTime());

        String urlaub = null;
        try {
            urlaub = getZeiterfassungsFac().erstelleMonatsAbrechnungFuerBDE(personalDto.getIId(),
                    new Integer(c.get(Calendar.YEAR)), new Integer(c.get(Calendar.MONTH)), false,
                    new java.sql.Date(ts.getTime()), theclientDto, true, false);

        } catch (EJBExceptionLP ex7) {

            if (ex7.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP e = (EJBExceptionLP) ex7.getCause();
                if (e != null && e.getCode() == EJBExceptionLP.FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM) {
                    getTheClient(request, response)
                            .setSMsg(new String("FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM"));
                    return getSJSPNext();

                }
            }
            getTheClient(request, response).setSMsg(new String(ex7.getMessage()));
            setSJSPNext("bdestation.jsp");

        }

        getTheClient(request, response).setSMsg(urlaub);

    } else if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)
            || command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHENFINGERPRINT)) {
        String record = null;

        if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)) {
            record = request.getParameter("record");
        } else {
            record = request.getParameter("recordfingerprint");

        }

        record = Helper.fitString2Length(record, 200, ' ');

        String schluesselNr = record.substring(19, 39).trim();
        String zeit = record.substring(5, 19);
        String taetigkeit = record.substring(3, 5);
        // SP753
        String terminal = record.substring(64, 86);
        // Damit die Sollzeitenueberschreitungspruefeung nicht durchgefuehrt
        // wird:
        terminal = "ZT:" + terminal;
        terminal = terminal.trim();

        boolean bAbliefern = false;

        ArtikelDto artikelDtoTaetigkeit = null;

        if (record.substring(130, 155).trim().equals("$ABLIEFERN")) {
            bAbliefern = true;
        } else {

            artikelDtoTaetigkeit = getArtikelFac().artikelFindByCNrOhneExc(record.substring(132, 155).trim(),
                    theclientDto);
        }

        ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
        ZeitdatenDto zeitdatenDtoEnde = new ZeitdatenDto();
        zeitdatenDto.setCWowurdegebucht(terminal);
        zeitdatenDtoEnde.setCWowurdegebucht(terminal);

        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, new Integer(zeit.substring(0, 4)).intValue());
        c.set(Calendar.MONTH, new Integer(zeit.substring(4, 6)).intValue() - 1);
        c.set(Calendar.DAY_OF_MONTH, new Integer(zeit.substring(6, 8)).intValue());
        c.set(Calendar.HOUR_OF_DAY, new Integer(zeit.substring(8, 10)).intValue());
        c.set(Calendar.MINUTE, new Integer(zeit.substring(10, 12)).intValue());
        c.set(Calendar.SECOND, new Integer(zeit.substring(12, 14)).intValue());

        zeitdatenDto.setTZeit(new java.sql.Timestamp(c.getTime().getTime()));
        zeitdatenDtoEnde.setTZeit(new java.sql.Timestamp(c.getTime().getTime() + 1000));
        zeitdatenDto.setTAendern(zeitdatenDto.getTZeit());
        zeitdatenDtoEnde.setTAendern(zeitdatenDtoEnde.getTZeit());

        // Wenn hier NullPointerException, dann kann kein Personal mit
        // Ausweisnummer gefunden werden
        Integer personalIId = null;

        if (schluesselNr.startsWith("$P")) {
            try {
                personalIId = getPersonalFac().personalFindByCAusweis(schluesselNr.substring(2)).getIId();
            } catch (NullPointerException ex11) {
                String msg = "Person mit Ausweis " + schluesselNr + " nicht vorhanden. ORIGINAL-Request:"
                        + record;
                myLogger.error(msg, ex11);
                response.setStatus(HttpServletResponse.SC_OK);
                return getSJSPNext();

            }

        } else {
            if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)) {
                try {
                    personalIId = getPersonalFac().personalFindByCAusweis(schluesselNr).getIId();
                } catch (NullPointerException ex11) {
                    String msg = "Person mit Ausweis " + schluesselNr + " nicht vorhanden. ORIGINAL-Request:"
                            + record;
                    myLogger.error(msg, ex11);

                    response.setStatus(HttpServletResponse.SC_OK);
                    return getSJSPNext();

                }

            } else if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHENFINGERPRINT)) {
                Integer i = new Integer(schluesselNr);
                getZutrittscontrollerFac().personalfingerFindByPrimaryKey(i).getPersonalIId();
                personalIId = getZutrittscontrollerFac().personalfingerFindByPrimaryKey(i).getPersonalIId();
            }
        }

        zeitdatenDto.setPersonalIId(personalIId);
        zeitdatenDtoEnde.setPersonalIId(personalIId);
        zeitdatenDtoEnde.setTaetigkeitIId(getZeiterfassungsFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId());

        // Taetigkeiten, die MECS liefert muessen in der Tabelle LP_KEYVALUE
        // uebersetzt werden (als String)
        // Bsp: MECSTERMINAL|B1|KOMMT|java.lang.String
        try {
            String sTaetigkeit = null;

            if (schluesselNr.startsWith("$P")) {
                sTaetigkeit = record.substring(110, 126);
                Integer taetigkeitIId_Ende = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId();
                String gutStueck = record.substring(160, 172);
                String schlechtStueck = record.substring(173, 189);

                BigDecimal nGutStueck = new BigDecimal(gutStueck.trim());
                BigDecimal nSchlechtStueck = new BigDecimal(schlechtStueck.trim());
                Integer artikelIId = null;

                if (artikelDtoTaetigkeit == null) {
                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

                    if (parameterDto != null && parameterDto.getCWert() != null
                            && !parameterDto.getCWert().trim().equals("")) {
                        try {
                            artikelIId = getArtikelFac().artikelFindByCNr(parameterDto.getCWert(), theclientDto)
                                    .getIId();

                        } catch (RemoteException ex2) {
                            myLogger.error("Default-Arbeitszeitartikel " + parameterDto.getCWert()
                                    + " nicht vorhanden.", ex2);
                            return getSJSPNext();
                        }

                    } else {
                        myLogger.error(
                                "Default-Arbeitszeitartikel " + parameterDto.getCWert() + " nicht definiert.");
                        return getSJSPNext();
                    }
                } else {
                    artikelIId = artikelDtoTaetigkeit.getIId();
                }

                if (sTaetigkeit.startsWith("$A")) {

                    AuftragDto auftragDto = null;
                    try {
                        if (sTaetigkeit.startsWith("$A")) {
                            auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant,
                                    sTaetigkeit.substring(2).trim(), theclientDto);
                        } else {
                            auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant,
                                    sTaetigkeit.substring(3).trim(), theclientDto);

                        }
                    } catch (RemoteException ex8) {
                        zeitdatenDto.setCBemerkungZuBelegart(
                                "Auftrag " + sTaetigkeit.substring(2).trim() + " konnte nicht gefunden werden");
                        zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);

                        return getSJSPNext();
                    }
                    // Wenn Auftragsbeginn ->
                    if (sTaetigkeit.startsWith("$A")) {
                        AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                                .auftragpositionFindByAuftrag(auftragDto.getIId());

                        if (auftragpositionDtos.length > 0) {
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG);
                            zeitdatenDto.setArtikelIId(artikelIId);
                            zeitdatenDto.setIBelegartid(auftragDto.getIId());
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                        } else {
                            myLogger.error("Buchung von MECS-TERMINAL, Ausweis: " + schluesselNr + ", Auftrag"
                                    + sTaetigkeit + " hat keine Positionen.");
                            return getSJSPNext();
                        }
                    }
                } else if (sTaetigkeit.startsWith("$EL") || sTaetigkeit.startsWith("$L")) {

                    com.lp.server.fertigung.service.LosDto losDto = null;
                    try {
                        if (sTaetigkeit.startsWith("$L")) {

                            losDto = getFertigungFac().losFindByCNrMandantCNr(

                                    sTaetigkeit.substring(2).trim(), mandant);

                        } else {
                            losDto = getFertigungFac().losFindByCNrMandantCNr(

                                    sTaetigkeit.substring(3).trim(), mandant);

                        }

                    } catch (EJBExceptionLP ex10) {
                        zeitdatenDto.setCBemerkungZuBelegart(
                                "Los " + sTaetigkeit.substring(2).trim() + " konnte nicht gefunden werden");
                        zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                        return getSJSPNext();
                    }

                    if (bAbliefern == true) {
                        LosablieferungDto losablieferungDto = new LosablieferungDto();
                        losablieferungDto.setLosIId(losDto.getIId());
                        String menge = record.substring(155, 170);
                        BigDecimal nMenge = new BigDecimal(menge.trim());
                        losablieferungDto.setNMenge(nMenge);
                        losablieferungDto.setTAendern(zeitdatenDto.getTZeit());

                        if (nMenge.doubleValue() > 0) {
                            // lt. FM
                            BigDecimal bdBisherErledigt = getFertigungFac().getErledigteMenge(losDto.getIId(),
                                    theclientDto);

                            if (bdBisherErledigt.add(nMenge).doubleValue() > losDto.getNLosgroesse()
                                    .doubleValue()) {
                                getFertigungFac().aendereLosgroesse(losDto.getIId(),
                                        bdBisherErledigt.add(nMenge).intValue(), false, theclientDto);

                                // SP933
                                losDto.setNLosgroesse(bdBisherErledigt.add(nMenge));

                            }

                            try {
                                getFertigungFac().bucheMaterialAufLos(losDto, nMenge, false, false, true,
                                        theclientDto, null, false);
                            } catch (Exception e1) {
                                // Terminal darf keinen Fehler bekommen
                            }

                            getFertigungFac().createLosablieferungFuerTerminalOhnePreisberechnung(
                                    losablieferungDto, theclientDto, false);

                            try {
                                getFertigungFac().aktualisiereNachtraeglichPreiseAllerLosablieferungen(
                                        losDto.getIId(), theclientDto, true);
                            } catch (Exception e) {
                                // PREISBERECHNUNG FEHLGESCHLAGEN
                                myLogger.error("Preisberechnung der Ablieferungen f\u00FCr Los "
                                        + losDto.getCNr() + " fehlgeschlagen. Bitte manuell ausfuehren", e);
                            }
                        }

                        // PJ17748

                        ParametermandantDto parameterAblieferungBuchtEndeDto = getParameterFac()
                                .getMandantparameter(mandant, ParameterFac.KATEGORIE_FERTIGUNG,
                                        ParameterFac.PARAMETER_ABLIEFERUNG_BUCHT_ENDE);

                        Boolean bAblieferungBuchtEndeDto = (Boolean) parameterAblieferungBuchtEndeDto
                                .getCWertAsObject();

                        if (bAblieferungBuchtEndeDto == true) {
                            zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                            zeitdatenDto.setCBelegartnr(null);
                            zeitdatenDto.setArtikelIId(null);
                            zeitdatenDto.setIBelegartid(null);
                            zeitdatenDto.setIBelegartpositionid(null);
                            Integer zeitdatenIId = getZeiterfassungsFac().createZeitdaten(zeitdatenDto, false,
                                    false, false, theclientDto);

                            // PJ17797
                            if (nMenge.doubleValue() > 0) {
                                if (getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(
                                        MandantFac.ZUSATZFUNKTION_STUECKRUECKMELDUNG, theclientDto)) {

                                    Integer lossollarbeitsplanIId = null;
                                    LossollarbeitsplanDto[] sollDtos = getFertigungFac()
                                            .lossollarbeitsplanFindByLosIId(losDto.getIId());
                                    if (sollDtos.length > 0) {
                                        lossollarbeitsplanIId = sollDtos[sollDtos.length - 1].getIId();
                                    } else {
                                        lossollarbeitsplanIId = getFertigungFac()
                                                .defaultArbeitszeitartikelErstellen(losDto, theclientDto);
                                    }

                                    LosgutschlechtDto losgutschlechtDto = new LosgutschlechtDto();
                                    losgutschlechtDto.setZeitdatenIId(zeitdatenIId);
                                    losgutschlechtDto.setLossollarbeitsplanIId(lossollarbeitsplanIId);
                                    losgutschlechtDto.setNGut(nMenge);
                                    losgutschlechtDto.setNSchlecht(new BigDecimal(0));
                                    losgutschlechtDto.setNInarbeit(new BigDecimal(0));

                                    getFertigungFac().createLosgutschlecht(losgutschlechtDto, theclientDto);
                                }
                            }

                        }

                        return getSJSPNext();
                    }

                    // Wenn Auftragsbeginn ->
                    if (sTaetigkeit.startsWith("$L")) {
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                        zeitdatenDto.setArtikelIId(artikelIId);
                        zeitdatenDto.setIBelegartid(losDto.getIId());

                        LossollarbeitsplanDto[] sollDtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelIId);
                        if (sollDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(sollDtos[0].getIId());
                        }
                    } else {
                        // Hole letzten begonnenen Auftrag und hinterlege
                        // gut/schlechtstueck
                        Session session = FLRSessionFactory.getFactory().openSession();
                        org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class);
                        liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, personalIId));
                        /*
                         * liste.add(Expression.eq(ZeiterfassungFac.
                         * FLR_ZEITDATEN_C_BELEGARTNR ,
                         * LocaleFac.BELEGART_LOS)); liste.add(Expression.eq
                         * (ZeiterfassungFac.FLR_ZEITDATEN_I_BELEGARTID,
                         * losDto.getIId()));
                         */
                        liste.add(Expression.gt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                                Helper.cutTimestamp(zeitdatenDto.getTZeit())));

                        liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
                        // liste.setMaxResults(1);
                        List<?> lReisezeiten = liste.list();

                        Iterator<?> it = lReisezeiten.iterator();
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                        zeitdatenDto.setArtikelIId(artikelIId);
                        zeitdatenDto.setIBelegartid(losDto.getIId());

                        ZeitdatenDto letzterAuftrag = null;
                        while (it.hasNext()) {
                            FLRZeitdaten flrLetzerAuftrag = (FLRZeitdaten) it.next();

                            if (flrLetzerAuftrag.getC_belegartnr() != null
                                    && flrLetzerAuftrag.getI_belegartid() != null) {
                                if (flrLetzerAuftrag.getC_belegartnr().equals(zeitdatenDto.getCBelegartnr())
                                        && flrLetzerAuftrag.getI_belegartid()
                                                .equals(zeitdatenDto.getIBelegartid())) {
                                    letzterAuftrag = getZeiterfassungsFac().zeitdatenFindByPrimaryKey(
                                            flrLetzerAuftrag.getI_id(), theclientDto);
                                    break;
                                }
                            } else if (flrLetzerAuftrag.getTaetigkeit_i_id() != null
                                    && flrLetzerAuftrag.getTaetigkeit_i_id().equals(taetigkeitIId_Ende)) {
                                break;
                            }

                        }

                        if (letzterAuftrag != null) {
                            // Hier eintragen
                            ZeitdatenDto auftragsbeginn = getZeiterfassungsFac()
                                    .zeitdatenFindByPrimaryKey(letzterAuftrag.getIId(), theclientDto);

                            // auftragsbeginn.setNGut(nGutStueck);
                            // auftragsbeginn.setNSchlecht(nSchlechtStueck);
                            getZeiterfassungsFac().updateZeitdaten(auftragsbeginn, theclientDto);
                            // und buche ENDE
                            zeitdatenDto = zeitdatenDtoEnde;

                        } else {
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                            zeitdatenDto.setArtikelIId(artikelIId);
                            zeitdatenDto.setIBelegartid(losDto.getIId());
                            // zeitdatenDto.setNGut(nGutStueck);
                            // zeitdatenDto.setNSchlecht(nSchlechtStueck);

                            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false,
                                    theclientDto);
                            zeitdatenDto = zeitdatenDtoEnde;
                        }
                        session.close();

                        /*
                         * if (lReisezeiten.size() > 0) { FLRZeitdaten
                         * flrZeitdaten = (FLRZeitdaten)
                         * lReisezeiten.iterator().next();
                         * 
                         * ZeitdatenDto losbeginn = getZeiterfassungsFac().
                         * zeitdatenFindByPrimaryKey(flrZeitdaten.getI_id(),
                         * cNrUser);
                         * 
                         * losbeginn.setNGut(nGutStueck);
                         * losbeginn.setNSchlecht(nSchlechtStueck);
                         * getZeiterfassungsFac().updateZeitdaten(losbeginn,
                         * cNrUser); //und buche ENDE zeitdatenDto =
                         * zeitdatenDtoEnde; } else {
                         * zeitdatenDto.setCBelegartnr
                         * (LocaleFac.BELEGART_LOS);
                         * zeitdatenDto.setArtikelIId(artikelIId);
                         * zeitdatenDto.setIBelegartid(losDto.getIId());
                         * zeitdatenDto.setNGut(nGutStueck);
                         * zeitdatenDto.setNSchlecht(nSchlechtStueck);
                         * getZeiterfassungsFac
                         * ().createZeitdaten(zeitdatenDto, true, true,
                         * cNrUser); zeitdatenDto = zeitdatenDtoEnde; }
                         * 
                         * session.close();
                         */

                    }

                } else {
                    zeitdatenDto.setTaetigkeitIId(getZeiterfassungsFac().taetigkeitFindByCNr(
                            Helper.fitString2Length(sTaetigkeit.substring(1), 15, ' '), theclientDto).getIId());
                }

            }

            else {
                sTaetigkeit = getSystemServicesFac()
                        .keyvalueFindByPrimaryKey(SystemServicesFac.KEYVALUE_MECSTERMINAL, taetigkeit)
                        .getCValue();
                if (sTaetigkeit != null && !sTaetigkeit.equals(ZeiterfassungFac.TAETIGKEIT_REISE.trim())) {
                    zeitdatenDto.setTaetigkeitIId(getZeiterfassungsFac()
                            .taetigkeitFindByCNr(Helper.fitString2Length(sTaetigkeit, 15, ' '), theclientDto)
                            .getIId());
                }
            }

            // Resezeiten wenn Taetigkeit REISE
            if (sTaetigkeit != null && sTaetigkeit.equals(ZeiterfassungFac.TAETIGKEIT_REISE.trim())) {
                ReiseDto reiseDto = new ReiseDto();
                reiseDto.setPersonalIId(personalIId);

                // Letzte Reise von HEUTE holen
                // Heute 00:00 Uhr
                Calendar cTemp = Calendar.getInstance();
                cTemp.setTimeInMillis(zeitdatenDto.getTZeit().getTime());
                cTemp.set(Calendar.HOUR_OF_DAY, 0);
                cTemp.set(Calendar.MINUTE, 0);
                cTemp.set(Calendar.SECOND, 0);
                cTemp.set(Calendar.MILLISECOND, 0);

                Session sessReise = FLRSessionFactory.getFactory().openSession();
                org.hibernate.Criteria reisezeiten = sessReise.createCriteria(FLRReise.class);
                reisezeiten.add(Expression.eq(ZeiterfassungFac.FLR_REISE_PERSONAL_I_ID, personalIId));
                reisezeiten.add(Expression.ge(ZeiterfassungFac.FLR_REISE_T_ZEIT,
                        new Timestamp(cTemp.getTimeInMillis())));
                reisezeiten.add(Expression.lt(ZeiterfassungFac.FLR_REISE_T_ZEIT, zeitdatenDto.getTZeit()));
                reisezeiten.addOrder(Order.desc(ZeiterfassungFac.FLR_REISE_T_ZEIT));
                reisezeiten.setMaxResults(1);
                List<?> lReisezeiten = reisezeiten.list();

                if (lReisezeiten.size() == 0) {
                    reiseDto.setBBeginn(Helper.boolean2Short(true));
                } else {
                    FLRReise flrReise = (FLRReise) lReisezeiten.get(0);
                    if (Helper.short2boolean(flrReise.getB_beginn()) == true) {
                        reiseDto.setBBeginn(Helper.boolean2Short(false));
                    } else {
                        reiseDto.setBBeginn(Helper.boolean2Short(true));

                    }
                }

                reiseDto.setTZeit(zeitdatenDto.getTZeit());

                Integer partnerMandant = getMandantFac().mandantFindByPrimaryKey(mandant, theclientDto)
                        .getPartnerIId();
                PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerMandant, theclientDto);

                if (partnerDto.getLandplzortIId() == null) {
                    throw new Exception("Mandant hat kein Land hinterlegt");
                }

                DiaetenDto[] dtos = getZeiterfassungsFac()
                        .diaetenFindByLandIId(partnerDto.getLandplzortDto().getIlandID());

                if (dtos.length == 0) {
                    // Einen anlegen
                    DiaetenDto dto = new DiaetenDto();
                    dto.setCBez(partnerDto.getLandplzortDto().getLandDto().getCName());
                    dto.setLandIId(partnerDto.getLandplzortDto().getIlandID());
                    reiseDto.setDiaetenIId(getZeiterfassungsFac().createDiaeten(dto));
                } else {
                    reiseDto.setDiaetenIId(dtos[0].getIId());
                }

                getZeiterfassungsFac().createReise(reiseDto, theclientDto);
                response.setStatus(HttpServletResponse.SC_OK);
                response.flushBuffer();
                getTheClient(request, response).setBResponseIsReady(true);

                return getSJSPNext();
            }
        } catch (Exception ex3) {
            ex3.printStackTrace();
            // lt. FM darf an das MECS-Terminal nur Status=200
            // zurueckgegeben werden
            response.setStatus(HttpServletResponse.SC_OK);
            return getSJSPNext();
        }

        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);

        response.setStatus(HttpServletResponse.SC_OK);
        response.flushBuffer();
        getTheClient(request, response).setBResponseIsReady(true);
    } else if (command.equals(TheApp.CMD_ZE_QUICKZE)) {

    } else if (command.equals(TheApp.CMD_ZE_RECHNERSTART1)) {
        int i = 0;
    } else if (command.equals(TheApp.CMD_ZE_QUICKZEITERFASSUNG)) {
        if (getTheClient(request, response).getSMsg() == null) {
            getTheClient(request, response).setSMsg("");
        }

        String username = getCookieValue("anmeldename", request);
        String password = getCookieValue("pass", request);

        if (localeCookie != null && localeCookie.length() > 3) {
            localeLogon = new Locale(localeCookie.substring(0, 2), localeCookie.substring(2, 4));
        }

        if (username == null || password == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es wurde kein Benutzername oder Kennwort angegeben. Bitte verwenden Sie http://?????cmd=quickze");

        }
        try {
            theclientDto = getLogonFac().logon(Helper.getFullUsername(username),
                    Helper.getMD5Hash((username + password).toCharArray()), localeLogon, null, null,
                    new Timestamp(System.currentTimeMillis()));
        } catch (EJBExceptionLP ex12) {

            int code = ex12.getCode();
            if (code == EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' konnte im System nicht gefunden werden");
            } else if (code == EJBExceptionLP.FEHLER_FALSCHES_KENNWORT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Kennwort f\u00FCr Benutzername '" + username + "' ist falsch.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_IST_GESPERRT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' ist gesperrt.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_IST_NICHT_MEHR_GUELTIG) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' ist nicht mehr g\u00FCltig.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_DARF_SICH_BEI_DIESEM_MANDANTEN_NICHT_ANMELDEN) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' darf sich bei dem Mandanten nicht anmelden.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_KEIN_EINTRAG_IN_BENUTZERMANDANT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Kein Eintrag in Benutzermandant f\u00FCr Benutzername '" + username + "'.");
            } else if (ex12.getCode() == EJBExceptionLP.FEHLER_MAXIMALE_BENUTZERANZAHL_UEBERSCHRITTEN) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Maximale Benutzeranzahl \u00FCberschritten '" + username + "'.");
                return null;
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_DARF_SICH_IN_DIESER_SPRACHE_NICHT_ANMELDEN) {
                ArrayList<?> al = ((EJBExceptionLP) ex12.getCause()).getAlInfoForTheClient();
                String zusatz = "";
                if (al.size() > 0 && al.get(0) instanceof Locale) {
                    Locale loc = (Locale) al.get(0);
                    zusatz = "(" + loc.getDisplayLanguage() + "|" + loc.getDisplayCountry() + ")";
                }
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzer '" + username + "' darf sich in '" + zusatz + "' nicht anmelden.");
            }

            return null;
        }

        PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKey(theclientDto.getIDPersonal(),
                theclientDto);

        personalDto.setPartnerDto(
                getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

        HashMap<String, Object> hmData = new HashMap<String, Object>();

        TextDto textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.sondertaetigkeit",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_sondertaetigkeit", textDto.getCText());
        } else {
            hmData.put("bezeichnung_sondertaetigkeit", "Sondert\u00E4tigkeit");
        }

        // Belegarten holen

        Map<String, String> b = getZeiterfassungsFac().getBebuchbareBelegarten(theclientDto);

        hmData.put("belegarten", b);

        String firstBelegart = (String) b.keySet().iterator().next();
        String belegart = null;
        if (request.getParameter("belegart") == null) {
            belegart = firstBelegart;
        } else {
            belegart = request.getParameter("belegart");
        }

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenerauftrag",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offeneslos",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenesangebot",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenesprojekt",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        }
        if (textDto != null) {
            hmData.put("bezeichnung_offenerauftrag", textDto.getCText());
        } else {
            hmData.put("bezeichnung_offenerauftrag", "Offener Beleg");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.taetigkeit",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_taetigkeit", textDto.getCText());
        } else {
            hmData.put("bezeichnung_taetigkeit", "T\u00E4tigkeit");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.kunde",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_kunde", textDto.getCText());
        } else {
            hmData.put("bezeichnung_kunde", "Kunde");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.belegart",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_belegart", textDto.getCText());
        } else {
            hmData.put("bezeichnung_belegart", "Belegart");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.bemerkung",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_bemerkung", textDto.getCText());
        } else {
            hmData.put("bezeichnung_bemerkung", "Bemerkung");
        }

        hmData.put("locale", Helper.locale2String(localeLogon).trim());
        hmData.put("mandant", mandant);
        hmData.put("person", personalDto.getPartnerDto().formatAnrede());

        // Kunden mit offenen Auftraegen holen
        Session session = FLRSessionFactory.getFactory().openSession();
        String sQuery = "";
        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
            sQuery = "SELECT flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id "
                    + " FROM FLRAuftrag AS auftrag WHERE (auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' OR auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT
                    + "') AND auftrag.mandant_c_nr='" + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id  ORDER BY flrkunde.flrpartner.c_name1nachnamefirmazeile1 ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            sQuery = "SELECT flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id "
                    + " FROM FLRAngebot AS angebot WHERE (angebot.angebotstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "') AND angebot.mandant_c_nr='" + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id  ORDER BY flrkunde.flrpartner.c_name1nachnamefirmazeile1 ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            sQuery = "SELECT flrpartner.c_name1nachnamefirmazeile1, flrpartner.c_name2vornamefirmazeile2, flrpartner.i_id "
                    + " FROM FLRProjekt AS projekt WHERE projekt.status_c_nr<>'"
                    + ProjektServiceFac.PROJEKT_STATUS_STORNIERT
                    + "' AND projekt.t_erledigungsdatum IS NULL AND projekt.mandant_c_nr='"
                    + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrpartner.c_name1nachnamefirmazeile1, flrpartner.c_name2vornamefirmazeile2, flrpartner.i_id  ORDER BY flrpartner.c_name1nachnamefirmazeile1 ASC";

        }
        LinkedHashMap<Object, Object> tmKunden = new LinkedHashMap<Object, Object>();
        Integer firstKunde = null;
        if (!belegart.equals(LocaleFac.BELEGART_LOS)) {
            Query kunden = session.createQuery(sQuery);

            List<?> resultList = kunden.list();

            Iterator<?> resultListIterator = resultList.iterator();

            int row = 0;

            while (resultListIterator.hasNext()) {
                Object o[] = (Object[]) resultListIterator.next();
                if (row == 0) {
                    firstKunde = (Integer) o[2];
                }
                if (o[1] == null) {
                    tmKunden.put(o[2], o[0]);

                } else {
                    tmKunden.put(o[2], o[0] + " " + o[1]);

                }
                row++;
            }
            session.close();
        } else {

            sQuery = "SELECT los " + " FROM FLRLosReport AS los WHERE (los.status_c_nr='"
                    + LocaleFac.STATUS_AUSGEGEBEN + "' OR los.status_c_nr='" + LocaleFac.STATUS_IN_PRODUKTION
                    + "' OR los.status_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT + "')  AND los.mandant_c_nr='"
                    + theclientDto.getMandant()
                    + "' AND ( los.flrauftrag IS NOT NULL OR los.flrkunde IS NOT NULL) ";

            Query kunden = session.createQuery(sQuery);

            List<?> resultList = kunden.list();

            Iterator<?> resultListIterator = resultList.iterator();

            int row = 0;

            while (resultListIterator.hasNext()) {
                FLRLosReport los = (FLRLosReport) resultListIterator.next();

                Integer partnerIId = null;
                String kundenname = "";
                if (los.getFlrauftrag() != null) {
                    partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();

                    kundenname += los.getFlrauftrag().getFlrkunde().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();

                    if (los.getFlrauftrag().getFlrkunde().getFlrpartner()
                            .getC_name2vornamefirmazeile2() != null) {
                        kundenname += " " + los.getFlrauftrag().getFlrkunde().getFlrpartner()
                                .getC_name2vornamefirmazeile2();
                    }

                } else {
                    partnerIId = los.getFlrkunde().getFlrpartner().getI_id();
                    kundenname += los.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();

                    if (los.getFlrkunde().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                        kundenname += " " + los.getFlrkunde().getFlrpartner().getC_name2vornamefirmazeile2();
                    }
                }

                if (row == 0) {
                    firstKunde = partnerIId;
                }
                if (!tmKunden.containsKey(partnerIId)) {

                    tmKunden.put(partnerIId, kundenname);
                }

                row++;
            }

            tmKunden = (LinkedHashMap) Helper.sortByValue(tmKunden);

            // leeren Kunden einfuegen
            tmKunden.put("", "--KEIN--");

            session.close();
        }
        hmData.put("kunden", tmKunden);

        // Sondertaetigkeiten holen

        Map<Integer, String> m = getZeiterfassungsFac()
                .getAllSprSondertaetigkeitenNurBDEBuchbar(theclientDto.getLocUiAsString());

        hmData.put("taetigkeiten", m);

        // Kunden holen

        Integer kunde = null;
        if (request.getParameter("kunde") == null) {
            kunde = firstKunde;
        } else {
            if (!request.getParameter("kunde").equals("")) {
                if (!request.getParameter("kunde").equals(" ")) {
                    if (!request.getParameter("kunde").trim().equals("null")) {
                        kunde = new Integer(request.getParameter("kunde").trim());
                    }
                }

            }
        }

        hmData.put("selectedbelegart", belegart);

        session = FLRSessionFactory.getFactory().openSession();

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

            sQuery = "SELECT auftrag.i_id, auftrag.c_nr, auftrag.c_bez, auftrag.t_liefertermin, auftrag.flrkunde.flrpartner.i_id "
                    + " FROM FLRAuftrag AS auftrag WHERE (auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' OR auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT
                    + "') AND auftrag.flrkunde.flrpartner.i_id=" + kunde
                    + " AND auftrag.b_versteckt=0 ORDER BY auftrag.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
            sQuery = "SELECT los.i_id, los.c_nr, los.c_projekt, los.t_produktionsende, coalesce(auftragpartner.i_id,kundepartner.i_id) "
                    + " FROM FLRLosReport AS los LEFT OUTER JOIN los.flrauftrag.flrkunde.flrpartner as auftragpartner LEFT OUTER JOIN los.flrkunde.flrpartner as kundepartner  WHERE (los.status_c_nr='"
                    + LocaleFac.STATUS_AUSGEGEBEN + "' OR los.status_c_nr='" + LocaleFac.STATUS_IN_PRODUKTION
                    + "' OR los.status_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT + "') ";
            if (kunde != null) {
                sQuery += " AND ( auftragpartner.i_id=" + kunde + " OR kundepartner.i_id=" + kunde + ")";

            } else {
                sQuery += " AND ( auftragpartner.i_id IS NULL AND kundepartner.i_id IS NULL)";
            }
            sQuery += " ORDER BY los.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            sQuery = "SELECT angebot.i_id, angebot.c_nr, angebot.c_bez, angebot.t_realisierungstermin, angebot.flrkunde.flrpartner.i_id "
                    + " FROM FLRAngebot AS angebot WHERE angebot.angebotstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' AND angebot.flrkunde.flrpartner.i_id=" + kunde + "  ORDER BY angebot.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            sQuery = "SELECT projekt.i_id, projekt.c_nr, projekt.c_titel, projekt.t_zielwunschdatum, projekt.partner_i_id "
                    + " FROM FLRProjekt AS projekt WHERE projekt.status_c_nr<>'"
                    + ProjektServiceFac.PROJEKT_STATUS_STORNIERT
                    + "' AND projekt.t_erledigungsdatum IS NULL AND projekt.partner_i_id=" + kunde
                    + " ORDER BY projekt.c_nr ASC";
        }
        Query auftraege = session.createQuery(sQuery);

        List<?> resultList = auftraege.list();

        Iterator resultListIterator = resultList.iterator();
        LinkedHashMap<Object, Object> tmAuftraege = new LinkedHashMap<Object, Object>();
        Object partnerIId = null;
        String selectedAuftragId = null;
        while (resultListIterator.hasNext()) {
            Object o[] = (Object[]) resultListIterator.next();
            partnerIId = (Integer) o[4];

            if (o[2] == null) {
                tmAuftraege.put(o[0], o[1]);

            } else {
                tmAuftraege.put(o[0], o[1] + " " + o[2]);

            }
            if (selectedAuftragId == null) {
                selectedAuftragId = o[0].toString();
            }
        }

        session.close();
        hmData.put("auftraege", tmAuftraege);

        hmData.put("selectedkunde", partnerIId);

        if (request.getParameter("auftrag") != null && request.getParameter("auftrag").length() > 0) {
            selectedAuftragId = request.getParameter("auftrag");

        }

        // Artikel zu Auftrag holen
        session = FLRSessionFactory.getFactory().openSession();

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRAuftragposition AS a WHERE a.flrauftrag.i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRLossollarbeitsplan AS a WHERE a.los_i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRAngebotposition AS a WHERE a.flrangebot.i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        }
        LinkedHashMap<Object, Object> tmArtikel = new LinkedHashMap<Object, Object>();
        if (!belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            Query artikelListe = session.createQuery(sQuery);

            resultList = artikelListe.list();

            resultListIterator = resultList.iterator();

            if (resultList.size() > 0) {
                tmArtikel.put(-1, " - - - - - - Beleg - - - - - -");
            }

            while (resultListIterator.hasNext()) {
                Object[] zeile = (Object[]) resultListIterator.next();

                Integer artikelIId = (Integer) zeile[1];

                String sollIst = "";

                if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

                    BigDecimal bdSoll = getAuftragpositionFac()
                            .auftragpositionFindByPrimaryKey((Integer) zeile[0]).getNMenge();
                    sollIst = "; Soll: " + Helper.formatZahl(bdSoll, 2, theclientDto.getLocUi());

                    Double dIst;
                    try {

                        boolean bZuvieleZeitbuchungen = getZeiterfassungsFac()
                                .sindZuvieleZeitdatenEinesBelegesVorhanden(belegart,
                                        new Integer(selectedAuftragId), theclientDto);
                        if (bZuvieleZeitbuchungen == false) {

                            dIst = getZeiterfassungsFac().getSummeZeitenEinesBeleges(belegart,
                                    new Integer(selectedAuftragId), (Integer) zeile[0], null, null, null,
                                    theclientDto);
                            sollIst += " Ist: " + Helper.formatZahl(dIst, 2, theclientDto.getLocUi());
                        }
                    } catch (Exception e) {
                        sollIst += " Ist: ERR";
                    }

                }

                String artikel = getArtikelFac().artikelFindByPrimaryKey(artikelIId, theclientDto)
                        .formatArtikelbezeichnung() + sollIst;
                if (!tmArtikel.containsKey(artikelIId)) {
                    tmArtikel.put(artikelIId, artikel);

                }
            }
            session.close();
        }
        // Artikel des Auftrags + Artikel aus Personalverfuegbarkeit holen

        if (selectedAuftragId != null) {

            PersonalverfuegbarkeitDto[] personalverfuegbarkeitDtos = getPersonalFac()
                    .personalverfuegbarkeitFindByPersonalIId(personalDto.getIId());
            if (personalverfuegbarkeitDtos.length > 0) {
                tmArtikel.put(-2, " - - - Verf\u00FCgbarkeit - - - ");
            }
            for (int i = 0; i < personalverfuegbarkeitDtos.length; i++) {
                PersonalverfuegbarkeitDto v = personalverfuegbarkeitDtos[i];
                String artikel = getArtikelFac().artikelFindByPrimaryKey(v.getArtikelIId(), theclientDto)
                        .formatArtikelbezeichnung();
                tmArtikel.put(v.getArtikelIId(), artikel);
            }

            hmData.put("selectedauftrag", selectedAuftragId);

        }

        ParametermandantDto parameterDtoDefaultarbeitszeit = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

        if (parameterDtoDefaultarbeitszeit != null && parameterDtoDefaultarbeitszeit.getCWert() != null
                && !parameterDtoDefaultarbeitszeit.getCWert().trim().equals("")) {

            ArtikelDto artikelDtoDefaultArbeiztszeit = getArtikelFac()
                    .artikelFindByCNr(parameterDtoDefaultarbeitszeit.getCWert(), theclientDto);
            tmArtikel.put(-3, " - - - Default-Arbeitszeitartikel - - -");
            tmArtikel.put(artikelDtoDefaultArbeiztszeit.getIId(),
                    artikelDtoDefaultArbeiztszeit.formatArtikelbezeichnung());
        }

        hmData.put("artikel", tmArtikel);

        // Zeitbuchen
        String bucheauftrag = request.getParameter("bucheauftrag");
        String buchesondertaetigkeit = request.getParameter("buchesondertaetigkeit");

        // Zeit buchen
        ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
        zeitdatenDto.setPersonalIId(personalDto.getIId());
        Timestamp tZeit = new Timestamp(System.currentTimeMillis());
        zeitdatenDto.setCWowurdegebucht("Quick-ZE " + request.getRemoteHost());
        String meldung = "";

        zeitdatenDto.setTZeit(tZeit);
        String bemerkung = request.getParameter("bemerkung");
        zeitdatenDto.setCBemerkungZuBelegart(bemerkung);

        if (bucheauftrag != null && bucheauftrag.length() > 0) {

            if (request.getParameter("artikel") != null) {

                Integer artikelId = new Integer(request.getParameter("artikel"));
                if (artikelId > 0) {

                    Integer auftragIId = new Integer(selectedAuftragId.trim());

                    String s = "Auf ";

                    if (kunde != null) {
                        PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(kunde, theclientDto);
                        s += partnerDto.formatFixName1Name2() + ", ";
                    }

                    if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.auftrag",
                                theclientDto.getMandant(), theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Auftrag ";
                        }

                        com.lp.server.auftrag.service.AuftragDto auftragDto = getAuftragFac()
                                .auftragFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCBezProjektbezeichnung() != null) {
                            s += " " + auftragDto.getCBezProjektbezeichnung();
                        }

                        com.lp.server.auftrag.service.AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                                .auftragpositionFindByAuftrag(auftragIId);
                        if (auftragpositionDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                        }
                    } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("angb.angebot",
                                theclientDto.getMandant(), theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Angebot ";
                        }

                        com.lp.server.angebot.service.AngebotDto auftragDto = getAngebotFac()
                                .angebotFindByPrimaryKey(auftragIId, theclientDto);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCBez() != null) {
                            s += " " + auftragDto.getCBez();
                        }

                    } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc(
                                "lp.projekt.modulname", theclientDto.getMandant(),
                                theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Projekt ";
                        }

                        com.lp.server.projekt.service.ProjektDto auftragDto = getProjektFac()
                                .projektFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCTitel() != null) {
                            s += " " + auftragDto.getCTitel();
                        }

                    } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc(
                                "fert.tab.unten.los.title", theclientDto.getMandant(),
                                theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Los ";
                        }

                        LosDto auftragDto = getFertigungFac().losFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCProjekt() != null) {
                            s += " " + auftragDto.getCProjekt();
                        }

                        LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(auftragIId, artikelId);
                        if (dtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        }

                    }
                    zeitdatenDto.setPersonalIId(personalDto.getIId());
                    zeitdatenDto.setCBelegartnr(belegart);
                    zeitdatenDto.setIBelegartid(auftragIId);
                    zeitdatenDto.setArtikelIId(artikelId);

                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(artikelId, theclientDto);

                    meldung += s + ", " + artikelDto.formatArtikelbezeichnung();

                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                    meldung += " um " + Helper.formatTime(tZeit, localeLogon) + " gebucht.";
                    getTheClient(request, response).setSMsg(meldung);
                }
            } else {

                getTheClient(request, response).setSMsg("Keine Auftragsposition ausgew\u00E4hlt");
            }
        } else if (buchesondertaetigkeit != null && buchesondertaetigkeit.length() > 0) {
            String zusatz = request.getParameter("zusatz");

            if (zusatz != null && zusatz.length() > 0) {
                // Zeit ist immer jetzt
                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(zeitdatenDto.getTZeit().getTime());
                ZeitdatenDto[] letzeBuchungen = getZeiterfassungsFac()
                        .zeitdatenFindZeitdatenEinesTagesUndEinerPersonOnheBelegzeiten(
                                zeitdatenDto.getPersonalIId(), Helper.cutTimestamp(zeitdatenDto.getTZeit()),
                                zeitdatenDto.getTZeit());
                Integer taetigkeitIId_Kommt = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_KOMMT, theclientDto).getIId();
                Integer taetigkeitIId_Unter = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_UNTER, theclientDto).getIId();
                Integer taetigkeitIId_Geht = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_GEHT, theclientDto).getIId();
                if (zusatz.equals("spezialkommt")) {

                    if (letzeBuchungen.length == 0) {
                        // Zuerst Kommt und dann UNTER
                        ZeitdatenDto dtoKommt = new ZeitdatenDto();
                        dtoKommt.setTaetigkeitIId(taetigkeitIId_Kommt);
                        dtoKommt.setPersonalIId(zeitdatenDto.getPersonalIId());
                        dtoKommt.setCWowurdegebucht("Spezial-Kommt");
                        // Zeit 100 MS vorher
                        dtoKommt.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                        getZeiterfassungsFac().createZeitdaten(dtoKommt, false, false, false, theclientDto);
                        // Taetigkeit GEHT Buchen
                        ZeitdatenDto dtoUnter = new ZeitdatenDto();
                        dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                        dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                        dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                        // Zeit 100 MS nachher
                        dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 96));
                        getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);
                    } else if (letzeBuchungen.length == 1) {
                        Integer letztetaetigkeit = letzeBuchungen[0].getTaetigkeitIId();
                        // Wenn nur Kommt, dann Unter buchen
                        if (taetigkeitIId_Kommt.equals(letztetaetigkeit)) {
                            // Taetigkeit UNTER Buchen
                            ZeitdatenDto dtoUnter = new ZeitdatenDto();
                            dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                            dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                            dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                            dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                            getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);

                        }
                    } else if (letzeBuchungen.length > 1) {
                        Integer letztetaetigkeit = letzeBuchungen[letzeBuchungen.length - 1].getTaetigkeitIId();
                        if (taetigkeitIId_Kommt.equals(letztetaetigkeit)) {
                            // Taetigkeit UNTER Buchen
                            ZeitdatenDto dtoUnter = new ZeitdatenDto();
                            dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                            dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                            dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                            dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                            getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);

                        } else {

                            // Wenn letzte Taetigkeit ein Geht ist wird
                            // Kommt
                            // und Unter gebucht
                            if (!taetigkeitIId_Geht.equals(letztetaetigkeit)) {

                                int iSondertaetigkeitenHintereinander = 1;
                                for (int i = letzeBuchungen.length - 2; i >= 0; i--) {
                                    ZeitdatenDto dto = letzeBuchungen[i];
                                    if (letztetaetigkeit.equals(dto.getTaetigkeitIId())) {
                                        iSondertaetigkeitenHintereinander++;
                                    } else {
                                        break;
                                    }
                                    letztetaetigkeit = dto.getTaetigkeitIId();
                                }

                                if (iSondertaetigkeitenHintereinander % 2 == 0) {
                                    // Taetigkeit UNTER Buchen
                                    ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                    dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                                    dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                    dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                    dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                    getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                            theclientDto);

                                    /**
                                     * @todo 100ms vorher Projekt-ENDE
                                     *       buchen
                                     */
                                }
                            } else {
                                // Taetigkeit KOMMT Buchen
                                ZeitdatenDto dtoKommt = new ZeitdatenDto();
                                dtoKommt.setTaetigkeitIId(taetigkeitIId_Kommt);
                                dtoKommt.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoKommt.setCWowurdegebucht("Spezial-Kommt");
                                dtoKommt.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoKommt, false, false, false,
                                        theclientDto);
                                // Taetigkeit UNTER Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                                // Zeit 100 MS nachher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 96));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            }
                        }
                    }

                } else if (zusatz.equals("spezialgeht")) {
                    if (letzeBuchungen.length > 1) {

                        Integer letztetaetigkeit = letzeBuchungen[letzeBuchungen.length - 1].getTaetigkeitIId();
                        // Wenn letzte Taetigkeit kein geht ist, sonst wird
                        // geht verschmissen
                        if (!taetigkeitIId_Geht.equals(letztetaetigkeit)) {

                            int iSondertaetigkeitenHintereinander = 1;
                            for (int i = letzeBuchungen.length - 2; i >= 0; i--) {
                                ZeitdatenDto dto = letzeBuchungen[i];
                                if (letztetaetigkeit.equals(dto.getTaetigkeitIId())) {
                                    iSondertaetigkeitenHintereinander++;
                                } else {
                                    break;
                                }
                                letztetaetigkeit = dto.getTaetigkeitIId();
                            }

                            if (iSondertaetigkeitenHintereinander % 2 == 1) {
                                // Sondertaetigkeit Ende Buchen
                                ZeitdatenDto dtoSonderEnde = new ZeitdatenDto();
                                dtoSonderEnde.setTaetigkeitIId(letztetaetigkeit);
                                dtoSonderEnde.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoSonderEnde.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoSonderEnde.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() - 96));
                                getZeiterfassungsFac().createZeitdaten(dtoSonderEnde, false, false, false,
                                        theclientDto);
                                // Taetigkeit GEHT Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Geht);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            } else {
                                // Taetigkeit GEHT Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Geht);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            }
                        }

                    }

                } else {
                    response.sendError(HttpServletResponse.SC_BAD_REQUEST, "zusatz '" + zusatz + "' unbekannt");
                }
                setSJSPNext("mecs.jsp");
                return getSJSPNext();
            } else {

                if (request.getParameter("taetigkeit") != null) {

                    Integer taetigkeitId = new Integer(request.getParameter("taetigkeit"));
                    zeitdatenDto.setTaetigkeitIId(taetigkeitId);

                    TaetigkeitDto dto = getZeiterfassungsFac().taetigkeitFindByPrimaryKey(taetigkeitId,
                            theclientDto);
                    meldung += dto.getBezeichnung();

                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                    meldung += " um " + Helper.formatTime(tZeit, localeLogon) + " gebucht.";
                    getTheClient(request, response).setSMsg(meldung);
                } else {
                    getTheClient(request, response).setSMsg("Keine T\u00E4tigkeit ausgew\u00E4hlt");
                }
            }
        }
        getTheClient(request, response).setData(hmData);
        // AD+CK logout wegen usercount
        synchronized (mutex) { // PJ 15986
            getLogonFac().logout(theclientDto);
        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_TERMINAL)) {
        // Personalstamm holen

        String master = request.getParameter("master");

        try {
            ZutrittscontrollerDto zutrittscontrollerDto = getZutrittscontrollerFac()
                    .zutrittscontrollerFindByCNr(master);
            ZutrittsobjektDto[] zutrittsobjektDtos = getZutrittscontrollerFac()
                    .zutrittsobjektFindByZutrittscontrollerIId(zutrittscontrollerDto.getIId());

            StringBuffer objekte = new StringBuffer();

            for (int i = 0; i < zutrittsobjektDtos.length; i++) {
                objekte.append(Helper.fitString2Length(zutrittsobjektDtos[i].getCNr(), 6, ' ')); // terminal-
                // id
                objekte.append(Helper.fitString2Length(zutrittsobjektDtos[i].getCAdresse(), 100, ' ')); // adresse
                objekte.append("\r\n");
            }
            myLogger.info(command + ":" + new String(objekte));

            getTheClient(request, response).setSMsg(new String(objekte));
        }

        catch (RemoteException ex5) {
            if (ex5.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP lpex = (EJBExceptionLP) ex5.getCause();
                if (lpex.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                    myLogger.error("Zutrittscontroller '" + master + "' nicht angelegt", ex5);
                } else {
                    myLogger.error(ex5.getMessage(), ex5);
                }
            }

        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_RELAIS)) {
        // Personalstamm holen

        String termid = request.getParameter("termid");
        if (termid == null || termid.length() == 0) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es ist der Parameter termid='LanPortName' erforderlich");
            return null;
        }
        try {
            ZutrittsobjektDto zutrittsobjektDto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);

            StringBuffer objekte = new StringBuffer();

            objekte.append("10"); // readerid
            objekte.append("0"); // port
            objekte.append(zutrittsobjektDto.getCRelais()); // relais
            String oeffnungszeit = zutrittsobjektDto.getFOeffnungszeit().toString();
            oeffnungszeit = oeffnungszeit.replaceAll(",", ".");
            objekte.append(Helper.fitString2LengthAlignRight(oeffnungszeit, 4, ' ')); // oeffnungszeit
            objekte.append(zutrittsobjektDto.getZutrittsleserCNr().trim()); // readerid
            objekte.append("\r\n");
            myLogger.info(command + ":" + new String(objekte));

            getTheClient(request, response).setSMsg(new String(objekte));
        } catch (EJBExceptionLP ex4) {

            if (ex4.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");
                return null;
            } else {
                ex4.printStackTrace();
                myLogger.error(ex4.getMessage(), ex4);
            }

        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_ZUTRITT)) {
        String termid = request.getParameter("termid");
        try {
            ZutrittsobjektDto dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);

            String s = getZutrittscontrollerFac().getZutrittsdatenFuerEinObjektFuerMecs(dto.getIId(),
                    theclientDto);
            myLogger.info(command + ":" + new String(s));

            getTheClient(request, response).setSMsg(new String(s));
        } catch (EJBExceptionLP ex4) {
            if (ex4.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                myLogger.error("Zutrittsobjekt '" + termid + "' nicht angelegt", ex4);
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");

            } else {
                myLogger.error(ex4.getMessage(), ex4);
                response.sendError(HttpServletResponse.SC_NOT_FOUND, ex4.getMessage());
            }

        }

    } else if (command.equals(TheApp.CMD_ZU_MECS_AUSWEISE_ZUTRITT)) {
        PersonalzutrittsklasseDto[] dtos = getZutrittscontrollerFac().personalzutrittsklassenFindByTGueltigab(
                new Timestamp(System.currentTimeMillis()), theclientDto);

        ArrayList<StringBuffer> alDaten = new ArrayList<StringBuffer>();

        for (int i = 0; i < dtos.length; i++) {
            StringBuffer sb = new StringBuffer();
            sb.append("10");

            // Hole personalDto
            PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKeySmall(dtos[i].getPersonalIId());

            sb.append(Helper.fitString2Length(personalDto.getCAusweis(), 20, ' '));
            sb.append(Helper.fitString2Length(personalDto.getCPersonalnr().toString(), 10, ' '));
            sb.append(Helper.fitString2Length("", 24, ' '));

            // Hole Zutrittsklasse
            ZutrittsklasseDto zutrittsklasseDto = getZutrittscontrollerFac()
                    .zutrittsklasseFindByPrimaryKey(dtos[i].getZutrittsklasseIId());
            sb.append(Helper.fitString2Length(zutrittsklasseDto.getCNr(), 3, ' '));
            alDaten.add(sb);
        }

        // Besucherausweise
        String[] ausweise = getZutrittscontrollerFac()
                .zutrittonlinecheckAusweiseFindByTGueltigab(new Timestamp(System.currentTimeMillis()));

        for (int i = 0; i < ausweise.length; i++) {
            StringBuffer sb = new StringBuffer();
            sb.append("10");
            sb.append(Helper.fitString2Length(ausweise[i], 20, ' '));
            sb.append(Helper.fitString2Length("", 10, ' '));
            sb.append(Helper.fitString2Length("", 24, ' '));
            sb.append(Helper.fitString2Length(ZutrittscontrollerFac.ZUTRITTSKLASSE_ONLINECHECK, 3, ' '));
            alDaten.add(sb);
        }

        // sortieren
        String datenGesamt = "";
        for (int i = alDaten.size() - 1; i > 0; --i) {
            for (int j = 0; j < i; ++j) {
                if ((new String(alDaten.get(j))).compareTo(new String(alDaten.get(j + 1))) > 0) {
                    StringBuffer lagerbewegungDtoTemp = alDaten.get(j);
                    alDaten.set(j, alDaten.get(j + 1));
                    alDaten.set(j + 1, lagerbewegungDtoTemp);
                }
            }
        }

        for (int i = 0; i < alDaten.size(); i++) {

            StringBuffer sbTemp = alDaten.get(i);
            sbTemp.append("\r\n");
            datenGesamt += new String(sbTemp);
        }

        myLogger.info(command + ":" + datenGesamt);
        getTheClient(request, response).setSMsg(datenGesamt);
    } else if (command.startsWith(TheApp.CMD_ZU_MECS_ZUTRITT_ONLINE_CHECK)) {
        String termid = request.getParameter("termid");

        String card = request.getParameter("card");
        String pin = request.getParameter("pin");

        try {
            ZutrittsobjektDto dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);
            boolean b = getZutrittscontrollerFac().onlineCheck(card, pin,
                    new Timestamp(System.currentTimeMillis()), dto.getIId());
            if (b == true) {
                myLogger.info(command + ": ZUTRITT ERLAUBT");
                getTheClient(request, response).setSMsg("A");

            } else {
                myLogger.info(command + ": ZUTRITT VERWEIGERT");
                getTheClient(request, response).setSMsg("Z");
            }
        } catch (EJBExceptionLP ex4) {
            if (ex4.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP lpex = (EJBExceptionLP) ex4.getCause();
                if (lpex.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {

                    response.sendError(HttpServletResponse.SC_NOT_FOUND,
                            "Zutrittsobjekt '" + termid + "' nicht angelegt");
                    myLogger.error("Zutrittsobjekt '" + termid + "' nicht angelegt", ex4);
                } else {
                    myLogger.error(ex4.getMessage(), ex4);
                    response.sendError(HttpServletResponse.SC_NOT_FOUND, ex4.getMessage());
                }
            }
        }

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_ZUTRITT_EVENTS)) {
        String termid = request.getParameter("termid");

        if (termid == null || termid.length() == 0) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es ist der Parameter termid='LanPortName' erforderlich");
            return null;
        }

        ZutrittsobjektDto dto = null;
        try {
            dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);
        } catch (EJBExceptionLP e) {
            if (e.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");
                return null;
            } else {
                e.printStackTrace();
                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                        "Unerwarteter Fehler aufgetreten.");
                return null;
            }
        }

        String s = getZutrittscontrollerFac().getZutrittsEventsFuerMecs(dto.getIId(), theclientDto);
        myLogger.info(command + ":" + s);
        getTheClient(request, response).setSMsg(s);

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_MAXTRANSNR)) {
        getTheClient(request, response).setSMsg("999");
    } else if (command.startsWith(TheApp.CMD_ZU_MECS_LOG)) {

        String record = command.substring(17);
        ZutrittslogDto dto = new ZutrittslogDto();

        Calendar c = Calendar.getInstance();
        String zeitpunkt = record.substring(5, 19);
        int iJahr = new Integer(zeitpunkt.substring(0, 4));
        int iMonat = new Integer(zeitpunkt.substring(4, 6)) - 1;
        int iTag = new Integer(zeitpunkt.substring(6, 8));
        int iStunden = new Integer(zeitpunkt.substring(8, 10));
        int iMinuten = new Integer(zeitpunkt.substring(10, 12));
        int iSekunden = new Integer(zeitpunkt.substring(12, 14));

        c.set(iJahr, iMonat, iTag, iStunden, iMinuten, iSekunden);
        dto.setTZeitpunkt(new Timestamp(c.getTimeInMillis()));
        String personalnr = record.substring(19, 24);
        String erlaubt = record.substring(24, 27);
        String objekt = record.substring(46, 67).trim();
        String ausweis = record.substring(106, 135).trim();
        String event = record.substring(126, 137).trim();

        PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis);

        if (personalDto != null || event.equals("PINONLINE") || personalnr.equals("?????")
                || personalnr.equals("     ")) {
            if (personalDto != null) {
                dto.setCPerson(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto)
                                .formatFixAnredeTitelName2Name1());
                dto.setMandantCNr(personalDto.getMandantCNr());
            } else if (personalnr.equals("     ")) {
                dto.setCPerson("Besucher");
                dto.setMandantCNr(mandant);
            } else if (event != null && event.equals("PINONLINE")) {
                dto.setCPerson("Tempor\u00E4rer Pin-Code");
                dto.setMandantCNr(mandant);
            } else {
                dto.setCPerson("Unbekannt");
                dto.setMandantCNr(mandant);
            }

            if (erlaubt.equals("ZZ1")) {
                dto.setBErlaubt(Helper.boolean2Short(true));
            } else {
                dto.setBErlaubt(Helper.boolean2Short(false));
            }

            dto.setCAusweis(ausweis);
            dto.setCZutrittscontroller(null);

            try {
                ZutrittsobjektDto zutrittsobjektDto = getZutrittscontrollerFac()
                        .zutrittsobjektFindByCNr(objekt);

                dto.setCZutrittsobjekt(
                        zutrittsobjektDto.getBezeichnung() + "-" + zutrittsobjektDto.getCAdresse());
                dto.setCZutrittscontroller(getZutrittscontrollerFac()
                        .zutrittscontrollerFindByPrimaryKey(zutrittsobjektDto.getZutrittscontrollerIId())
                        .getCNr());
                dto.setMandantCNrObjekt(zutrittsobjektDto.getMandantCNr());
            } catch (RemoteException ex6) {
                dto.setCZutrittsobjekt("Zutrittsobjekt unbekannt");
            }

            getZutrittscontrollerFac().createZutrittslog(dto);
        }

        myLogger.info(command);

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_TEMPLATES)) {

        String sAendern = request.getParameter("changedsince");

        PersonalfingerDto[] personalfingerDtos = null;
        if (sAendern == null) {
            personalfingerDtos = getZutrittscontrollerFac().personalfingerFindAll();

        } else {

            Calendar c = Calendar.getInstance();
            int iJahr = new Integer(sAendern.substring(0, 4));
            int iMonat = new Integer(sAendern.substring(4, 6)) - 1;
            int iTag = new Integer(sAendern.substring(6, 8));
            int iStunden = new Integer(sAendern.substring(8, 10));
            int iMinuten = new Integer(sAendern.substring(10, 12));

            c.set(iJahr, iMonat, iTag, iStunden, iMinuten, 0);
            c.set(Calendar.MILLISECOND, 0);

            personalfingerDtos = getZutrittscontrollerFac()
                    .personalfingerFindByTAendern(new java.sql.Timestamp(c.getTimeInMillis()), theclientDto);
        }
        StringBuffer sb = new StringBuffer();
        // Zuerts alle loeschen
        sb.append(Helper.fitString2LengthAlignRight("0", 5, ' '));
        sb.append(Helper.fitString2LengthAlignRight("0", 2, ' '));
        sb.append(Helper.fitString2Length("X", 512, 'X'));
        StringBuffer zeit = new StringBuffer();
        Calendar cAendern = Calendar.getInstance();
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.YEAR) + "", 4, '0'));
        zeit.append(Helper.fitString2Length((cAendern.get(Calendar.MONTH) + 1) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.DAY_OF_MONTH) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.HOUR_OF_DAY) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.MINUTE) + "", 2, '0'));

        sb.append(zeit);
        sb.append("\r\n");

        for (int i = 0; i < personalfingerDtos.length; i++) {
            PersonalfingerDto personalfingerDto = personalfingerDtos[i];
            sb.append(Helper.fitString2LengthAlignRight(personalfingerDto.getIId() + "", 5, ' '));
            sb.append(Helper.fitString2LengthAlignRight("1", 2, ' '));
            String templateBase64 = new String(
                    org.apache.commons.codec.binary.Base64.encodeBase64(personalfingerDto.getOTemplate1()));
            sb.append(Helper.fitString2Length(templateBase64, 512, ' '));

            cAendern = Calendar.getInstance();
            cAendern.setTimeInMillis(personalfingerDto.getTAendern().getTime());
            zeit = new StringBuffer();
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.YEAR) + "", 4, '0'));
            zeit.append(Helper.fitString2Length((cAendern.get(Calendar.MONTH) + 1) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.DAY_OF_MONTH) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.HOUR_OF_DAY) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.MINUTE) + "", 2, '0'));

            sb.append(zeit);
            sb.append("\r\n");

            if (personalfingerDto.getOTemplate2() != null) {
                sb.append(Helper.fitString2LengthAlignRight(personalfingerDto.getIId() + "", 5, ' '));
                sb.append(Helper.fitString2LengthAlignRight("2", 2, ' '));
                templateBase64 = new String(
                        org.apache.commons.codec.binary.Base64.encodeBase64(personalfingerDto.getOTemplate2()));
                sb.append(Helper.fitString2Length(templateBase64, 512, ' '));
                sb.append(zeit);
                if (i == personalfingerDtos.length - 1) {
                    // sb.append("\r");
                } else {
                    sb.append("\r\n");
                }
            }

        }
        getTheClient(request, response).setSMsg(new String(sb));

    }

    return getSJSPNext();
}

From source file:edu.harvard.mcz.imagecapture.encoder.LabelEncoder.java

@SuppressWarnings("hiding")
public static boolean printList(List<UnitTrayLabel> taxa) throws PrintFailedException {
    boolean result = false;
    UnitTrayLabel label = new UnitTrayLabel();
    LabelEncoder encoder = new LabelEncoder(label);
    Image image = encoder.getImage();
    int counter = 0;
    try {//from ww  w. j  a  v a2s  .  c  o  m
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream("labels.pdf"));
        document.setPageSize(PageSize.LETTER);
        document.open();

        PdfPTable table = new PdfPTable(4);
        table.setWidthPercentage(100f);
        //table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
        float[] cellWidths = { 30f, 20f, 30f, 20f };
        table.setWidths(cellWidths);

        UnitTrayLabelLifeCycle uls = new UnitTrayLabelLifeCycle();
        if (taxa == null) {
            taxa = uls.findAll();
        }
        Iterator<UnitTrayLabel> i = taxa.iterator();
        PdfPCell cell = null;
        PdfPCell cell_barcode = null;
        // Create two lists of 12 cells, the first 6 of each representing
        // the left hand column of 6 labels, the second 6 of each 
        // representing the right hand column.  
        // cells holds the text for each label, cells_barcode the barcode.
        ArrayList<PdfPCell> cells = new ArrayList<PdfPCell>(12);
        ArrayList<PdfPCell> cells_barcode = new ArrayList<PdfPCell>(12);
        for (int x = 0; x < 12; x++) {
            cells.add(null);
            cells_barcode.add(null);
        }
        int cellCounter = 0;
        while (i.hasNext()) {
            // Loop through all of the taxa (unit tray labels) found to print 
            label = i.next();
            for (int toPrint = 0; toPrint < label.getNumberToPrint(); toPrint++) {
                // For each taxon, loop through the number of requested copies 
                // Generate a text and a barcode cell for each, and add to array for page
                log.debug("Label " + toPrint + " of " + label.getNumberToPrint());
                cell = new PdfPCell();
                cell.setBorderColor(Color.LIGHT_GRAY);
                cell.setVerticalAlignment(PdfPCell.ALIGN_TOP);
                cell.disableBorderSide(PdfPCell.RIGHT);
                cell.setPaddingLeft(3);

                String higherNames = "";
                if (label.getTribe().trim().length() > 0) {
                    higherNames = label.getFamily() + ": " + label.getSubfamily() + ": " + label.getTribe();
                } else {
                    higherNames = label.getFamily() + ": " + label.getSubfamily();
                }
                Paragraph higher = new Paragraph();
                higher.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));
                higher.add(new Chunk(higherNames));
                cell.addElement(higher);

                Paragraph name = new Paragraph();
                Chunk genus = new Chunk(label.getGenus().trim() + " ");
                genus.setFont(new Font(Font.TIMES_ROMAN, 11, Font.ITALIC));
                Chunk species = new Chunk(label.getSpecificEpithet().trim());
                Chunk normal = null; // normal font prefix to preceed specific epithet (nr. <i>epithet</i>)
                if (label.getSpecificEpithet().contains(".") || label.getSpecificEpithet().contains("[")) {
                    if (label.getSpecificEpithet().startsWith("nr. ")) {
                        normal = new Chunk("nr. ");
                        normal.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));
                        species = new Chunk(label.getSpecificEpithet().trim().substring(4));
                        species.setFont(new Font(Font.TIMES_ROMAN, 11, Font.ITALIC));
                    } else {
                        species.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));
                    }
                } else {
                    species.setFont(new Font(Font.TIMES_ROMAN, 11, Font.ITALIC));
                }
                String s = "";
                if (label.getSubspecificEpithet().trim().length() > 0) {
                    s = " ";
                } else {
                    s = "";
                }
                Chunk subspecies = new Chunk(s + label.getSubspecificEpithet().trim());
                if (label.getSubspecificEpithet().contains(".")
                        || label.getSubspecificEpithet().contains("[")) {
                    subspecies.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));
                } else {
                    subspecies.setFont(new Font(Font.TIMES_ROMAN, 11, Font.ITALIC));
                }
                if (label.getInfraspecificRank().trim().length() > 0) {
                    s = " ";
                } else {
                    s = "";
                }
                Chunk infraRank = new Chunk(s + label.getInfraspecificRank().trim());
                infraRank.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));

                if (label.getInfraspecificEpithet().trim().length() > 0) {
                    s = " ";
                } else {
                    s = "";
                }
                Chunk infra = new Chunk(s + label.getInfraspecificEpithet().trim());
                infra.setFont(new Font(Font.TIMES_ROMAN, 11, Font.ITALIC));
                if (label.getUnNamedForm().trim().length() > 0) {
                    s = " ";
                } else {
                    s = "";
                }
                Chunk unNamed = new Chunk(s + label.getUnNamedForm().trim());
                unNamed.setFont(new Font(Font.TIMES_ROMAN, 11, Font.NORMAL));

                name.add(genus);
                if (normal != null) {
                    name.add(normal);
                }
                name.add(species);
                name.add(subspecies);
                name.add(infraRank);
                name.add(infra);
                name.add(unNamed);
                cell.addElement(name);

                Paragraph authorship = new Paragraph();
                authorship.setFont(new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
                if (label.getAuthorship() != null && label.getAuthorship().length() > 0) {
                    Chunk c_authorship = new Chunk(label.getAuthorship());
                    authorship.add(c_authorship);
                }
                cell.addElement(authorship);
                //cell.addElement(new Paragraph(" "));
                if (label.getDrawerNumber() != null && label.getDrawerNumber().length() > 0) {
                    Paragraph drawerNumber = new Paragraph();
                    drawerNumber.setFont(new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
                    Chunk c_drawerNumber = new Chunk(label.getDrawerNumber());
                    drawerNumber.add(c_drawerNumber);
                    cell.addElement(drawerNumber);
                } else {
                    if (label.getCollection() != null && label.getCollection().length() > 0) {
                        Paragraph collection = new Paragraph();
                        collection.setFont(new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
                        Chunk c_collection = new Chunk(label.getCollection());
                        collection.add(c_collection);
                        cell.addElement(collection);
                    }
                }

                cell_barcode = new PdfPCell();
                cell_barcode.setBorderColor(Color.LIGHT_GRAY);
                cell_barcode.disableBorderSide(PdfPCell.LEFT);
                cell_barcode.setVerticalAlignment(PdfPCell.ALIGN_TOP);

                encoder = new LabelEncoder(label);
                image = encoder.getImage();
                image.setAlignment(Image.ALIGN_TOP);
                cell_barcode.addElement(image);

                cells.add(cellCounter, cell);
                cells_barcode.add(cellCounter, cell_barcode);

                cellCounter++;
                // If we have hit a full set of 12 labels, add them to the document
                // in two columns, filling left column first, then right
                if (cellCounter == 12) {
                    // add a page of 12 cells in columns of two.
                    for (int x = 0; x < 6; x++) {
                        if (cells.get(x) == null) {
                            PdfPCell c = new PdfPCell();
                            c.setBorder(0);
                            table.addCell(c);
                            table.addCell(c);
                        } else {
                            table.addCell(cells.get(x));
                            table.addCell(cells_barcode.get(x));
                        }
                        if (cells.get(x + 6) == null) {
                            PdfPCell c = new PdfPCell();
                            c.setBorder(0);
                            table.addCell(c);
                            table.addCell(c);
                        } else {
                            table.addCell(cells.get(x + 6));
                            table.addCell(cells_barcode.get(x + 6));
                        }
                    }
                    // Reset to begin next page
                    cellCounter = 0;
                    document.add(table);
                    table = new PdfPTable(4);
                    table.setWidthPercentage(100f);
                    table.setWidths(cellWidths);
                    for (int x = 0; x < 12; x++) {
                        cells.set(x, null);
                        cells_barcode.set(x, null);
                    }
                }
            } // end loop through toPrint (for a taxon)
            counter++;
        } // end while results has next (for all taxa requested)
          // get any remaining cells in pairs
        for (int x = 0; x < 6; x++) {
            if (cells.get(x) == null) {
                PdfPCell c = new PdfPCell();
                c.setBorder(0);
                table.addCell(c);
                table.addCell(c);
            } else {
                table.addCell(cells.get(x));
                table.addCell(cells_barcode.get(x));
            }
            if (cells.get(x + 6) == null) {
                PdfPCell c = new PdfPCell();
                c.setBorder(0);
                table.addCell(c);
                table.addCell(c);
            } else {
                table.addCell(cells.get(x + 6));
                table.addCell(cells_barcode.get(x + 6));
            }
        }
        // add any remaining cells
        document.add(table);
        try {
            document.close();
        } catch (Exception e) {
            throw new PrintFailedException("No labels to print." + e.getMessage());
        }
        // Check to see if there was content in the document.
        if (counter == 0) {
            result = false;
        } else {
            // Printed to pdf ok.
            result = true;
            // Increment number printed.
            i = taxa.iterator();
            while (i.hasNext()) {
                label = i.next();
                for (int toPrint = 0; toPrint < label.getNumberToPrint(); toPrint++) {
                    label.setPrinted(label.getPrinted() + 1);
                }
                label.setNumberToPrint(0);
                try {
                    uls.attachDirty(label);
                } catch (SaveFailedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new PrintFailedException("File not found.");
    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new PrintFailedException("Error buiding PDF document.");
    } catch (OutOfMemoryError e) {
        System.out.println("Out of memory error. " + e.getMessage());
        System.out.println("Failed.  Too many labels.");
        throw new PrintFailedException("Ran out of memory, too many labels at once.");
    }
    return result;
}

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

private void cambioFormulario(HttpServletRequest request, int[] longitudTextosDesc,
        int[] longitudTextosRangoEdad, int longitudDescripciones, int longitudRangos, int longitudIdiomas,
        int longitudTipoRecurso, int longitudRoles, int longitudContextos, int longitudProcesos,
        int longitudTADesc, String source) throws Exception {

    idiomas = new IdiomaVO[longitudIdiomas];
    descripciones = new DescripcionVO[longitudDescripciones];
    descripcionesCat = new DescripcionUsoEdu[longitudDescripciones][]; //categorias descripciones
    rangosEdad = new RangoEdadVO[longitudRangos];
    tiposRecurso = new SourceValueVO[longitudTipoRecurso];
    roles = new SourceValueVO[longitudRoles];
    contextos = new SourceValueVO[longitudContextos];
    procesosCognitivos = new SourceValueVO[longitudProcesos];
    tiempoApDescripcion = new DescripcionVO[1];

    ArrayList[] textoDescripciones = new ArrayList[longitudDescripciones];
    ArrayList[] listaDescripcionesCat = new ArrayList[longitudDescripciones]; //categorias descripciones
    ArrayList[] idiomaDescripciones = new ArrayList[longitudDescripciones];
    ArrayList[] textoRangoEdad = new ArrayList[longitudRangos];
    ArrayList[] idiomaRangoEdad = new ArrayList[longitudRangos];
    String[] idiomaValor = new String[longitudIdiomas];
    String[] tipoRecursoValor = new String[longitudTipoRecurso];
    String[] rolesValor = new String[longitudRoles];
    String[] contextosValor = new String[longitudContextos];
    String[] procesosValor = new String[longitudProcesos];
    String[] textoTADesc = new String[longitudTADesc];
    String[] idiomaTADesc = new String[longitudTADesc];
    for (Enumeration names = request.getParameterNames(); names.hasMoreElements();) {
        String name = String.valueOf(names.nextElement());
        if (name.equals("Anyos"))
            anyos = request.getParameter(name);
        if (name.equals("Meses"))
            meses = request.getParameter(name);
        if (name.equals("Dias"))
            dias = request.getParameter(name);
        if (name.equals("Horas"))
            horas = request.getParameter(name);
        if (name.equals("Minutos"))
            minutos = request.getParameter(name);
        if (name.equals("SegundosP1"))
            segundosP1 = request.getParameter(name);
        if (name.equals("SegundosP2"))
            segundosP2 = request.getParameter(name);
        if (name.startsWith("Idio")) {//idiomas
            int i = Integer.parseInt(name.substring(4, name.length()));
            idiomaValor[i] = request.getParameter(name);
        }//from  w  w w.j a va 2  s  . co  m
        if (name.startsWith("PCog")) {//proceso cognitvos
            int i = Integer.parseInt(name.substring(4, name.length()));
            procesosValor[i] = request.getParameter(name);
        }
        if (name.startsWith("TRecur")) {//tipo recurso
            int i = Integer.parseInt(name.substring(6, name.length()));
            tipoRecursoValor[i] = request.getParameter(name);
        }
        if (name.startsWith("Contxt")) {//contexto
            int i = Integer.parseInt(name.substring(6, name.length()));
            contextosValor[i] = request.getParameter(name);
        }
        if (name.startsWith("Rol")) {//rol
            int i = Integer.parseInt(name.substring(3, name.length()));
            rolesValor[i] = request.getParameter(name);
        }
        if (name.startsWith("TADes")) {
            if (name.startsWith("TADesTex")) {
                int i = Integer.parseInt(name.substring(8, name.length()));
                textoTADesc[i] = request.getParameter(name);
            }

            if (name.startsWith("TADesIdio")) {
                int i = Integer.parseInt(name.substring(9, name.length()));
                idiomaTADesc[i] = request.getParameter(name);
            }
        }
        if (name.startsWith("Des")) {//descripciones           
            String[] namePartido = name.split("_");
            int i = Integer.parseInt(namePartido[0].substring(3, namePartido[0].length()));
            if (namePartido[1].startsWith("Tex")) {
                int j = Integer.parseInt(namePartido[1].substring(3, namePartido[1].length()));
                ArrayList lDesc = textoDescripciones[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add("");
                }

                lDesc.set(j, request.getParameter(name));
                textoDescripciones[i] = lDesc;
            } else if (namePartido[1].startsWith("Idio")) {//Idio
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lDesc = idiomaDescripciones[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add("");
                }

                lDesc.set(j, request.getParameter(name));
                idiomaDescripciones[i] = lDesc;
            } else if (namePartido[1].startsWith("Sel")) { // seleccion de tipo de descripcion [0,1,2,3]
                int j = Integer.parseInt(namePartido[1].substring("Sel".length(), namePartido[1].length()));
                ArrayList lDesc = listaDescripcionesCat[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add(DescripcionUsoEdu.getInstance());
                }

                DescripcionUsoEdu aux = (DescripcionUsoEdu) lDesc.get(j);
                aux.setSeleccionado(Integer.parseInt(request.getParameter(name)));
                lDesc.set(j, aux);
                listaDescripcionesCat[i] = lDesc;

            } else if (namePartido[1].startsWith("CPre")) { // Conocimiento previo
                int j = Integer.parseInt(namePartido[1].substring("CPre".length(), namePartido[1].length()));
                ArrayList lDesc = listaDescripcionesCat[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add(DescripcionUsoEdu.getInstance());
                }

                DescripcionUsoEdu aux = (DescripcionUsoEdu) lDesc.get(j);
                aux.setConocimientoPrevio(request.getParameter(name));
                lDesc.set(j, aux);
                listaDescripcionesCat[i] = lDesc;

            } else if (namePartido[1].startsWith("ODid")) { // Objetivos didcticos
                int j = Integer.parseInt(namePartido[1].substring("ODid".length(), namePartido[1].length()));
                ArrayList lDesc = listaDescripcionesCat[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add(DescripcionUsoEdu.getInstance());
                }

                DescripcionUsoEdu aux = (DescripcionUsoEdu) lDesc.get(j);
                aux.setObjetivosDidacticos(request.getParameter(name));
                lDesc.set(j, aux);
                listaDescripcionesCat[i] = lDesc;

            } else if (namePartido[1].startsWith("TCon")) { // Tipo de Conocimiento
                int j = Integer.parseInt(namePartido[1].substring("TCon".length(), namePartido[1].length()));
                ArrayList lDesc = listaDescripcionesCat[i];
                if (lDesc == null) {
                    lDesc = new ArrayList();
                    for (int k = 0; k < longitudTextosDesc[i]; k++)
                        lDesc.add(DescripcionUsoEdu.getInstance());
                }

                DescripcionUsoEdu aux = (DescripcionUsoEdu) lDesc.get(j);
                aux.setTipoConocimiento(Arrays.asList(request.getParameterValues(name)));
                lDesc.set(j, aux);
                listaDescripcionesCat[i] = lDesc;

            }
        } else if (name.startsWith("Edad")) {//rangos edad
            String[] namePartido = name.split("_");
            int i = Integer.parseInt(namePartido[0].substring(4, namePartido[0].length()));
            if (namePartido[1].startsWith("Tex")) {
                int j = Integer.parseInt(namePartido[1].substring(3, namePartido[1].length()));
                ArrayList lRango = textoRangoEdad[i];
                if (lRango == null) {
                    lRango = new ArrayList();

                    for (int k = 0; k < longitudTextosRangoEdad[i]; k++)
                        lRango.add("");
                }

                lRango.set(j, request.getParameter(name));
                textoRangoEdad[i] = lRango;
            } else {//Idio
                int j = Integer.parseInt(namePartido[1].substring(4, namePartido[1].length()));
                ArrayList lRango = idiomaRangoEdad[i];
                if (lRango == null) {
                    lRango = new ArrayList();
                    for (int k = 0; k < longitudTextosRangoEdad[i]; k++)
                        lRango.add("");
                }

                lRango.set(j, request.getParameter(name));
                idiomaRangoEdad[i] = lRango;
            }
        }
    }

    //idioma
    for (int i = 0; i < idiomaValor.length; i++) {
        IdiomaVO idioVO = new IdiomaVO();
        idioVO.setTexto(idiomaValor[i]);
        idiomas[i] = idioVO;
    }

    //procesos cognitivos
    for (int i = 0; i < procesosValor.length; i++) {
        SourceValueVO procesoVO = new SourceValueVO();
        procesoVO.setValor(procesosValor[i]);
        procesoVO.setSource(source);
        procesosCognitivos[i] = procesoVO;
    }

    //contextos
    for (int i = 0; i < contextosValor.length; i++) {
        SourceValueVO contextoVO = new SourceValueVO();
        contextoVO.setValor(contextosValor[i]);
        contextoVO.setSource(source);
        contextos[i] = contextoVO;
    }

    //roles
    for (int i = 0; i < rolesValor.length; i++) {
        SourceValueVO rolVO = new SourceValueVO();
        rolVO.setValor(rolesValor[i]);
        rolVO.setSource(source);
        roles[i] = rolVO;
    }

    //tipo recurso
    for (int i = 0; i < tipoRecursoValor.length; i++) {
        SourceValueVO tipoRecrusoVO = new SourceValueVO();
        tipoRecrusoVO.setValor(tipoRecursoValor[i]);
        tipoRecrusoVO.setSource(source);
        tiposRecurso[i] = tipoRecrusoVO;
    }

    //descripcion tiempo de aprendizaje
    DescripcionVO taDescVO = new DescripcionVO();
    LangStringVO[] aLangTADesc = new LangStringVO[textoTADesc.length];
    for (int i = 0; i < textoTADesc.length; i++) {
        LangStringVO langTADesc = new LangStringVO();
        String textoTADescI = textoTADesc[i] != null ? textoTADesc[i] : "";
        langTADesc.setTexto(textoTADescI.trim());
        langTADesc.setIdioma(idiomaTADesc[i]);
        aLangTADesc[i] = langTADesc;
    }
    taDescVO.setTextos(aLangTADesc);
    tiempoApDescripcion[0] = taDescVO;

    //descripciones categorias
    for (int i = 0; i < listaDescripcionesCat.length; i++) {
        descripcionesCat[i] = (DescripcionUsoEdu[]) listaDescripcionesCat[i].toArray(new DescripcionUsoEdu[0]);
    }
    //descripciones
    I18n i18n = I18n.getInstance();

    for (int i = 0; i < textoDescripciones.length; i++) {
        DescripcionVO descVO = new DescripcionVO();
        DescripcionUsoEdu[] aDescripcionesUsoEdu = null;
        if (textoDescripciones[i] != null) {
            LangStringVO[] aLangDesc = new LangStringVO[textoDescripciones[i].size()];
            aDescripcionesUsoEdu = new DescripcionUsoEdu[textoDescripciones[i].size()]; // caracteristica descripcion

            for (int j = 0; j < textoDescripciones[i].size(); j++) {
                LangStringVO langDesc = new LangStringVO();
                String textoDescIJ = "";
                String idiomaDescIJ = (idiomaDescripciones[i].get(j) != null ? idiomaDescripciones[i].get(j)
                        : "").toString();

                String idioma = (String) listaIdiomas.get(idiomaDescIJ);
                if (idioma == null)
                    idioma = this.getCatalogadorAvSession(request).getIdioma();

                if (descripcionesCat[i][j] != null && !descripcionesCat[i][j].getVacio() && idioma != null) {
                    String[] captions = i18n.getResource("catalogadorAvanzado.descripcionesUsoEdu.titulos",
                            "application-resources", new Locale(idioma)).split(",");
                    DescripcionUsoEdu descEUAux = descripcionesCat[i][j];
                    StringBuffer sb = new StringBuffer();
                    if (!descEUAux.getVacio() && descEUAux.getSeleccionado() == 1) {
                        // completar la descripcion con conocimiento previo...
                        sb.append(captions[0].toUpperCase()).append(descEUAux.getConocimientoPrevio());
                        descEUAux.setObjetivosDidacticos("");
                        descEUAux.setTipoConocimiento(new ArrayList());
                        aDescripcionesUsoEdu[j] = descEUAux;
                    } else if (!descEUAux.getVacio() && descEUAux.getSeleccionado() == 2) {
                        //    completar la descripcion con objetivos didacticos...
                        sb.append(captions[1].toUpperCase()).append(descEUAux.getObjetivosDidacticos());
                        descEUAux.setConocimientoPrevio("");
                        descEUAux.setTipoConocimiento(new ArrayList());
                        aDescripcionesUsoEdu[j] = descEUAux;
                    } else if (!descEUAux.getVacio() && descEUAux.getSeleccionado() == 3) {
                        // completar con las traducciones de los tipos de conocimientos

                        String[] lista = (String[]) descEUAux.getTipoConocimiento().toArray(new String[0]);
                        TerminoVO[] terminos = this.getSrvVocabulariosControladosService()
                                .crearTraduccionAIdioma(lista, idioma);
                        if (terminos != null && terminos.length > 0) {
                            sb.append(captions[2].toUpperCase()).append(" ");
                            for (int k = 0; k < terminos.length; k++) {
                                sb.append(terminos[k].getNomTermino());
                                if (terminos.length - k > 1) {
                                    sb.append(", ");
                                }
                            }
                        }
                        descEUAux.setObjetivosDidacticos("");
                        descEUAux.setConocimientoPrevio("");
                        aDescripcionesUsoEdu[j] = descEUAux;

                    } else {
                        listaDescripcionesCat[i].set(j, DescripcionUsoEdu.getInstance());
                        sb.append((textoDescripciones[i].get(j) != null ? textoDescripciones[i].get(j) : "")
                                .toString());
                    }
                    textoDescIJ = sb.toString();
                } else {
                    if (descripcionesCat[i][j] != null && descripcionesCat[i][j].getVacio()
                            && descripcionesCat[i][j].getSeleccionado() > 0)
                        textoDescIJ = "";
                    else
                        textoDescIJ = (textoDescripciones[i].get(j) != null ? textoDescripciones[i].get(j) : "")
                                .toString();

                }

                langDesc.setTexto(textoDescIJ.trim());
                langDesc.setIdioma(idiomaDescIJ.trim());
                aLangDesc[j] = langDesc;

                aDescripcionesUsoEdu[j] = (DescripcionUsoEdu) listaDescripcionesCat[i].get(j);
            }
            descVO.setTextos(aLangDesc);

        } else {
            LangStringVO[] aLangString = new LangStringVO[1];
            LangStringVO langString = new LangStringVO();
            langString.setIdioma("");
            langString.setTexto("");
            aLangString[0] = langString;
            descVO.setTextos(aLangString);

            aDescripcionesUsoEdu = new DescripcionUsoEdu[1];
            aDescripcionesUsoEdu[0] = DescripcionUsoEdu.getInstance();
        }
        descripciones[i] = descVO;
        descripcionesCat[i] = aDescripcionesUsoEdu;
    }

    //rangos de edad
    for (int i = 0; i < textoRangoEdad.length; i++) {
        RangoEdadVO rangoEdadVO = new RangoEdadVO();
        if (textoRangoEdad[i] != null) {
            LangStringVO[] aLangRango = new LangStringVO[textoRangoEdad[i].size()];
            for (int j = 0; j < textoRangoEdad[i].size(); j++) {
                LangStringVO langRango = new LangStringVO();
                String textoRangoEdadIJ = (textoRangoEdad[i].get(j) != null ? textoRangoEdad[i].get(j) : "")
                        .toString();
                String idiomaRangoEdadIJ = (idiomaRangoEdad[i].get(j) != null ? idiomaRangoEdad[i].get(j) : "")
                        .toString();
                langRango.setTexto(textoRangoEdadIJ.trim());
                langRango.setIdioma(idiomaRangoEdadIJ.trim());
                aLangRango[j] = langRango;
            }
            rangoEdadVO.setTextos(aLangRango);
        } else {
            LangStringVO[] aLangString = new LangStringVO[1];
            LangStringVO langString = new LangStringVO();
            langString.setIdioma("");
            langString.setTexto("");
            aLangString[0] = langString;
            rangoEdadVO.setTextos(aLangString);
        }
        rangosEdad[i] = rangoEdadVO;
    }
}

From source file:com.mimp.hibernate.HiberNna.java

public ArrayList<Nna> ListaNnaSeguimiento(String clasificacion) {
    Session session = sessionFactory.getCurrentSession();
    final String clasif = clasificacion;
    final ArrayList<Nna> allNna = new ArrayList();
    final ArrayList<Nna> allNnaAux = new ArrayList();
    final ArrayList<Nna> allNnaFinal = new ArrayList();

    Work work = new Work() {
        @Override/*from   w w  w. j  a  v  a 2s.c  om*/
        public void execute(Connection connection) throws SQLException {
            ExpedienteNna expnna;
            Nna tempnna;
            Designacion desig;

            EstudioCaso est;

            String hql = "{call HN_GET_NNA_SEG(?)}";
            CallableStatement statement = connection.prepareCall(hql);
            statement.registerOutParameter(1, OracleTypes.CURSOR);
            statement.execute();

            temp = (ResultSet) statement.getObject(1);

            while (temp.next()) {
                tempnna = new Nna();
                tempnna.setIdnna(temp.getLong(1));
                tempnna.setNombre(temp.getString(2));
                tempnna.setApellidoP(temp.getString(3));
                tempnna.setApellidoM(temp.getString(4));
                tempnna.setSexo(temp.getString(5));
                tempnna.setFechaNacimiento(temp.getDate(6));
                tempnna.setEdadAnhos(temp.getShort(7));
                tempnna.setEdadMeses(temp.getShort(8));
                tempnna.setActaNacimiento(temp.getShort(9));
                tempnna.setCondicionSalud(temp.getString(10));
                tempnna.setDepartamentoNacimiento(temp.getString(11));
                tempnna.setProvinciaNacimiento(temp.getString(12));
                tempnna.setDistritoNacimiento(temp.getString(13));
                tempnna.setPaisNacimiento(temp.getString(14));
                tempnna.setLugarNac(temp.getString(15));
                tempnna.setFechaResolAbandono(temp.getDate(16));
                tempnna.setFechaResolConsentida(temp.getDate(17));
                tempnna.setClasificacion(temp.getString(18));
                tempnna.setIncesto(temp.getShort(19));
                tempnna.setMental(temp.getShort(20));
                tempnna.setEpilepsia(temp.getShort(21));
                tempnna.setAbuso(temp.getShort(22));
                tempnna.setSifilis(temp.getShort(23));
                tempnna.setSeguiMedico(temp.getShort(24));
                tempnna.setOperacion(temp.getShort(25));
                tempnna.setHiperactivo(temp.getShort(26));
                tempnna.setEspecial(temp.getShort(27));
                tempnna.setEnfermo(temp.getShort(28));
                tempnna.setMayor(temp.getShort(29));
                tempnna.setAdolescente(temp.getShort(30));
                tempnna.setHermano(temp.getShort(31));
                tempnna.setNn(temp.getShort(32));
                tempnna.setObservaciones(temp.getString(33));
                tempnna.setNResolAband(temp.getString(34));
                tempnna.setNResolCons(temp.getString(35));
                try {
                    expnna = getExpNna(temp.getLong(1));
                    if (expnna.getIdexpedienteNna() != 0) {
                        Set<ExpedienteNna> listexp = new HashSet<ExpedienteNna>();
                        listexp.add(expnna);
                        tempnna.setExpedienteNnas(listexp);
                    }
                } catch (Exception e) {

                }
                allNnaAux.add(tempnna);
            }
            statement.close();
            temp.close();

            //AQUI DESIGNACIONES Y ESTUDIO DE CASOS EN CASO SEA PRIORITARIO
            for (Nna auxnna : allNnaAux) {
                Set<Designacion> listDesig = new HashSet<Designacion>();
                String hql2 = "{call HN_GET_DESIGNACIONES(?,?)}";
                CallableStatement statement2 = connection.prepareCall(hql2);
                statement2.setLong(1, auxnna.getIdnna());
                statement2.registerOutParameter(2, OracleTypes.CURSOR);
                statement2.execute();

                ResultSet rs2 = (ResultSet) statement2.getObject(2);
                while (rs2.next()) {
                    desig = new Designacion();
                    desig.setIddesignacion(rs2.getLong(1));
                    desig.setNDesignacion(rs2.getString(5));
                    desig.setPrioridad(rs2.getLong(6));
                    desig.setFechaPropuesta(rs2.getDate(7));
                    desig.setFechaConsejo(rs2.getDate(8));
                    desig.setAceptacionConsejo(rs2.getShort(9));
                    desig.setTipoPropuesta(rs2.getString(10));
                    desig.setObs(rs2.getString(11));
                    listDesig.add(desig);
                }
                auxnna.setDesignacions(listDesig);
                allNna.add(auxnna);
                statement2.close();
                rs2.close();
            }

            for (Nna auxnna : allNna) {
                if (auxnna.getClasificacion().equals("prioritario")) {
                    Set<EstudioCaso> listEst = new HashSet<EstudioCaso>();
                    String hql3 = "{call HN_GET_ESTUDIOS_CASO(?,?)}";
                    CallableStatement statement3 = connection.prepareCall(hql3);
                    statement3.setLong(1, auxnna.getIdnna());
                    statement3.registerOutParameter(2, OracleTypes.CURSOR);
                    statement3.execute();

                    ResultSet rs3 = (ResultSet) statement3.getObject(2);
                    while (rs3.next()) {
                        est = new EstudioCaso();
                        est.setIdestudioCaso(rs3.getLong(1));
                        est.setOrden(rs3.getString(4));
                        est.setFechaEstudio(rs3.getDate(5));
                        est.setFechaSolAdop(rs3.getDate(6));
                        est.setResultado(rs3.getString(7));
                        est.setPrioridad(rs3.getLong(8));
                        est.setNSolicitud(rs3.getLong(9));
                        listEst.add(est);
                    }
                    auxnna.setEstudioCasos(listEst);
                    statement3.close();
                    rs3.close();
                }
                allNnaFinal.add(auxnna);
            }

            //METODO BUBBLESORT PARA ORDENAR POR CODIGO
            if (clasif.equals("prioritario")) {
                Nna auxnna2;
                int n = allNnaFinal.size();
                for (int i = 0; i < n - 1; i++) {
                    for (int j = i; j < n - 1; j++) {
                        if (allNnaFinal.get(i).getExpedienteNnas().isEmpty()) {
                            if (!allNnaFinal.get(j + 1).getExpedienteNnas().isEmpty()) {
                                auxnna2 = allNnaFinal.get(i);
                                allNnaFinal.set(i, allNnaFinal.get(j + 1));
                                allNnaFinal.set(j + 1, auxnna2);
                            } else {
                                String apellidoPrev = "";
                                String apellidoNext = "";
                                try {
                                    apellidoPrev = allNnaFinal.get(i).getApellidoP();
                                    if (apellidoPrev == null) {
                                        apellidoPrev = "";
                                    }
                                } catch (Exception ex) {
                                    apellidoPrev = "";
                                }
                                try {
                                    apellidoNext = allNnaFinal.get(j + 1).getApellidoP();
                                    if (apellidoNext == null) {
                                        apellidoNext = "";
                                    }
                                } catch (Exception ex) {
                                    apellidoNext = "";
                                }
                                if (apellidoPrev.compareToIgnoreCase(apellidoNext) > 0) {
                                    auxnna2 = allNnaFinal.get(i);
                                    allNnaFinal.set(i, allNnaFinal.get(j + 1));
                                    allNnaFinal.set(j + 1, auxnna2);
                                }
                            }
                        } else {
                            Set<ExpedienteNna> listExp1 = allNnaFinal.get(i).getExpedienteNnas();
                            Set<ExpedienteNna> listExp2 = allNnaFinal.get(j + 1).getExpedienteNnas();
                            if (!listExp2.isEmpty()) {
                                for (ExpedienteNna exp1 : listExp1) {
                                    for (ExpedienteNna exp2 : listExp2) {
                                        String codant = exp1.getCodigoReferencia();
                                        String codpost = exp2.getCodigoReferencia();
                                        if (codant == null) {
                                            codant = "";
                                        }
                                        if (codpost == null) {
                                            codpost = "";
                                        }
                                        if (codant.compareToIgnoreCase(codpost) > 0) {
                                            auxnna2 = allNnaFinal.get(i);
                                            allNnaFinal.set(i, allNnaFinal.get(j + 1));
                                            allNnaFinal.set(j + 1, auxnna2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    };
    session.doWork(work);

    return allNnaFinal;
}