public void setLaufzeit(DataPointVector DPVector, int vorlaufzeit_jahre, int laufzeit) {
    Date Beginn = new Date();
    Date Ende = new Date();
    int laufzeit_jahre = RandomNumber(2, 25);
    Date Stichtag = Calendar.getInstance().getTime();

    DPVector.addDataPoint("AI_Stichtag_Datum", Stichtag);

    Beginn.setYear((2014 - vorlaufzeit_jahre) - 1900);
    Beginn.setMonth(RandomNumber(1, 12));
    Beginn.setDate(RandomNumber(1, 28));

    Ende.setYear(2014 + laufzeit_jahre - 1900);
    Ende.setMonth(RandomNumber(1, 12));
    Ende.setDate(RandomNumber(1, 28));

    // Ende Laufzeit
    //
    DPVector.addDataPoint("GF17_Vertragsbeginn_Datum", Beginn);
    DPVector.addDataPoint("GF18_Kapitalbeginn_Datum", Beginn);
    DPVector.addDataPoint("GF19_Kapitalende_Datum", Ende);

    DPVector.addDataPoint("GF52_Vertragsende_Datum", Ende);
    DPVector.addDataPoint(
        "GFA83_Ursprungslaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Beginn, Ende));
    DPVector.addDataPoint(
        "GFA84_Restlaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Stichtag, Ende));
  }
  public Vector<DataPointVector> CDSorCLN(int type, int NominalWert) {

    int LastID = getLastID() + 1;

    Vector<DataPointVector> CDSData = new Vector();
    // 0ter Datensatz entspricht dem CDS
    // alle weiten sind Underlyungs

    //
    // Wichtige Parameter
    //
    // Dieser Vector enthält Kredite mit verschiedenen Ausprägungen
    DataPointVector DPVector = new DataPointVector();

    String GFK = "";
    if (type == 0) GFK = "Q";
    if (type == 1) GFK = "H";

    DPVector.addDataPoint("GF00_Geschaeftsfallkategorie_Code", GFK);

    if (type == 1) {
      DPVector.addDataPoint("WM00_Wertpapiertyp_Code", "ANL");
      DPVector.addDataPoint("WM02_Wertpapierart_Code", "CLN");
    }

    Date Stichtag = Calendar.getInstance().getTime();
    DPVector.addDataPoint("AI_Mandant", 1);
    DPVector.addDataPoint("AI_Stichtag_Datum", Stichtag);
    DPVector.addDataPoint("EM04_Sektor_ESVG_MS_Code", ESVGSektoren.randomElement());
    DPVector.addDataPoint("EO02_Sitzland_OS_Code", Laender.randomElement());
    DPVector.addDataPoint(
        "GF03_Geschaeftsfall_Waehrung_Code", Land_Waehrung.get(Laender.randomElement()));
    int vorlaufzeit_jahre = RandomNumber(2, 10);
    Date Beginn = new Date();
    Date Ende = new Date();
    int laufzeit_jahre = RandomNumber(2, 25);
    Beginn.setYear((2014 - vorlaufzeit_jahre) - 1900);
    Beginn.setMonth(RandomNumber(1, 12));
    Beginn.setDate(RandomNumber(1, 28));
    Ende.setYear(2014 + laufzeit_jahre - 1900);
    Ende.setMonth(RandomNumber(1, 12));
    Ende.setDate(RandomNumber(1, 28));

    //
    // Ende Laufzeit
    //

    int Anzahl_Underlyings = 1;

    if (type == 1) {
      Anzahl_Underlyings = 2; // RandomNumber(3, 6);
    }

    if (type == 1) {
      // Phantasie ISIN
      DPVector.addDataPoint("AI_ISIN", "DE000BAY0017");
    }

    System.out.println("Anzahl_Underlyings = " + Anzahl_Underlyings);
    DPVector.addDataPoint("GF17_Vertragsbeginn_Datum", Beginn);
    DPVector.addDataPoint("GF18_Kapitalbeginn_Datum", Beginn);
    DPVector.addDataPoint("GF19_Kapitalende_Datum", Ende);
    // Derivate Attribute für einen Swap
    if (type == 0) DPVector.addDataPoint("GF40_Kauf_Verkauf_Code", "V");
    if (type == 0) DPVector.addDataPoint("GF42_Derivattyp_Code", "S");
    DPVector.addDataPoint("GF52_Vertragsende_Datum", Ende);
    DPVector.addDataPoint(
        "GFA83_Ursprungslaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Beginn, Ende));
    DPVector.addDataPoint(
        "GFA84_Restlaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Stichtag, Ende));
    DPVector.addDataPoint("GF109_Bilanzseite_Code", "AKT");
    DPVector.addDataPoint("GF112_Zerlegung_Underlying_Kennzeichen", "FALSCH");
    DPVector.addDataPoint("NN", NominalWert);

    if (type == 1) {
      DPVector.addDataPoint(
          "MW",
          NominalWert
              * 1.2); // hier die Möglichekit schaffen dass der Marktwert auch weniger als die
                      // Nominale ist
    }

    CDSData.add(DPVector); // originaeres CDS

    for (int j = 0; j < Anzahl_Underlyings; j++) {
      // Hinzufuegen von Underlyings
      DataPointVector Underlying = new DataPointVector();
      Underlying.addDataPoint("GF00_Geschaeftsfallkategorie_Code", "A");
      Underlying.addDataPoint("AI_Mandant", 1);
      Underlying.addDataPoint("AI_Stichtag_Datum", Stichtag);
      Underlying.addDataPoint("GF109_Bilanzseite_Code", "AUB");

      Underlying.addDataPoint("EM04_Sektor_ESVG_MS_Code", ESVGSektoren.randomElement());
      Underlying.addDataPoint("EO02_Sitzland_OS_Code", Laender.randomElement());
      Underlying.addDataPoint(
          "GF03_Geschaeftsfall_Waehrung_Code", Land_Waehrung.get(Laender.randomElement()));

      Beginn.setYear((2014 - vorlaufzeit_jahre) - 1900);
      Beginn.setMonth(RandomNumber(1, 12));
      Beginn.setDate(RandomNumber(1, 28));
      Ende.setYear(2014 + laufzeit_jahre - 1900);
      Ende.setMonth(RandomNumber(1, 12));
      Ende.setDate(RandomNumber(1, 28));

      //
      // Ende Laufzeit
      //
      Underlying.addDataPoint("GF17_Vertragsbeginn_Datum", Beginn);
      Underlying.addDataPoint("GF18_Kapitalbeginn_Datum", Beginn);
      Underlying.addDataPoint("GF19_Kapitalende_Datum", Ende);
      Underlying.addDataPoint("GF52_Vertragsende_Datum", Ende);
      Underlying.addDataPoint(
          "GFA83_Ursprungslaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Beginn, Ende));
      Underlying.addDataPoint(
          "GFA84_Restlaufzeit_Code", BCAlgos.XEN_Laufzeitenberechnung(Stichtag, Ende));
      Underlying.addDataPoint("GF112_Zerlegung_Underlying_Kennzeichen", "WAHR");
      Underlying.addDataPoint("GB01_Beziehungsart_Code", "UL");
      Underlying.addDataPoint("AI_Geschaeftsfall_ID2", LastID);
      Underlying.addDataPoint("NN", NominalWert / Anzahl_Underlyings);
      Underlying.addDataPoint("BW", NominalWert / Anzahl_Underlyings);

      CDSData.add(Underlying);
    }

    return (Vector<DataPointVector>) CDSData;
  }