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; }