Package fmg.fmg8.statistik.startSetup

Source Code of fmg.fmg8.statistik.startSetup.JoSchKa

/*
* Datei: JoSchKa.java
* Autor(en):        Lukas K�nig
* Java-Version:     6.0
* Erstellt:         22.04.2009
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.statistik.startSetup;

import java.util.ArrayList;

import fmg.fmg8.statistik.Parametersatz;

/**
* @author Lukas K�nig
*/
public class JoSchKa {
   
    /**
     * @param setzPars      Die zu setzenden Parameter.
     * @param params        Die Parameter.
     * @param werte         Die Werte der zu setzenden Parameter.
     * @param setzParsFest  Parameter, die nicht mit allen anderen kombiniert,
     *                      sondern fortlaufen eingef�gt werden.
     * @param werteFest     Zugeh�rige Werte. Die Anzahl der Werte muss immer
     *                      genau die Anzahl der insgesamt zu erzeugenden
     *                      Parameters�tze sein.
     *
     * @return  Ausgabe.
     */
    public ArrayList<String> erzeuge(
            final Parametersatz params,
            final ArrayList<String> setzPars,
            final ArrayList<String[]> werte,
            final ArrayList<String> setzParsFest,
            final ArrayList<String[]> werteFest) {
        ArrayList<String> ausgabe;
        int[] laengen = new int[setzPars.size()];
        int[] zaehler = new int[setzPars.size()];
        boolean b = false;
        String[] aenderungen
            = new String[setzPars.size() * 2 + setzParsFest.size() * 2];
        int j;
        int gesLen = 1;
        int max = 0;
        int gesZaehler = 0;
        String aktSatz;
        String aktAusg;
       
        // Z�hlerarray initialisieren.
        for (int i = 0; i < laengen.length; i++) {
            laengen[i] = werte.get(i).length;
            zaehler[i] = 0;
            gesLen *= werte.get(i).length;
            if (laengen[i] > max) {
                max = laengen[i];
            }
        }

        ausgabe = new ArrayList<String>(gesLen);
       
        // Eintr�ge erzeugen.
        while (!b && max > 1) {
            aktSatz = "";
           
            // Alle Kombinationen.
            for (int i = 0; i < zaehler.length; i++) {
                j = 2 * i;
                aenderungen[j] = setzPars.get(i);
                aenderungen[j + 1] = werte.get(i)[zaehler[i]];

                if (werte.get(i).length > 1) {
                    aktSatz += "-" + aenderungen[j];
                    aktSatz += "_" + aenderungen[j + 1];
                }
            }

            // Feste Werte.
            for (int i = zaehler.length; i * 2 < aenderungen.length; i++) {
                j = 2 * i;
               
                aenderungen[j] = setzParsFest.get(i - zaehler.length);
                aenderungen[j + 1]
                            = werteFest.get(i - zaehler.length)[gesZaehler];
            }
           
            aktAusg = this.erzeugeEinzPar(params, aenderungen);
            aktAusg = aktAusg.replaceAll("#", aktSatz); // Ersetze "#".
            ausgabe.add(aktAusg);
           
            for (int i = 0; i < zaehler.length; i++) {
                zaehler[i] = (zaehler[i] + 1) % laengen[i];
                if (zaehler[i] != 0) {
                    break;
                }
            }
           
            b = true;
            for (int i = 0; i < laengen.length; i++) {
                if (zaehler[i] < laengen[i] - 1) {
                    b = false;
                }
            }
           
            gesZaehler++;
        }

        // Letzten Eintrag erzeugen.
        // Alle Kombinationen.
        aktSatz = "";
        for (int i = 0; i < zaehler.length; i++) {
            j = 2 * i;
            aenderungen[j] = setzPars.get(i);
            aenderungen[j + 1] = werte.get(i)[zaehler[i]];
           
            if (werte.get(i).length > 1) {
                aktSatz += "-" + aenderungen[j];
                aktSatz += "_" + aenderungen[j + 1];
            }
        }
       
        // Feste Werte.
        for (int i = zaehler.length; i * 2 < aenderungen.length; i++) {
            j = 2 * i;
            aenderungen[j] = setzParsFest.get(i - zaehler.length);
            aenderungen[j + 1]
                        = werteFest.get(i - zaehler.length)[gesZaehler];
        }
       
        aktAusg = this.erzeugeEinzPar(params, aenderungen);       
        aktAusg = aktAusg.replaceAll("#", aktSatz); // Ersetze "#".
        ausgabe.add(aktAusg);

        return ausgabe;
    }

    /**
     * Erzeugt einen einzelnen Parametersatz mit den in <code>params</code>
     * gespeicherten Parametern und den angegebenen �nderungen.
     *
     * @param params       Die zugrundeliegenden Parameter. Kann
     *                     <code>null</code> sein.
     * @param aenderungen  Die �nderungen.
     *
     * @return  Der einzelne Parametersatz als String.
     */
    public String erzeugeEinzPar(
            final Parametersatz params,
            final String[] aenderungen) {
        Parametersatz neu = new Parametersatz(params);
        neu.ergaenze();
        neu.neuePars(aenderungen);
        return neu.parStrPlain().replace('\n', ' ');
    }
   
    /**
     * @param anf      Der Anfangswert (inkl).
     * @param end      Der Endwert (inkl, falls nicht �bersprungen).
     * @param schritt  Die Schrittweite.
     *
     * @return  Die Zahlen innerhalb der Range.
     */
    public String[] erzeugeRange(
            final int anf,
            final int end,
            final int schritt) {
        String[] ausg = new String[(end - anf) / schritt + 1];
        int zaehler = 0;
       
        for (int i = anf; i <= end; i += schritt) {
            ausg[zaehler] = "" + i;
            zaehler++;
        }
       
        return ausg;
    }

    /**
     * @param anf      Der Anfangswert (inkl).
     * @param end      Der Endwert (inkl, falls nicht �bersprungen).
     * @param schritt  Die Schrittweite.
     *
     * @return  Die Zahlen innerhalb der Range.
     */
    public String[] erzeugeRangeDouble(
            final double anf,
            final double end,
            final double schritt) {
        String[] ausg = new String[(int) ((end - anf) / schritt + 1)];
        int zaehler = 0;
       
        for (double i = anf; i <= end; i += schritt) {
            ausg[zaehler] = "" + i;
            zaehler++;
        }
       
        return ausg;
    }

    /**
     * Erzeugt fertige Jobdatens�tze f�r JoSchKa, die direkt in eine Job-Datei
     * eingef�gt werden k�nnen. UserIdentifier und PreUserIdentifier werden
     * automatisch eingef�gt.
     *
     * @param jobType           Jobverzeichnisbeschreibung.
     * @param platform          Plattform.
     * @param startKommando     Das Startkommando (Parameter werden angef�gt).
     * @param resultFiles       Welche Dateien wieder zur�ckgeholt werden
     *                          sollen.
     * @param maintainOutput    MainTainOutPut.
     * @param files             Hochzuladende Dateien.
     * @param mailNotification  Email-Benachrichtigung.
     * @param periodicUpload    Periodischer Upload.
     * @param param             Die Parameter f�r den Start.
     *
     * @return       Die JoSchKa-Datens�tze.
     */
    public ArrayList<String> erzeugeJoSchKa(
            final String jobType,
            final String platform,
            final String startKommando,
            final String resultFiles,
            final String maintainOutput,
            final String files,
            final String mailNotification,
            final String periodicUpload,
            final ArrayList<String> param) {
        ArrayList<String> joschka = new ArrayList<String>(param.size());
       
        for (int i = 0; i < param.size(); i++) {
            joschka.add("");
            joschka.set(i, joschka.get(i) + jobType);
            joschka.set(i, joschka.get(i) + "\t" + platform);
            joschka.set(
                    i,
                    joschka.get(i)
                        + "\t"
                        + startKommando
                        + " "
                        + param.get(i));
            joschka.set(i, joschka.get(i) + "\t" + resultFiles);
            joschka.set(i, joschka.get(i) + "\t" + maintainOutput);
            joschka.set(i, joschka.get(i) + "\t" + files);
            joschka.set(i, joschka.get(i) + "\t" + mailNotification);
            joschka.set(i, joschka.get(i) + "\t" + periodicUpload);
            joschka.set(i, joschka.get(i) + "\t" + i); // UserIdentifier.
            joschka.set(i, joschka.get(i) + "\t"); // PreUserIdentifier.
        }
       
        return joschka;
    }

    /**
     * Erzeugt fertige Jobdatens�tze f�r JoSchKa, die direkt in eine Job-Datei
     * eingef�gt werden k�nnen. UserIdentifier und PreUserIdentifier sowie
     * alle Standardparameter werden automatisch eingef�gt.
     *
     * @param jobType           Jobverzeichnisbeschreibung.
     * @param startKommando     Das Startkommando (Parameter werden angef�gt).
     * @param param             Die Parameter f�r den Start.
     * @param params            Der Parametersatz.
     *
     * @return       Die JoSchKa-Datens�tze.
     */
    public ArrayList<String> erzeugeJoSchKaStd(
            final String jobType,
            final String startKommando,
            final ArrayList<String> param,
            final Parametersatz params) {
        return this.erzeugeJoSchKa(
                jobType,
                params.getJoschkaPlatt(),
                startKommando,
                "*",
                "no",
                "*",
                "no",
                "yes",
                param);
    }
}
TOP

Related Classes of fmg.fmg8.statistik.startSetup.JoSchKa

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.