List of usage examples for org.apache.commons.collections4.comparators ComparatorChain addComparator
public void addComparator(final Comparator<E> comparator)
From source file:org.efaps.eql.JSONData.java
/** * @param _printStmt Statement the datalist will be created for * @return a DataList/*from w w w . ja v a 2 s.c om*/ * @throws EFapsException on error */ @SuppressWarnings("checkstyle:illegalcatch") public static DataList getDataList(final IPrintStmt _printStmt) throws EFapsException { final DataList ret = new DataList(); if (_printStmt instanceof PrintStmt) { try { final PrintStmt printStmt = (PrintStmt) _printStmt; final Map<String, AbstractSelect> mapping = printStmt.getAlias2Selects(); for (final Map<String, Object> map : printStmt.getData()) { final ObjectData data = new ObjectData(); for (final Entry<String, AbstractSelect> entry : mapping.entrySet()) { final Object obj = map.get(entry.getKey()); data.getValues().add(getValue(entry.getKey(), obj)); } ret.add(data); } final Map<String, Boolean> sortMap = printStmt.getSortKey2desc(); if (!sortMap.isEmpty()) { final ComparatorChain<ObjectData> comparator = new ComparatorChain<>(); for (final Entry<String, Boolean> entry : sortMap.entrySet()) { AbstractValue<?> sortVal = null; if (StringUtils.isNumeric(entry.getKey())) { final int idx = Integer.parseInt(entry.getKey()); sortVal = ret.get(0).getValues().get(idx - 1); } else { for (final AbstractValue<?> val : ret.get(0).getValues()) { if (val.getKey().equals(entry.getKey())) { sortVal = val; break; } } } comparator.addComparator(new ObjectDataComparator(sortVal, !entry.getValue())); } Collections.sort(ret, comparator); } LOG.debug("Generated DataList: {}", ret); } catch (final Exception e) { if (e instanceof EFapsException) { throw (EFapsException) e; } else { throw new EFapsException("Could not create JSONData", e); } } } return ret; }
From source file:org.efaps.esjp.accounting.export.sc.JournalSC1617_Base.java
@Override @SuppressWarnings("checkstyle:MethodLength") public void buildDataSource(final Parameter _parameter, final Exporter _exporter) throws EFapsException { final String key = PropertiesUtil.getProperty(_parameter, "Key", ""); final Properties props = PropertiesUtil.getProperties4Prefix(Accounting.EXPORT_SC1617.get(), key); final DateTime dateFrom = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617Form.dateFrom.name)); final DateTime dateTo = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617Form.dateTo.name)); final Instance purchaseRecordInst = Instance.get(_parameter .getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617RCForm.purchaseRecord.name)); final Instance subJournalInst = Instance.get( _parameter.getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617Form.subJournal.name)); final String marker = _parameter .getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617Form.marker.name); final String origin = _parameter .getParameterValue(CIFormAccounting.Accounting_ExportJournalSC1617Form.origin.name); final Properties oProps = PropertiesUtil.getProperties4Prefix(props, origin, true); //default as defined by an given orgin final boolean analyzeRemark = BooleanUtils.toBoolean(oProps.getProperty("AnalyzeRemark", "false")); final boolean useDate4Number = BooleanUtils.toBoolean(oProps.getProperty("UseDate4Number", "false")); final boolean useOrigDoc4Number = BooleanUtils.toBoolean(oProps.getProperty("UseOrigDoc4Number", "false")); final boolean concatenate = BooleanUtils.toBoolean(oProps.getProperty("Concatenate", "false")); final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); final QueryBuilder transAttrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract); // if a purchase record was selected use it as filter if (InstanceUtils.isValid(purchaseRecordInst)) { final QueryBuilder attrQueryBuilder = new QueryBuilder(CIAccounting.PurchaseRecord2Document); attrQueryBuilder.addWhereAttrEqValue(CIAccounting.PurchaseRecord2Document.FromLink, purchaseRecordInst); final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.Transaction2ERPDocument); attrQueryBldr.addWhereAttrInQuery(CIAccounting.Transaction2ERPDocument.ToLinkAbstract, attrQueryBuilder.getAttributeQuery(CIAccounting.PurchaseRecord2Document.ToLink)); transAttrQueryBldr.addWhereAttrInQuery(CIAccounting.TransactionAbstract.ID, attrQueryBldr.getAttributeQuery(CIAccounting.Transaction2ERPDocument.FromLink)); } else {/*w w w .ja v a 2 s .c o m*/ transAttrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.withTimeAtStartOfDay().plusDays(1)); transAttrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.withTimeAtStartOfDay().minusSeconds(1)); } if (InstanceUtils.isValid(subJournalInst)) { final QueryBuilder attrQueryBuilder = new QueryBuilder(CIAccounting.ReportSubJournal2Transaction); attrQueryBuilder.addWhereAttrEqValue(CIAccounting.ReportSubJournal2Transaction.FromLink, subJournalInst); transAttrQueryBldr.addWhereAttrInQuery(CIAccounting.TransactionAbstract.ID, attrQueryBuilder.getAttributeQuery(CIAccounting.ReportSubJournal2Transaction.ToLink)); } final AttributeQuery transAttrQuery = transAttrQueryBldr .getAttributeQuery(CIAccounting.TransactionAbstract.ID); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, transAttrQuery); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selAcc = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.AccountLink); final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name); final SelectBuilder selTrans = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink); final SelectBuilder selTransInst = new SelectBuilder(selTrans).instance(); final SelectBuilder selTransDescr = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Description); final SelectBuilder selTransIdentifier = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Identifier); final SelectBuilder selTransName = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Name); final SelectBuilder selTransDate = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Date); final SelectBuilder selDoc = SelectBuilder.get() .linkfrom(CIAccounting.TransactionPosition2ERPDocument.FromLinkAbstract) .linkto(CIAccounting.TransactionPosition2ERPDocument.ToLinkAbstract); final SelectBuilder selDocInst = new SelectBuilder(selDoc).instance(); final SelectBuilder selDocName = new SelectBuilder(selDoc).attribute(CISales.DocumentSumAbstract.Name); final SelectBuilder selDocRev = new SelectBuilder(selDoc).attribute(CISales.DocumentSumAbstract.Revision); final SelectBuilder selDocDate = new SelectBuilder(selDoc).attribute(CISales.DocumentSumAbstract.Date); final SelectBuilder selDocDueDate = new SelectBuilder(selDoc) .attribute(CISales.DocumentSumAbstract.DueDate); final SelectBuilder selNetTotal = new SelectBuilder(selDoc) .attribute(CISales.DocumentSumAbstract.RateNetTotal); final SelectBuilder selCrossTotal = new SelectBuilder(selDoc) .attribute(CISales.DocumentSumAbstract.RateCrossTotal); final SelectBuilder selContact = new SelectBuilder(selDoc).linkto(CISales.DocumentAbstract.Contact); final SelectBuilder selContactName = new SelectBuilder(selContact).attribute(CIContacts.Contact.Name); final SelectBuilder selTaxNumber = new SelectBuilder(selContact).clazz(CIContacts.ClassOrganisation) .attribute(CIContacts.ClassOrganisation.TaxNumber); multi.addSelect(selAccName, selTransIdentifier, selTransInst, selTransName, selTransDescr, selTransDate, selDocInst, selDocName, selDocDate, selDocDueDate, selContactName, selTaxNumber, selNetTotal, selCrossTotal, selDocRev); multi.addAttribute(CIAccounting.TransactionPositionAbstract.RateAmount, CIAccounting.TransactionPositionAbstract.Position, CIAccounting.TransactionPositionAbstract.PositionType, CIAccounting.TransactionPositionAbstract.RateCurrencyLink, CIAccounting.TransactionPositionAbstract.Rate, CIAccounting.TransactionPositionAbstract.Remark); multi.execute(); final List<DataBean> beans = new ArrayList<>(); while (multi.next()) { final Instance transInst = multi.getSelect(selTransInst); final Instance posInst = multi.getCurrentInstance(); final String remark = multi.getAttribute(CIAccounting.TransactionPositionAbstract.Remark); String descr = multi.<String>getSelect(selTransDescr); String contactName = multi.<String>getSelect(selContactName); String taxNumber = multi.<String>getSelect(selTaxNumber); Instance docInst = multi.<Instance>getSelect(selDocInst); String docName = multi.<String>getSelect(selDocName); String docRev = multi.<String>getSelect(selDocRev); if (StringUtils.isNotEmpty(remark)) { if (concatenate) { descr = descr + " " + remark; } else { descr = remark; } final boolean swap; final String debKey = InstanceUtils.isType(posInst, CIAccounting.TransactionPositionDebit) ? ".Debit" : ".Credit"; if (InstanceUtils.isValid(docInst) && oProps.containsKey(docInst.getType().getName() + debKey + ".AnalyzeRemark")) { swap = BooleanUtils .toBoolean(oProps.getProperty(docInst.getType().getName() + debKey + ".AnalyzeRemark")); } else if (InstanceUtils.isValid(docInst) && oProps.containsKey(docInst.getType().getName() + ".AnalyzeRemark")) { swap = BooleanUtils .toBoolean(oProps.getProperty(docInst.getType().getName() + ".AnalyzeRemark")); } else { swap = analyzeRemark; } if (swap) { final QueryBuilder tr2docQueryBldr = new QueryBuilder(CIAccounting.Transaction2ERPDocument); tr2docQueryBldr.addWhereAttrEqValue(CIAccounting.Transaction2ERPDocument.FromLink, transInst); final QueryBuilder docQueryBldr = new QueryBuilder(CIERP.DocumentAbstract); docQueryBldr.addWhereAttrInQuery(CIERP.DocumentAbstract.ID, tr2docQueryBldr.getAttributeQuery(CIAccounting.Transaction2ERPDocument.ToLinkAbstract)); docQueryBldr.addWhereAttrEqValue(CIERP.DocumentAbstract.Name, remark); final MultiPrintQuery docMulti = docQueryBldr.getCachedPrint4Request(); final SelectBuilder docSelContact = SelectBuilder.get() .linkto(CISales.DocumentAbstract.Contact); final SelectBuilder docSelContactName = new SelectBuilder(docSelContact) .attribute(CIContacts.Contact.Name); final SelectBuilder docSelTaxNumber = new SelectBuilder(docSelContact) .clazz(CIContacts.ClassOrganisation).attribute(CIContacts.ClassOrganisation.TaxNumber); docMulti.addSelect(docSelContactName, docSelTaxNumber); docMulti.addAttribute(CIERP.DocumentAbstract.Revision); docMulti.execute(); if (docMulti.getInstanceList().size() == 1) { docMulti.next(); docInst = docMulti.getCurrentInstance(); contactName = docMulti.getSelect(docSelContactName); taxNumber = docMulti.getSelect(docSelTaxNumber); docRev = docMulti.getAttribute(CIERP.DocumentAbstract.Revision); if (concatenate) { descr = multi.<String>getSelect(selTransDescr) + " " + docName; } else { descr = docName; } docName = remark; } } } final DataBean bean = new DataBean().setReportKey(key).setTransInstance(transInst) .setPosInstance(posInst).setOrigin(oProps.getProperty("Value", "--")).setOriginKey(origin) .setMarker(marker).setTransDate(multi.<DateTime>getSelect(selTransDate)) .setNumber(multi.getSelect(selTransIdentifier)) .setPosition(multi.<Integer>getAttribute(CIAccounting.TransactionPositionAbstract.Position)) .setAccName(multi.<String>getSelect(selAccName)) .setAmount(multi.<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount)) .setTransDescr(descr) .setCurrencyId( multi.<Long>getAttribute(CIAccounting.TransactionPositionAbstract.RateCurrencyLink)) .setOrigDocInst(multi.<Instance>getSelect(selDocInst)) .setOrigDocName(multi.<String>getSelect(selDocName)) .setOrigDocRevision(multi.<String>getSelect(selDocRev)).setDocInst(docInst).setDocName(docName) .setDocRevision(docRev).setContactName(contactName).setTaxNumber(taxNumber) .setDocDate(multi.<DateTime>getSelect(selDocDate)) .setDocDueDate(multi.<DateTime>getSelect(selDocDueDate)) .setRate(multi.<Object[]>getAttribute(CIAccounting.TransactionPositionAbstract.Rate)) .setNetTotal(multi.<BigDecimal>getSelect(selNetTotal)) .setCrossTotal(multi.<BigDecimal>getSelect(selCrossTotal)); beans.add(bean); } final ComparatorChain<DataBean> chain = new ComparatorChain<>(); chain.addComparator((_o1, _o2) -> _o1.getTransDate().compareTo(_o2.getTransDate())); chain.addComparator((_o1, _o2) -> _o1.getNumber().compareTo(_o2.getNumber())); chain.addComparator((_o1, _o2) -> _o1.getPosition().compareTo(_o2.getPosition())); Collections.sort(beans, chain); int i = 1; String currentID = ""; String currentVal = ""; // it must be ensured that one transaction has all the time the same number, therefore the first value wins for (final DataBean bean : beans) { if (!currentID.equals(bean.getNumber())) { currentID = bean.getNumber(); // first priority are the related documents if (useDate4Number) { currentVal = String.format("%05d", bean.getTransDate().getDayOfMonth()); } else if (useOrigDoc4Number) { currentVal = bean.getOrigDocName(); final String def; if (InstanceUtils.isValid(bean.getOrigDocInst())) { if (oProps.containsKey(bean.getOrigDocInst().getType().getName() + ".Number")) { def = oProps.getProperty(bean.getOrigDocInst().getType().getName() + ".Number"); } else if (props.containsKey(bean.getOrigDocInst().getType().getName() + ".Number")) { def = props.getProperty(bean.getOrigDocInst().getType().getName() + ".Number"); } else { def = ""; } } else { def = ""; } switch (def) { case "DocName": currentVal = bean.getOrigDocName(); break; case "DocRevision": currentVal = bean.getOrigDocRevision(); break; case "DocCode": currentVal = bean.getOrigDocCode(); break; default: currentVal = String.format("%05d", i); i++; break; } } else { final String def; if (InstanceUtils.isValid(bean.getDocInst())) { if (oProps.containsKey(bean.getDocInst().getType().getName() + ".Number")) { def = oProps.getProperty(bean.getDocInst().getType().getName() + ".Number"); } else if (props.containsKey(bean.getDocInst().getType().getName() + ".Number")) { def = props.getProperty(bean.getDocInst().getType().getName() + ".Number"); } else { def = ""; } } else { def = ""; } switch (def) { case "TransName": currentVal = bean.getNumber(); break; case "DocName": currentVal = bean.getDocName(); break; case "DocRevision": currentVal = bean.getDocRevision(); break; case "DocCode": currentVal = bean.getDocCode(); break; default: currentVal = String.format("%05d", i); i++; break; } } } bean.setNumber(currentVal); _exporter.addBeanRows(bean); } }
From source file:org.efaps.esjp.accounting.report.balance.BalanceReport303DS_Base.java
@Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final QueryBuilder queryBldr = new QueryBuilder(CISales.Invoice); queryBldr.addType(CISales.Receipt);// ww w . jav a 2s. c om queryBldr.addWhereAttrEqValue(CISales.DocumentSumAbstract.StatusAbstract, Status.find(CISales.InvoiceStatus.Open), Status.find(CISales.ReceiptStatus.Open)); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selContact = SelectBuilder.get().linkto(CISales.DocumentSumAbstract.Contact); final SelectBuilder selContactName = new SelectBuilder(selContact) .attribute(CIContacts.ContactAbstract.Name); final SelectBuilder selContactTaxNumber = new SelectBuilder(selContact).clazz(CIContacts.ClassOrganisation) .attribute(CIContacts.ClassOrganisation.TaxNumber); final SelectBuilder selContactPersDOI = new SelectBuilder(selContact).clazz(CIContacts.ClassPerson) .attribute(CIContacts.ClassPerson.IdentityCard); final SelectBuilder selContactPersDOIType = new SelectBuilder(selContact).clazz(CIContacts.ClassPerson) .linkto(CIContacts.ClassPerson.DOITypeLink).attribute(CIContacts.AttributeDefinitionDOIType.Value); multi.addSelect(selContactName, selContactTaxNumber, selContactPersDOI, selContactPersDOIType); multi.addAttribute(CISales.DocumentSumAbstract.NetTotal, CISales.DocumentSumAbstract.Date); multi.execute(); final List<Bean303> values = new ArrayList<>(); while (multi.next()) { final Bean303 bean; bean = getBean(_parameter); values.add(bean); bean.setContactName(multi.<String>getSelect(selContactName)); final String contactTaxNumber = multi.<String>getSelect(selContactTaxNumber); if (contactTaxNumber == null) { bean.setContactDOINumber(multi.<String>getSelect(selContactPersDOI)); bean.setContactDOIType(multi.<String>getSelect(selContactPersDOIType)); } else { bean.setContactDOINumber(contactTaxNumber); bean.setContactDOIType("7"); } bean.setDocDate(multi.<DateTime>getAttribute(CISales.DocumentSumAbstract.Date)); bean.setAmount(multi.<BigDecimal>getAttribute(CISales.DocumentSumAbstract.NetTotal)); } final ComparatorChain<Bean303> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<Bean303>() { @Override public int compare(final Bean303 _arg0, final Bean303 _arg1) { return _arg0.getContactDOIType().compareTo(_arg1.getContactDOIType()); } }); chain.addComparator(new Comparator<Bean303>() { @Override public int compare(final Bean303 _arg0, final Bean303 _arg1) { return _arg0.getContactDOINumber().compareTo(_arg1.getContactDOINumber()); } }); chain.addComparator(new Comparator<Bean303>() { @Override public int compare(final Bean303 _arg0, final Bean303 _arg1) { return _arg0.getDocDate().compareTo(_arg1.getDocDate()); } }); Collections.sort(values, chain); setData(values); }
From source file:org.efaps.esjp.accounting.report.balance.BalanceReport312DS_Base.java
@Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final QueryBuilder queryBldr = new QueryBuilder(CISales.IncomingInvoice); queryBldr.addType(CISales.IncomingReceipt); queryBldr.addType(CIAccounting.ExternalVoucher); queryBldr.addWhereAttrEqValue(CISales.DocumentSumAbstract.StatusAbstract, Status.find(CISales.IncomingInvoiceStatus.Open), Status.find(CISales.IncomingReceiptStatus.Open), Status.find(CIAccounting.ExternalVoucherStatus.Open)); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selContact = SelectBuilder.get().linkto(CISales.DocumentSumAbstract.Contact); final SelectBuilder selContactName = new SelectBuilder(selContact) .attribute(CIContacts.ContactAbstract.Name); final SelectBuilder selContactTaxNumber = new SelectBuilder(selContact).clazz(CIContacts.ClassOrganisation) .attribute(CIContacts.ClassOrganisation.TaxNumber); final SelectBuilder selContactPersDOI = new SelectBuilder(selContact).clazz(CIContacts.ClassPerson) .attribute(CIContacts.ClassPerson.IdentityCard); final SelectBuilder selContactPersDOIType = new SelectBuilder(selContact).clazz(CIContacts.ClassPerson) .linkto(CIContacts.ClassPerson.DOITypeLink).attribute(CIContacts.AttributeDefinitionDOIType.Value); multi.addSelect(selContactName, selContactTaxNumber, selContactPersDOI, selContactPersDOIType); multi.addAttribute(CISales.DocumentSumAbstract.NetTotal, CISales.DocumentSumAbstract.Date); multi.execute();/*from w w w . j ava2 s . c o m*/ final List<Bean312> values = new ArrayList<>(); while (multi.next()) { final Bean312 bean; bean = getBean(_parameter); values.add(bean); bean.setContactName(multi.<String>getSelect(selContactName)); final String contactTaxNumber = multi.<String>getSelect(selContactTaxNumber); if (contactTaxNumber == null) { bean.setContactDOINumber(multi.<String>getSelect(selContactPersDOI)); bean.setContactDOIType(multi.<String>getSelect(selContactPersDOIType)); } else { bean.setContactDOINumber(contactTaxNumber); bean.setContactDOIType("7"); } bean.setDocDate(multi.<DateTime>getAttribute(CISales.DocumentSumAbstract.Date)); bean.setAmount(multi.<BigDecimal>getAttribute(CISales.DocumentSumAbstract.NetTotal)); } final ComparatorChain<Bean312> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<Bean312>() { @Override public int compare(final Bean312 _arg0, final Bean312 _arg1) { return _arg0.getContactDOIType().compareTo(_arg1.getContactDOIType()); } }); chain.addComparator(new Comparator<Bean312>() { @Override public int compare(final Bean312 _arg0, final Bean312 _arg1) { return _arg0.getContactDOINumber().compareTo(_arg1.getContactDOINumber()); } }); chain.addComparator(new Comparator<Bean312>() { @Override public int compare(final Bean312 _arg0, final Bean312 _arg1) { return _arg0.getDocDate().compareTo(_arg1.getDocDate()); } }); Collections.sort(values, chain); setData(values); }
From source file:org.efaps.esjp.accounting.report.CashReport11DS_Base.java
/** * {@inheritDoc}//w w w. ja va 2 s .co m */ @Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final DateTime dateFrom = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportCash11ReportForm.dateFrom.name)); final DateTime dateTo = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportCash11ReportForm.dateTo.name)); final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); final QueryBuilder transAttrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract); transAttrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.withTimeAtStartOfDay().plusDays(1)); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, transAttrQueryBldr.getAttributeQuery(CIAccounting.TransactionAbstract.ID)); final List<Instance> accInsts = getAccountInst(_parameter, AccountingSettings.PERIOD_REPORT11ACCOUNT); if (accInsts.isEmpty()) { LOG.error("Missing configuration '{}' for this report.", AccountingSettings.PERIOD_REPORT11ACCOUNT); } else { final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); attrQueryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, accInsts.toArray()); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQueryBldr.getAttributeQuery(CIAccounting.TransactionPositionAbstract.TransactionLink)); queryBldr.addWhereAttrNotEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, accInsts.toArray()); } final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selAcc = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.AccountLink); final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name); final SelectBuilder selAccDescr = new SelectBuilder(selAcc) .attribute(CIAccounting.AccountAbstract.Description); final SelectBuilder selTrans = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink); final SelectBuilder selTransDescr = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Description); final SelectBuilder selTransDate = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Date); multi.addSelect(selAccName, selAccDescr, selTransDescr, selTransDate); multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount); multi.execute(); final List<DataBean> values = new ArrayList<>(); final DataBean411 carryOver = new DataBean411(); carryOver.setAmount(BigDecimal.ZERO); carryOver.setTransDescr(DBProperties.getProperty(CashReport11DS.class.getName() + ".CarryOver")); while (multi.next()) { final DateTime date = multi.<DateTime>getSelect(selTransDate); final BigDecimal amount = multi .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount); if (date.isBefore(dateFrom)) { carryOver.setAmount(carryOver.getAmount().add(amount)); } else { final DataBean411 bean = new DataBean411(); bean.setTransDate(date); bean.setTransDescr(multi.<String>getSelect(selTransDescr)); bean.setAccName(multi.<String>getSelect(selAccName)); bean.setAccDescr(multi.<String>getSelect(selAccDescr)); bean.setAmount(amount); values.add(bean); } } final ComparatorChain<DataBean> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _arg0, final DataBean _arg1) { return _arg0.getTransDate().compareTo(_arg1.getTransDate()); } }); Collections.sort(values, chain); if (carryOver.getAmount().compareTo(BigDecimal.ZERO) != 0) { values.add(0, carryOver); } setData(values); }
From source file:org.efaps.esjp.accounting.report.CashReport12DS_Base.java
/** * {@inheritDoc}//from w w w . j a v a2 s . co m */ @Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final DateTime dateFrom = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportCash12ReportForm.dateFrom.name)); final DateTime dateTo = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportCash12ReportForm.dateTo.name)); final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); final QueryBuilder transAttrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract); transAttrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.withTimeAtStartOfDay().plusDays(1)); final AttributeQuery transAttrQuery = transAttrQueryBldr .getAttributeQuery(CIAccounting.TransactionAbstract.ID); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, transAttrQuery); final Instance relinst = Instance.get( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportCash12ReportForm.account.name)); final PrintQuery print = new PrintQuery(relinst); final SelectBuilder selAccInst = SelectBuilder.get() .linkto(CIAccounting.Period2Account.FromAccountAbstractLink).instance(); final SelectBuilder selSalesAccInst = SelectBuilder.get() .linkto(CIAccounting.Period2Account.SalesAccountLink).instance(); final SelectBuilder selSalesAccName = SelectBuilder.get() .linkto(CIAccounting.Period2Account.SalesAccountLink).attribute(CISales.AccountAbstract.Name); print.addSelect(selAccInst, selSalesAccInst, selSalesAccName); print.execute(); final Instance accInst = print.<Instance>getSelect(selAccInst); final Instance salesAccInst = print.<Instance>getSelect(selSalesAccInst); _jrParameters.put("AccountName", print.getSelect(selSalesAccName)); if (salesAccInst.getType().isKindOf(CISales.AccountCashDesk.getType())) { final SelectBuilder selSalesAccFIValue = SelectBuilder.get() .linkto(CISales.AccountCashDesk.FinancialInstitute) .attribute(CISales.AttributeDefinitionFinancialInstitute.Value); final SelectBuilder selSalesAccFImapKey = SelectBuilder.get() .linkto(CISales.AccountCashDesk.FinancialInstitute) .attribute(CISales.AttributeDefinitionFinancialInstitute.MappingKey); final PrintQuery salesAccPrint = new PrintQuery(salesAccInst); salesAccPrint.addSelect(selSalesAccFIValue, selSalesAccFImapKey); salesAccPrint.execute(); final String fiMapKey = salesAccPrint.getSelect(selSalesAccFImapKey); final String fiValue = salesAccPrint.getSelect(selSalesAccFIValue); _jrParameters.put("Banc", fiMapKey + " - " + fiValue); } final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); attrQueryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, accInst); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQueryBldr.getAttributeQuery(CIAccounting.TransactionPositionAbstract.TransactionLink)); queryBldr.addWhereAttrNotEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, accInst); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selAcc = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.AccountLink); final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name); final SelectBuilder selAccDescr = new SelectBuilder(selAcc) .attribute(CIAccounting.AccountAbstract.Description); final SelectBuilder selTrans = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink); final SelectBuilder selTransInst = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink).instance(); final SelectBuilder selTransDescr = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Description); final SelectBuilder selTransDate = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Date); multi.addSelect(selAccName, selAccDescr, selTransInst, selTransDescr, selTransDate); multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount); multi.execute(); final List<DataBean> values = new ArrayList<>(); final Map<Instance, Set<DataBean412>> map = new HashMap<>(); final DataBean412 carryOver = new DataBean412(); carryOver.setAmount(BigDecimal.ZERO); carryOver.setTransDescr(DBProperties.getProperty(CashReport12DS.class.getName() + ".CarryOver")); while (multi.next()) { final DateTime date = multi.<DateTime>getSelect(selTransDate); final BigDecimal amount = multi .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount); if (date.isBefore(dateFrom)) { carryOver.setAmount(carryOver.getAmount().add(amount)); } else { final Instance transInst = multi.getSelect(selTransInst); final DataBean412 bean = new DataBean412(); bean.setTransDate(date); bean.setTransDescr(multi.<String>getSelect(selTransDescr)); bean.setAccName(multi.<String>getSelect(selAccName)); bean.setAccDescr(multi.<String>getSelect(selAccDescr)); bean.setAmount(amount); values.add(bean); Set<DataBean412> beans; if (!map.containsKey(transInst)) { map.put(transInst, new HashSet<DataBean412>()); } beans = map.get(transInst); beans.add(bean); } } final QueryBuilder relQueryBldr = new QueryBuilder(CIAccounting.Transaction2ERPDocument); relQueryBldr.addWhereAttrInQuery(CIAccounting.Transaction2ERPDocument.FromLink, transAttrQuery); final MultiPrintQuery relMulti = relQueryBldr.getPrint(); final SelectBuilder transSel = SelectBuilder.get().linkto(CIAccounting.Transaction2ERPDocument.FromLink) .instance(); final SelectBuilder docContactNameSel = SelectBuilder.get() .linkto(CIAccounting.Transaction2ERPDocument.ToLinkAbstract).linkto(CIERP.DocumentAbstract.Contact) .attribute(CIContacts.ContactAbstract.Name); final SelectBuilder docNameSel = SelectBuilder.get() .linkto(CIAccounting.Transaction2ERPDocument.ToLinkAbstract).attribute(CIERP.DocumentAbstract.Name); relMulti.addSelect(transSel, docNameSel, docContactNameSel); relMulti.execute(); while (relMulti.next()) { final Instance transInst = relMulti.getSelect(transSel); if (map.containsKey(transInst)) { final String docContactName = relMulti.getSelect(docContactNameSel); final String docName = relMulti.getSelect(docNameSel); final Set<DataBean412> beans = map.get(transInst); for (final DataBean412 bean : beans) { bean.addDocContactName(docContactName); bean.addCode(docName); } } } final ComparatorChain<DataBean> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _arg0, final DataBean _arg1) { return _arg0.getTransDate().compareTo(_arg1.getTransDate()); } }); Collections.sort(values, chain); if (carryOver.getAmount().compareTo(BigDecimal.ZERO) != 0) { values.add(0, carryOver); } setData(values); }
From source file:org.efaps.esjp.accounting.report.JournalReport51DS_Base.java
@Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final DateTime dateFrom = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportJournal51Form.dateFrom.name)); final DateTime dateTo = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportJournal51Form.dateTo.name)); final Instance periodInstance = Period.evalCurrent(_parameter); final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); final QueryBuilder transAttrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract); transAttrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.withTimeAtStartOfDay().plusDays(1)); transAttrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.withTimeAtStartOfDay().minusSeconds(1)); transAttrQueryBldr.addWhereAttrEqValue(CIAccounting.TransactionAbstract.PeriodLink, periodInstance); final AttributeQuery transAttrQuery = transAttrQueryBldr .getAttributeQuery(CIAccounting.TransactionAbstract.ID); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, transAttrQuery); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selAcc = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.AccountLink); final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name); final SelectBuilder selAccDescr = new SelectBuilder(selAcc) .attribute(CIAccounting.AccountAbstract.Description); final SelectBuilder selTrans = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink); final SelectBuilder selTransOID = new SelectBuilder(selTrans).oid(); final SelectBuilder selTransDescr = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Description); final SelectBuilder selTransIdentifier = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Identifier); final SelectBuilder selTransName = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Name); final SelectBuilder selTransDate = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Date); final SelectBuilder selCurInst = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.CurrencyLink).instance(); final SelectBuilder selRateCurInst = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.RateCurrencyLink).instance(); multi.addSelect(selAccName, selAccDescr, selTransIdentifier, selTransOID, selTransName, selTransDescr, selTransDate, selCurInst, selRateCurInst); multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount, CIAccounting.TransactionPositionAbstract.Position, CIAccounting.TransactionPositionAbstract.RateAmount); multi.execute();/* ww w .ja v a2 s .c o m*/ final List<DataBean> values = new ArrayList<>(); final Map<String, DataBean> map = new HashMap<>(); while (multi.next()) { final String transOID = multi.getSelect(selTransOID); final DataBean bean; if (map.containsKey(transOID)) { bean = map.get(transOID); } else { bean = new DataBean().setParameter(_parameter).setTransOID(transOID) .setTransName(multi.getSelect(selTransName)).setTransDate(multi.getSelect(selTransDate)) .setTransDescr(multi.getSelect(selTransDescr)) .setTransIdentifier(multi.getSelect(selTransIdentifier)); values.add(bean); map.put(transOID, bean); } final DetailBean detailBean = new DetailBean().setAccName(multi.getSelect(selAccName)) .setAccDescr(multi.getSelect(selAccDescr)) .setAmount(multi.getAttribute(CIAccounting.TransactionPositionAbstract.Amount)) .setCurrencyInstance(multi.getSelect(selCurInst)) .setRateAmount(multi.getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount)) .setCurrencyInstance(multi.getSelect(selCurInst)) .setPosition(multi.getAttribute(CIAccounting.TransactionPositionAbstract.Position)) .setRateCurrencyInstance(multi.getSelect(selRateCurInst)); bean.addDetail(detailBean); } final QueryBuilder relQueryBldr = new QueryBuilder(CIAccounting.Transaction2ERPDocument); relQueryBldr.addWhereAttrInQuery(CIAccounting.Transaction2ERPDocument.FromLink, transAttrQuery); final MultiPrintQuery relMulti = relQueryBldr.getPrint(); final SelectBuilder transSel = SelectBuilder.get().linkto(CIAccounting.Transaction2ERPDocument.FromLink) .instance(); final SelectBuilder docNameSel = SelectBuilder.get() .linkto(CIAccounting.Transaction2ERPDocument.ToLinkAbstract).attribute(CIERP.DocumentAbstract.Name); relMulti.addSelect(transSel, docNameSel); relMulti.execute(); while (relMulti.next()) { final Instance transInst = relMulti.getSelect(transSel); final DataBean bean = map.get(transInst.getOid()); bean.addDoc(relMulti.<String>getSelect(docNameSel)); } final QueryBuilder subJAttrQueryBldr = new QueryBuilder(CIAccounting.ReportSubJournal); subJAttrQueryBldr.addWhereAttrEqValue(CIAccounting.ReportSubJournal.Config, Accounting.SubJournalConfig.OFFICIAL); final QueryBuilder subJQueryBldr = new QueryBuilder(CIAccounting.ReportSubJournal2Transaction); subJQueryBldr.addWhereAttrInQuery(CIAccounting.ReportSubJournal2Transaction.FromLink, subJAttrQueryBldr.getAttributeQuery(CIAccounting.ReportSubJournal.ID)); subJQueryBldr.addWhereAttrInQuery(CIAccounting.ReportSubJournal2Transaction.ToLink, transAttrQuery); final MultiPrintQuery subJMulti = subJQueryBldr.getPrint(); final SelectBuilder transSel2 = SelectBuilder.get().linkto(CIAccounting.ReportSubJournal2Transaction.ToLink) .instance(); final SelectBuilder subJNameSel = SelectBuilder.get() .linkto(CIAccounting.ReportSubJournal2Transaction.FromLink) .attribute(CIAccounting.ReportSubJournal.Name); subJMulti.addSelect(transSel2, subJNameSel); subJMulti.addAttribute(CIAccounting.ReportSubJournal2Transaction.Number); subJMulti.execute(); while (subJMulti.next()) { final Instance transInst = subJMulti.getSelect(transSel2); map.get(transInst.getOid()).addDocReg(subJMulti.<String>getSelect(subJNameSel)) .addDocNum(subJMulti.<String>getAttribute(CIAccounting.ReportSubJournal2Transaction.Number)); } final ComparatorChain<DataBean> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _arg0, final DataBean _arg1) { final String arg0 = _arg0.getTransName().isEmpty() ? "XXXXXXXX" : _arg0.getTransName(); final String arg1 = _arg1.getTransName().isEmpty() ? "XXXXXXXX" : _arg1.getTransName(); return arg0.compareTo(arg1); } }); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _arg0, final DataBean _arg1) { return _arg0.getTransDate().compareTo(_arg1.getTransDate()); } }); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _o1, final DataBean _o2) { return _o1.getTransIdentifier().compareTo(_o2.getTransIdentifier()); } }); Collections.sort(values, chain); setData(values); }
From source file:org.efaps.esjp.accounting.report.TrialBalanceDS_Base.java
@Override public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource, final Map<String, Object> _jrParameters) throws EFapsException { super.init(_jasperReport, _parameter, _parentSource, _jrParameters); final Map<Instance, DataBean> mapping = new HashMap<>(); final List<Instance> instances = new ArrayList<>(); final DateTime dateFrom = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.dateFrom.name)); final DateTime dateTo = new DateTime( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.dateTo.name)); final boolean includeInit = Boolean.parseBoolean( _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.includeInit.name)); int level = 2; final String levelStr = _parameter .getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.level.name); if (levelStr != null && !levelStr.isEmpty()) { level = Integer.parseInt(levelStr); }//from ww w.j a va 2s . co m _jrParameters.put("IncludeInit", includeInit); _jrParameters.put("DateFrom", dateFrom); _jrParameters.put("DateTo", dateTo); final String[] oids = (String[]) Context.getThreadContext().getSessionAttribute("selectedOIDs"); for (final String oid : oids) { final Instance instancetmp = Instance.get(oid); if (instancetmp.isValid()) { instances.addAll(getAccountInst(_parameter, instancetmp, false)); } } final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract); attrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.plusDays(1)); if (!includeInit) { attrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.minusSeconds(1)); } final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract); queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQueryBldr.getAttributeQuery(CIAccounting.TransactionAbstract.ID)); queryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, instances.toArray()); final MultiPrintQuery multi = queryBldr.getPrint(); final SelectBuilder selTrans = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink); final SelectBuilder selTransDate = new SelectBuilder(selTrans) .attribute(CIAccounting.TransactionAbstract.Date); final SelectBuilder selAcc = SelectBuilder.get() .linkto(CIAccounting.TransactionPositionAbstract.AccountLink); final SelectBuilder selAccInst = new SelectBuilder(selAcc).instance(); final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name); final SelectBuilder selAccDescr = new SelectBuilder(selAcc) .attribute(CIAccounting.AccountAbstract.Description); multi.addSelect(selTransDate, selAccInst, selAccName, selAccDescr); multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount); multi.execute(); while (multi.next()) { final DateTime date = multi.<DateTime>getSelect(selTransDate); final BigDecimal amount = multi .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount); final Instance accInst = multi.getSelect(selAccInst); DataBean bean; if (mapping.containsKey(accInst)) { bean = mapping.get(accInst); } else { bean = new DataBean(); mapping.put(accInst, bean); bean.setAccName(multi.<String>getSelect(selAccName)); bean.setAccDescr(multi.<String>getSelect(selAccDescr)); } if (multi.getCurrentInstance().getType().isKindOf(CIAccounting.TransactionPositionDebit.getType())) { if (includeInit && date.isBefore(dateFrom.plusSeconds(1))) { bean.addInitDebit(amount); } else { bean.addDebit(amount); } } else { if (includeInit && date.isBefore(dateFrom.plusSeconds(1))) { bean.addInitCredit(amount); } else { bean.addCredit(amount); } } } final List<DataBean> values; if (level > 0) { values = new ArrayList<>(); final Map<Instance, Leveler> accMap = new HashMap<>(); for (final Entry<Instance, DataBean> entry : mapping.entrySet()) { final Leveler accInfo = getLeveler(_parameter).setInstance(entry.getKey()).setLevel(level); if (accMap.containsKey(accInfo.getInstance())) { accMap.get(accInfo.getInstance()).addBean(entry.getValue()); } else { accInfo.addBean(entry.getValue()); accMap.put(accInfo.getInstance(), accInfo); } } for (final Leveler leveler : accMap.values()) { values.add(leveler.getDataBean()); } } else { values = new ArrayList<>(mapping.values()); } final ComparatorChain<DataBean> chain = new ComparatorChain<>(); chain.addComparator(new Comparator<DataBean>() { @Override public int compare(final DataBean _arg0, final DataBean _arg1) { return _arg0.getAccName().compareTo(_arg1.getAccName()); } }); Collections.sort(values, chain); setData(values); }
From source file:org.efaps.esjp.accounting.transaction.TransInfo_Base.java
/** * Sort./*from w w w .j a va 2s .c om*/ * * @param _parameter Parameter as passed by the eFaps API * @throws EFapsException on error */ protected void sort(final Parameter _parameter) throws EFapsException { final Properties props = Accounting.getSysConfig() .getObjectAttributeValueAsProperties(new Period().evaluateCurrentPeriod(_parameter)); final TransPosOrder posOrder = TransPosOrder.valueOf( props.getProperty(AccountingSettings.PERIOD_TRANSPOSORDER, TransPosOrder.DEBITCREDITGROUP.name())); final ComparatorChain<PositionInfo> chain = new ComparatorChain<>(); // if grouping is wanted if (posOrder.equals(TransPosOrder.DEBITCREDITGROUP) || posOrder.equals(TransPosOrder.CREDITDEBITGROUP) || posOrder.equals(TransPosOrder.NAMEGROUP)) { chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { return _o1.getGroupId().compareTo(_o2.getGroupId()); } }); } if (posOrder.equals(TransPosOrder.DEBITCREDITGROUP) || posOrder.equals(TransPosOrder.DEBITCREDIT)) { chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { final int ret; if (_o1.getType().equals(_o2.getType())) { ret = 0; } else if (_o1.getType().equals(CIAccounting.TransactionPositionDebit.getType())) { ret = -1; } else { ret = 1; } return ret; } }); } else if (posOrder.equals(TransPosOrder.CREDITDEBIT) || posOrder.equals(TransPosOrder.CREDITDEBITGROUP)) { chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { final int ret; if (_o1.getType().equals(_o2.getType())) { ret = 0; } else if (_o1.getType().equals(CIAccounting.TransactionPositionDebit.getType())) { ret = 1; } else { ret = -1; } return ret; } }); } if (posOrder.equals(TransPosOrder.NAME) || posOrder.equals(TransPosOrder.NAMEGROUP)) { chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { int ret = 0; try { ret = _o1.getAccName().compareTo(_o2.getAccName()); } catch (final EFapsException e) { LOG.warn("Catched error during sorting", e); } return ret; } }); } else { chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { return _o1.getOrder().compareTo(_o2.getOrder()); } }); chain.addComparator(new Comparator<PositionInfo>() { @Override public int compare(final PositionInfo _o1, final PositionInfo _o2) { return _o1.getConnOrder().compareTo(_o2.getConnOrder()); } }); } Collections.sort(this.positions, chain); }
From source file:org.efaps.esjp.common.util.InterfaceUtils_Base.java
/** * @param _parameter Parameter as passed by the eFaps API * @param _script script to be wrapped * @param _libraries libraries to be added * @return wrapped script//from w w w . j ava 2 s . c om */ protected static StringBuilder wrapInDojoRequire(final Parameter _parameter, final CharSequence _script, final DojoLibs... _libraries) { final StringBuilder ret = new StringBuilder().append("require(["); final StringBuilder paras = new StringBuilder(); boolean first = true; final List<DojoLibs> libs = Arrays.asList(_libraries); final ComparatorChain<DojoLibs> comparator = new ComparatorChain<>(); comparator.addComparator(new Comparator<DojoLibs>() { @Override public int compare(final DojoLibs _arg0, final DojoLibs _arg1) { return _arg0.paraName == null && _arg1.paraName == null || _arg0.paraName != null && _arg1.paraName != null ? 0 : (_arg0.paraName == null ? 1 : -1); } }); comparator.addComparator(new Comparator<DojoLibs>() { @Override public int compare(final DojoLibs _arg0, final DojoLibs _arg1) { return _arg0.libName.compareTo(_arg1.libName); } }); Collections.sort(libs, comparator); for (final DojoLibs dojoLibs : libs) { if (first) { first = false; } else { ret.append(","); if (dojoLibs.paraName != null) { paras.append(","); } } ret.append("\"").append(dojoLibs.libName).append("\""); if (dojoLibs.paraName != null) { paras.append(dojoLibs.paraName); } } ret.append("],").append(" function(").append(paras).append(") {\n").append(_script).append("});"); return ret; }