public boolean openQuery(
      RegisterView regView, int queryField, int queryOperator, QueryOperant queryOperant2) {
    boolean isOk = false;
    initQuery();
    this.countRows = true;
    Register reg = regView.getRegister();
    Xmp resObj;
    if (reg != null) {
      try {
        // Result Object festlegen
        resObj = (Xmp) Class.forName(reg.getContentClassName()).newInstance();
        setFieldListMitDID(resObj, reg.getIntFieldList());
        this.setResultObject(resObj);
        FieldSpec fSpec = resObj.getFieldSpecs()[queryField - 1];

        this.queryList.add(
            new QueryPart(
                new QueryOperant(resObj.getXmlClassTag(), fSpec.getFieldName()),
                queryOperator,
                queryOperant2));

        if ((reg.getOrderList() != null) && (reg.getOrderList().size() > 0)) {
          this.orderList = reg.getOrderList();
        } else {
          // Orderlist generieren
          // Jetzt einstweilen die ersten 2 Resultfields sortieren
          if (reg.getIntFieldList() != null) {
            int anzSortFelder = reg.getIntFieldList().length;
            // int anzSortFelder = reg.getFieldList().size();
            if (anzSortFelder > 3) anzSortFelder = 3; // auf 3 begrenzen
            int fieldSpecNr;
            for (int z = 0; z < anzSortFelder; z++) {
              fieldSpecNr = reg.getIntFieldList()[z] - 1;
              // fieldSpecNr =reg.getFieldList().get(z)-1;
              this.orderList.add(
                  new OrderPart(
                      new QueryOperant(
                          resObj.getXmlClassTag(),
                          resObj.getFieldSpecs()[fieldSpecNr].getFieldName()),
                      OrderPart.asc));
            }
          }
        }
        isOk = true; // alles klar
      } catch (Exception e) {

      }
    }
    return isOk;
  }
 public static void setFieldListMitDID(Xmp resObj, int[] fListOriginal) {
   // überprüfen, ob die DID mitgeladen wird!!
   boolean hasEins = false;
   for (int i = 0; i < fListOriginal.length; i++) {
     if (fListOriginal[i] == 1) {
       hasEins = true;
       break;
     }
   }
   if (!hasEins) // Die Eins anfügen
   {
     int[] newFlist = new int[fListOriginal.length + 1];
     newFlist[0] = 1; // Die Eins== DID mit aufnehmen
     for (int i = 1; i < newFlist.length; i++) {
       newFlist[i] = fListOriginal[i - 1]; // Rest Rüberkopieren
     }
     resObj.setFieldList(newFlist);
   } else resObj.setFieldList(fListOriginal);
 }
  public boolean openQuery(RegisterView regView, Xmp inp) {
    boolean isOk = false;
    initQuery();
    this.setMasterObject(inp);
    this.countRows = true;
    Register reg = regView.getRegister();
    Xmp resObj;
    if (reg != null) {
      try {
        // Result Object festlegen
        resObj = (Xmp) Class.forName(reg.getContentClassName()).newInstance();

        // überprüfen, ob die DID mitgeladen wird!!
        setFieldListMitDID(resObj, reg.getIntFieldList());

        this.setResultObject(resObj);

        // Query generieren
        if ((regView.getFilterGruppenListe() == null)
            || regView.getFilterGruppenListe().isEmpty()
            || (regView.getFilterGruppenListe().get(0) == null)) {
          // keine Filter also AllRecords
          this.queryList.add(
              new QueryPart(
                  new QueryOperant(
                      resObj.getXmlClassTag(), resObj.getFieldSpecs()[0].getFieldName()),
                  QueryPart.allRecords));
        } else {
          int anzFilter = regView.getFilterGruppenListe().size();
          this.queryList = new ArrayList<QueryPart>();
          for (int i = 0; i < anzFilter; i++) {
            // ggf Klammer auf
            if (anzFilter > 1) {
              this.queryList.add(new QueryPart(QueryPart.bracketOpen));
            }

            // QueryListe aus gewählten filter übernehmen
            int filterNummer = regView.getFilterGruppenListe().get(i).getSelectedFilterNummer();
            if (regView.getFilterGruppenListe().get(i).getFilterListe().get(filterNummer) != null) {
              // ArrayList<QueryPart>
              // qList=regView.getFilterGruppenListe().get(i).getFilterListe().get(filterNummer).getQueryList();
              this.queryList.addAll(
                  regView
                      .getFilterGruppenListe()
                      .get(i)
                      .getFilterListe()
                      .get(filterNummer)
                      .getQueryList());
            }
            // ggf. Klammer zu
            if (anzFilter > 1) {
              this.queryList.add(new QueryPart(QueryPart.bracketClose));
            }
          }
        }

        // Orderlist aus Register holen oder generieren

        if ((reg.getOrderList() != null) && (reg.getOrderList().size() > 0)) {
          this.orderList = reg.getOrderList();
        } else {
          // Orderlist generieren
          // Jetzt einstweilen die ersten 2 Resultfields sortieren
          if (reg.getIntFieldList() != null) {
            int anzSortFelder = reg.getIntFieldList().length;
            // int anzSortFelder = reg.getFieldList().size();
            if (anzSortFelder > 3) anzSortFelder = 3; // auf 3 begrenzen
            int fieldSpecNr;
            for (int z = 0; z < anzSortFelder; z++) {
              fieldSpecNr = reg.getIntFieldList()[z] - 1;
              // fieldSpecNr =reg.getFieldList().get(z)-1;
              this.orderList.add(
                  new OrderPart(
                      new QueryOperant(
                          resObj.getXmlClassTag(),
                          resObj.getFieldSpecs()[fieldSpecNr].getFieldName()),
                      OrderPart.asc));
            }
          }
        }

        isOk = true; // alles klar
      } catch (Exception e) {
        logger.error("Fehler bei openQuery(RegisterView regView):", e);
      }
    }
    return isOk;
  }