From d19ba944b66595f2e0eb5e51a66b6232d0c15d61 Mon Sep 17 00:00:00 2001 From: austinmcnicholas <37055196+austinmcnicholas@users.noreply.github.com> Date: Wed, 20 Nov 2019 11:25:27 -0800 Subject: [PATCH] added parse wtih microflow feature When creating a column in excel or csv, you can choose a microflow to parse the oql value. This is useful when wanting to have an enumeration value caption on a report insted of the ID. --- .gitignore | 4 +- XLSReport.mpr | Bin 11375616 -> 11375616 bytes javasource/odm/proxies/OrderStatus.java | 2 +- .../odm/proxies/microflows/Microflows.java | 13 +++ .../xlsreport/actions/GenerateExcelDoc.java | 16 +++- .../xlsreport/proxies/AggregateFunction.java | 10 +-- javasource/xlsreport/proxies/AndOr.java | 4 +- .../xlsreport/proxies/AttributeType.java | 10 +-- .../xlsreport/proxies/CSVSeparator.java | 6 +- .../xlsreport/proxies/ConstraintType.java | 20 ++--- .../xlsreport/proxies/DataItemType.java | 4 +- .../xlsreport/proxies/DateTimeConstraint.java | 4 +- .../xlsreport/proxies/DocumentType.java | 6 +- javasource/xlsreport/proxies/JOINType.java | 8 +- .../xlsreport/proxies/MicroInputType.java | 4 +- javasource/xlsreport/proxies/MxColor.java | 30 +++---- javasource/xlsreport/proxies/MxColumn.java | 81 ++++++++++++++++++ .../xlsreport/proxies/RetrieveAction.java | 4 +- .../xlsreport/proxies/SortingDirection.java | 4 +- javasource/xlsreport/proxies/StaticType.java | 6 +- .../xlsreport/proxies/TextAlignment.java | 6 +- .../proxies/TextVerticalAlignment.java | 6 +- javasource/xlsreport/proxies/Yes_no.java | 4 +- .../xlsreport/report/data/ColumnPreset.java | 11 ++- .../xlsreport/report/export/ExportCSV.java | 7 ++ .../xlsreport/report/export/ExportExcel.java | 7 ++ .../report/export/microflowParser.java | 28 ++++++ 27 files changed, 230 insertions(+), 75 deletions(-) create mode 100644 javasource/xlsreport/report/export/microflowParser.java diff --git a/.gitignore b/.gitignore index cac1b07..cfaaf54 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ *.bak *.iml .idea -*.lock +*.lock +/.svn + diff --git a/XLSReport.mpr b/XLSReport.mpr index 5b7c7a139a1293628984111ba72104a2924319ed..92aa9adf40567231ecc548176dc74c1ca871fcee 100644 GIT binary patch delta 24737 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 captions; diff --git a/javasource/odm/proxies/microflows/Microflows.java b/javasource/odm/proxies/microflows/Microflows.java index 58f83d8..fc77771 100644 --- a/javasource/odm/proxies/microflows/Microflows.java +++ b/javasource/odm/proxies/microflows/Microflows.java @@ -91,6 +91,19 @@ public static void oCh_OrderLine(IContext context, odm.proxies.OrderLine _orderL throw new MendixRuntimeException(e); } } + public static java.lang.String parseMicroflow(IContext context, java.lang.String _value) + { + try + { + Map params = new HashMap(); + params.put("Value", _value); + return (java.lang.String)Core.execute(context, "ODM.ParseMicroflow", params); + } + catch (CoreException e) + { + throw new MendixRuntimeException(e); + } + } public static java.lang.String vA_ProductName(IContext context, odm.proxies.Product _product) { try diff --git a/javasource/xlsreport/actions/GenerateExcelDoc.java b/javasource/xlsreport/actions/GenerateExcelDoc.java index 71bc1e3..d8cc818 100644 --- a/javasource/xlsreport/actions/GenerateExcelDoc.java +++ b/javasource/xlsreport/actions/GenerateExcelDoc.java @@ -90,8 +90,14 @@ public IMendixObject executeAction() throws Exception case CSV: for (IMendixObject obj : columns) { MxColumn mxColumn = MxColumn.initialize(this.getContext(), obj); + String mfName; + if (mxColumn.getMxColumn_Microflows() != null){ + mfName = mxColumn.getMxColumn_Microflows().getCompleteName(); + } else { + mfName = null; + } if (checkValidColumn(mxColumn)) { - ColumnPreset preset = new ColumnPreset(mxColumn.getName(), mxColumn.getColumnNumber(), mxColumn.getMxXPath_MxData()); + ColumnPreset preset = new ColumnPreset(mxColumn.getName(), mxColumn.getColumnNumber(), mxColumn.getMxXPath_MxData(), mfName); if (mxColumn.getDataAggregate()) { preset.addDataAggregation(mxColumn.getDataAggregateFunction()); } @@ -112,7 +118,13 @@ public IMendixObject executeAction() throws Exception } else { styleGuid = defaultStyle; } - ColumnPreset preset = new ColumnPreset(mxColumn.getName(), mxColumn.getNameAsHeader(), mxColumn.getColumnNumber(), mxColumn.getMxXPath_MxData(), styleGuid); + String mfName; + if (mxColumn.getMxColumn_Microflows() != null){ + mfName = mxColumn.getMxColumn_Microflows().getCompleteName(); + } else { + mfName = null; + } + ColumnPreset preset = new ColumnPreset(mxColumn.getName(), mxColumn.getNameAsHeader(), mxColumn.getColumnNumber(), mxColumn.getMxXPath_MxData(), styleGuid, mfName); if (mxColumn.getResultAggregate()) { preset.addResultAggregation(mxColumn.getResultAggregateFunction()); } diff --git a/javasource/xlsreport/proxies/AggregateFunction.java b/javasource/xlsreport/proxies/AggregateFunction.java index 52b05f7..9e2b7c0 100644 --- a/javasource/xlsreport/proxies/AggregateFunction.java +++ b/javasource/xlsreport/proxies/AggregateFunction.java @@ -6,11 +6,11 @@ public enum AggregateFunction { - Sum(new java.lang.String[][] { new java.lang.String[] { "en_US", "Sum" }, new java.lang.String[] { "nl_NL", "Optellen" } }), - Max(new java.lang.String[][] { new java.lang.String[] { "en_US", "Max" }, new java.lang.String[] { "nl_NL", "Max" } }), - Min(new java.lang.String[][] { new java.lang.String[] { "en_US", "Min" }, new java.lang.String[] { "nl_NL", "Min" } }), - Count(new java.lang.String[][] { new java.lang.String[] { "en_US", "Count" }, new java.lang.String[] { "nl_NL", "Aantal" } }), - Average(new java.lang.String[][] { new java.lang.String[] { "en_US", "Average" }, new java.lang.String[] { "nl_NL", "Gemiddelde" } }); + Sum(new java.lang.String[][] { new java.lang.String[] { "en_US", "Sum" } }), + Max(new java.lang.String[][] { new java.lang.String[] { "en_US", "Max" } }), + Min(new java.lang.String[][] { new java.lang.String[] { "en_US", "Min" } }), + Count(new java.lang.String[][] { new java.lang.String[] { "en_US", "Count" } }), + Average(new java.lang.String[][] { new java.lang.String[] { "en_US", "Average" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/AndOr.java b/javasource/xlsreport/proxies/AndOr.java index 337d486..2bd40c9 100644 --- a/javasource/xlsreport/proxies/AndOr.java +++ b/javasource/xlsreport/proxies/AndOr.java @@ -6,8 +6,8 @@ public enum AndOr { - AND(new java.lang.String[][] { new java.lang.String[] { "en_US", "And" }, new java.lang.String[] { "nl_NL", "En" } }), - OR(new java.lang.String[][] { new java.lang.String[] { "en_US", "Or" }, new java.lang.String[] { "nl_NL", "Of" } }); + AND(new java.lang.String[][] { new java.lang.String[] { "en_US", "And" } }), + OR(new java.lang.String[][] { new java.lang.String[] { "en_US", "Or" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/AttributeType.java b/javasource/xlsreport/proxies/AttributeType.java index e6438c2..d53e579 100644 --- a/javasource/xlsreport/proxies/AttributeType.java +++ b/javasource/xlsreport/proxies/AttributeType.java @@ -6,11 +6,11 @@ public enum AttributeType { - Text(new java.lang.String[][] { new java.lang.String[] { "en_US", "String" }, new java.lang.String[] { "nl_NL", "String" } }), - Number(new java.lang.String[][] { new java.lang.String[] { "en_US", "Integer" }, new java.lang.String[] { "nl_NL", "Integer" } }), - Decimal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Float" }, new java.lang.String[] { "nl_NL", "Float" } }), - Date(new java.lang.String[][] { new java.lang.String[] { "en_US", "Date" }, new java.lang.String[] { "nl_NL", "Datum" } }), - YesNo(new java.lang.String[][] { new java.lang.String[] { "en_US", "Boolean" }, new java.lang.String[] { "nl_NL", "Boolean" } }); + Text(new java.lang.String[][] { new java.lang.String[] { "en_US", "String" } }), + Number(new java.lang.String[][] { new java.lang.String[] { "en_US", "Integer" } }), + Decimal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Float" } }), + Date(new java.lang.String[][] { new java.lang.String[] { "en_US", "Date" } }), + YesNo(new java.lang.String[][] { new java.lang.String[] { "en_US", "Boolean" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/CSVSeparator.java b/javasource/xlsreport/proxies/CSVSeparator.java index 74c2fe5..c94aae2 100644 --- a/javasource/xlsreport/proxies/CSVSeparator.java +++ b/javasource/xlsreport/proxies/CSVSeparator.java @@ -6,9 +6,9 @@ public enum CSVSeparator { - Comma(new java.lang.String[][] { new java.lang.String[] { "en_US", "Comma" }, new java.lang.String[] { "nl_NL", "Komma" } }), - Semicolon(new java.lang.String[][] { new java.lang.String[] { "en_US", "Semicolon" }, new java.lang.String[] { "nl_NL", "Puntkomma" } }), - Tab(new java.lang.String[][] { new java.lang.String[] { "en_US", "Tab" }, new java.lang.String[] { "nl_NL", "Tab" } }); + Comma(new java.lang.String[][] { new java.lang.String[] { "en_US", "Comma" } }), + Semicolon(new java.lang.String[][] { new java.lang.String[] { "en_US", "Semicolon" } }), + Tab(new java.lang.String[][] { new java.lang.String[] { "en_US", "Tab" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/ConstraintType.java b/javasource/xlsreport/proxies/ConstraintType.java index 9a2b48a..be9e719 100644 --- a/javasource/xlsreport/proxies/ConstraintType.java +++ b/javasource/xlsreport/proxies/ConstraintType.java @@ -6,16 +6,16 @@ public enum ConstraintType { - Contains(new java.lang.String[][] { new java.lang.String[] { "en_US", "Contains" }, new java.lang.String[] { "nl_NL", "Bevat" } }), - StartWith(new java.lang.String[][] { new java.lang.String[] { "en_US", "Start with" }, new java.lang.String[] { "nl_NL", "Start met" } }), - Greater(new java.lang.String[][] { new java.lang.String[] { "en_US", "Greater" }, new java.lang.String[] { "nl_NL", "Groter dan" } }), - GreaterEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "Greater and equal" }, new java.lang.String[] { "nl_NL", "Groter en gelijk aan" } }), - Equal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Equal" }, new java.lang.String[] { "nl_NL", "Gelijk aan" } }), - NotEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "NotEqual" }, new java.lang.String[] { "nl_NL", "Niet gelijk aan" } }), - SmallerEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "Smaller and equal" }, new java.lang.String[] { "nl_NL", "Kleiner en gelijk aan" } }), - Smaller(new java.lang.String[][] { new java.lang.String[] { "en_US", "Smaller" }, new java.lang.String[] { "nl_NL", "Kleiner dan" } }), - _empty(new java.lang.String[][] { new java.lang.String[] { "en_US", "Empty" }, new java.lang.String[] { "nl_NL", "Leeg" } }), - NotEmpty(new java.lang.String[][] { new java.lang.String[] { "en_US", "Not empty" }, new java.lang.String[] { "nl_NL", "Niet leeg" } }); + Contains(new java.lang.String[][] { new java.lang.String[] { "en_US", "Contains" } }), + StartWith(new java.lang.String[][] { new java.lang.String[] { "en_US", "Start with" } }), + Greater(new java.lang.String[][] { new java.lang.String[] { "en_US", "Greater" } }), + GreaterEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "Greater and equal" } }), + Equal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Equal" } }), + NotEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "NotEqual" } }), + SmallerEqual(new java.lang.String[][] { new java.lang.String[] { "en_US", "Smaller and equal" } }), + Smaller(new java.lang.String[][] { new java.lang.String[] { "en_US", "Smaller" } }), + _empty(new java.lang.String[][] { new java.lang.String[] { "en_US", "Empty" } }), + NotEmpty(new java.lang.String[][] { new java.lang.String[] { "en_US", "Not empty" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/DataItemType.java b/javasource/xlsreport/proxies/DataItemType.java index 61f7075..3695c23 100644 --- a/javasource/xlsreport/proxies/DataItemType.java +++ b/javasource/xlsreport/proxies/DataItemType.java @@ -6,8 +6,8 @@ public enum DataItemType { - StaticType(new java.lang.String[][] { new java.lang.String[] { "en_US", "StaticType" }, new java.lang.String[] { "nl_NL", "Statische type" } }), - DynamicType(new java.lang.String[][] { new java.lang.String[] { "en_US", "DynamicType" }, new java.lang.String[] { "nl_NL", "Dupliceer" } }); + StaticType(new java.lang.String[][] { new java.lang.String[] { "en_US", "StaticType" } }), + DynamicType(new java.lang.String[][] { new java.lang.String[] { "en_US", "DynamicType" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/DateTimeConstraint.java b/javasource/xlsreport/proxies/DateTimeConstraint.java index c24a35b..98a6eca 100644 --- a/javasource/xlsreport/proxies/DateTimeConstraint.java +++ b/javasource/xlsreport/proxies/DateTimeConstraint.java @@ -6,8 +6,8 @@ public enum DateTimeConstraint { - Before(new java.lang.String[][] { new java.lang.String[] { "en_US", "Before" }, new java.lang.String[] { "nl_NL", "Voor" } }), - After(new java.lang.String[][] { new java.lang.String[] { "en_US", "After" }, new java.lang.String[] { "nl_NL", "Later" } }); + Before(new java.lang.String[][] { new java.lang.String[] { "en_US", "Before" } }), + After(new java.lang.String[][] { new java.lang.String[] { "en_US", "After" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/DocumentType.java b/javasource/xlsreport/proxies/DocumentType.java index dbb6998..6045ed3 100644 --- a/javasource/xlsreport/proxies/DocumentType.java +++ b/javasource/xlsreport/proxies/DocumentType.java @@ -6,9 +6,9 @@ public enum DocumentType { - XLS(new java.lang.String[][] { new java.lang.String[] { "en_US", "Excel 97 - 2003" }, new java.lang.String[] { "nl_NL", "Excel 97 - 2003 werkmap" } }), - XLSX(new java.lang.String[][] { new java.lang.String[] { "en_US", "Excel 2007 and higher" }, new java.lang.String[] { "nl_NL", "Excel 2007 werkmap (niet ondersteund)" } }), - CSV(new java.lang.String[][] { new java.lang.String[] { "en_US", "CSV file" }, new java.lang.String[] { "nl_NL", "CSV bestand (niet ondersteund)" } }); + XLS(new java.lang.String[][] { new java.lang.String[] { "en_US", "Excel 97 - 2003" } }), + XLSX(new java.lang.String[][] { new java.lang.String[] { "en_US", "Excel 2007 and higher" } }), + CSV(new java.lang.String[][] { new java.lang.String[] { "en_US", "CSV file" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/JOINType.java b/javasource/xlsreport/proxies/JOINType.java index 35ba09a..16d665f 100644 --- a/javasource/xlsreport/proxies/JOINType.java +++ b/javasource/xlsreport/proxies/JOINType.java @@ -6,10 +6,10 @@ public enum JOINType { - LEFT(new java.lang.String[][] { new java.lang.String[] { "en_US", "LEFT JOIN" }, new java.lang.String[] { "nl_NL", "LEFT JOIN" } }), - INNER(new java.lang.String[][] { new java.lang.String[] { "en_US", "INNER JOIN" }, new java.lang.String[] { "nl_NL", "INNER JOIN" } }), - RIGHT(new java.lang.String[][] { new java.lang.String[] { "en_US", "RIGHT JOIN" }, new java.lang.String[] { "nl_NL", "RIGHT JOIN" } }), - FULL(new java.lang.String[][] { new java.lang.String[] { "en_US", "FULL JOIN" }, new java.lang.String[] { "nl_NL", "FULL JOIN" } }); + LEFT(new java.lang.String[][] { new java.lang.String[] { "en_US", "LEFT JOIN" } }), + INNER(new java.lang.String[][] { new java.lang.String[] { "en_US", "INNER JOIN" } }), + RIGHT(new java.lang.String[][] { new java.lang.String[] { "en_US", "RIGHT JOIN" } }), + FULL(new java.lang.String[][] { new java.lang.String[] { "en_US", "FULL JOIN" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/MicroInputType.java b/javasource/xlsreport/proxies/MicroInputType.java index 677d301..ac0851c 100644 --- a/javasource/xlsreport/proxies/MicroInputType.java +++ b/javasource/xlsreport/proxies/MicroInputType.java @@ -6,8 +6,8 @@ public enum MicroInputType { - Attribute(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attribute" }, new java.lang.String[] { "nl_NL", "Attribuut" } }), - Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" }, new java.lang.String[] { "nl_NL", "Referentie" } }); + Attribute(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attribute" } }), + Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/MxColor.java b/javasource/xlsreport/proxies/MxColor.java index cb9f5ec..5412ed7 100644 --- a/javasource/xlsreport/proxies/MxColor.java +++ b/javasource/xlsreport/proxies/MxColor.java @@ -6,21 +6,21 @@ public enum MxColor { - Blank(new java.lang.String[][] { new java.lang.String[] { "en_US", "None" }, new java.lang.String[] { "nl_NL", "Geen" } }), - Black(new java.lang.String[][] { new java.lang.String[] { "en_US", "Black" }, new java.lang.String[] { "nl_NL", "Zwart" } }), - White(new java.lang.String[][] { new java.lang.String[] { "en_US", "White" }, new java.lang.String[] { "nl_NL", "Wit" } }), - Pink(new java.lang.String[][] { new java.lang.String[] { "en_US", "Pink" }, new java.lang.String[] { "nl_NL", "Rose" } }), - Red(new java.lang.String[][] { new java.lang.String[] { "en_US", "Red" }, new java.lang.String[] { "nl_NL", "Rood" } }), - Orange(new java.lang.String[][] { new java.lang.String[] { "en_US", "Orange" }, new java.lang.String[] { "nl_NL", "Oranje" } }), - Yellow(new java.lang.String[][] { new java.lang.String[] { "en_US", "Yellow" }, new java.lang.String[] { "nl_NL", "Geel" } }), - Green(new java.lang.String[][] { new java.lang.String[] { "en_US", "Green" }, new java.lang.String[] { "nl_NL", "Groen" } }), - Light_Blue(new java.lang.String[][] { new java.lang.String[] { "en_US", "Light Blue" }, new java.lang.String[] { "nl_NL", "Licht blauw" } }), - Blue(new java.lang.String[][] { new java.lang.String[] { "en_US", "Blue" }, new java.lang.String[] { "nl_NL", "Blauw" } }), - Brown(new java.lang.String[][] { new java.lang.String[] { "en_US", "Brown" }, new java.lang.String[] { "nl_NL", "Bruin" } }), - Gray_1(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 25%" }, new java.lang.String[] { "nl_NL", "Grijs 25%" } }), - Gray_2(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 40%" }, new java.lang.String[] { "nl_NL", "Grijs 40%" } }), - Gray_3(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 50%" }, new java.lang.String[] { "nl_NL", "Grijs 50%" } }), - Gray_4(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 80%" }, new java.lang.String[] { "nl_NL", "Grijs 80%" } }); + Blank(new java.lang.String[][] { new java.lang.String[] { "en_US", "None" } }), + Black(new java.lang.String[][] { new java.lang.String[] { "en_US", "Black" } }), + White(new java.lang.String[][] { new java.lang.String[] { "en_US", "White" } }), + Pink(new java.lang.String[][] { new java.lang.String[] { "en_US", "Pink" } }), + Red(new java.lang.String[][] { new java.lang.String[] { "en_US", "Red" } }), + Orange(new java.lang.String[][] { new java.lang.String[] { "en_US", "Orange" } }), + Yellow(new java.lang.String[][] { new java.lang.String[] { "en_US", "Yellow" } }), + Green(new java.lang.String[][] { new java.lang.String[] { "en_US", "Green" } }), + Light_Blue(new java.lang.String[][] { new java.lang.String[] { "en_US", "Light Blue" } }), + Blue(new java.lang.String[][] { new java.lang.String[] { "en_US", "Blue" } }), + Brown(new java.lang.String[][] { new java.lang.String[] { "en_US", "Brown" } }), + Gray_1(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 25%" } }), + Gray_2(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 40%" } }), + Gray_3(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 50%" } }), + Gray_4(new java.lang.String[][] { new java.lang.String[] { "en_US", "Gray 80%" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/MxColumn.java b/javasource/xlsreport/proxies/MxColumn.java index b39eadd..f7ac2da 100644 --- a/javasource/xlsreport/proxies/MxColumn.java +++ b/javasource/xlsreport/proxies/MxColumn.java @@ -23,8 +23,10 @@ public enum MemberNames DataAggregateFunction("DataAggregateFunction"), ResultAggregate("ResultAggregate"), ResultAggregateFunction("ResultAggregateFunction"), + ParseMicroflow("ParseMicroflow"), Name("Name"), Status("Status"), + MxColumn_Microflows("XLSReport.MxColumn_Microflows"), MxData_MxSheet("XLSReport.MxData_MxSheet"), MxData_MxCellStyle("XLSReport.MxData_MxCellStyle"), MxXPath_MxData("XLSReport.MxXPath_MxData"); @@ -355,6 +357,85 @@ public final void setResultAggregateFunction(com.mendix.systemwideinterfaces.cor getMendixObject().setValue(context, MemberNames.ResultAggregateFunction.toString(), null); } + /** + * @return value of ParseMicroflow + */ + public final java.lang.Boolean getParseMicroflow() + { + return getParseMicroflow(getContext()); + } + + /** + * @param context + * @return value of ParseMicroflow + */ + public final java.lang.Boolean getParseMicroflow(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.ParseMicroflow.toString()); + } + + /** + * Set value of ParseMicroflow + * @param parsemicroflow + */ + public final void setParseMicroflow(java.lang.Boolean parsemicroflow) + { + setParseMicroflow(getContext(), parsemicroflow); + } + + /** + * Set value of ParseMicroflow + * @param context + * @param parsemicroflow + */ + public final void setParseMicroflow(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean parsemicroflow) + { + getMendixObject().setValue(context, MemberNames.ParseMicroflow.toString(), parsemicroflow); + } + + /** + * @return value of MxColumn_Microflows + */ + public final mxmodelreflection.proxies.Microflows getMxColumn_Microflows() throws com.mendix.core.CoreException + { + return getMxColumn_Microflows(getContext()); + } + + /** + * @param context + * @return value of MxColumn_Microflows + */ + public final mxmodelreflection.proxies.Microflows getMxColumn_Microflows(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException + { + mxmodelreflection.proxies.Microflows result = null; + com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.MxColumn_Microflows.toString()); + if (identifier != null) + result = mxmodelreflection.proxies.Microflows.load(context, identifier); + return result; + } + + /** + * Set value of MxColumn_Microflows + * @param mxcolumn_microflows + */ + public final void setMxColumn_Microflows(mxmodelreflection.proxies.Microflows mxcolumn_microflows) + { + setMxColumn_Microflows(getContext(), mxcolumn_microflows); + } + + /** + * Set value of MxColumn_Microflows + * @param context + * @param mxcolumn_microflows + */ + public final void setMxColumn_Microflows(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.Microflows mxcolumn_microflows) + { + if (mxcolumn_microflows == null) + getMendixObject().setValue(context, MemberNames.MxColumn_Microflows.toString(), null); + else + getMendixObject().setValue(context, MemberNames.MxColumn_Microflows.toString(), mxcolumn_microflows.getMendixObject().getId()); + } + @java.lang.Override public boolean equals(Object obj) { diff --git a/javasource/xlsreport/proxies/RetrieveAction.java b/javasource/xlsreport/proxies/RetrieveAction.java index a721a04..06c51d4 100644 --- a/javasource/xlsreport/proxies/RetrieveAction.java +++ b/javasource/xlsreport/proxies/RetrieveAction.java @@ -6,8 +6,8 @@ public enum RetrieveAction { - Attribute(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attribute" }, new java.lang.String[] { "nl_NL", "Attribuut" } }), - Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" }, new java.lang.String[] { "nl_NL", "Referentie" } }); + Attribute(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attribute" } }), + Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/SortingDirection.java b/javasource/xlsreport/proxies/SortingDirection.java index bf6b5d0..4f278f2 100644 --- a/javasource/xlsreport/proxies/SortingDirection.java +++ b/javasource/xlsreport/proxies/SortingDirection.java @@ -6,8 +6,8 @@ public enum SortingDirection { - Asc(new java.lang.String[][] { new java.lang.String[] { "en_US", "Ascending" }, new java.lang.String[] { "nl_NL", "Volgorde oplopend" } }), - Desc(new java.lang.String[][] { new java.lang.String[] { "en_US", "Descending" }, new java.lang.String[] { "nl_NL", "Volgorde aflopend" } }); + Asc(new java.lang.String[][] { new java.lang.String[] { "en_US", "Ascending" } }), + Desc(new java.lang.String[][] { new java.lang.String[] { "en_US", "Descending" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/StaticType.java b/javasource/xlsreport/proxies/StaticType.java index 7c420a7..1e02cb7 100644 --- a/javasource/xlsreport/proxies/StaticType.java +++ b/javasource/xlsreport/proxies/StaticType.java @@ -6,9 +6,9 @@ public enum StaticType { - StaticText(new java.lang.String[][] { new java.lang.String[] { "en_US", "Static Text" }, new java.lang.String[] { "nl_NL", "Statische tekst" } }), - ObjectMember(new java.lang.String[][] { new java.lang.String[] { "en_US", "Object data" }, new java.lang.String[] { "nl_NL", "Object data" } }), - Aggregate(new java.lang.String[][] { new java.lang.String[] { "en_US", "Aggregate function" }, new java.lang.String[] { "nl_NL", "Aggregeer functie" } }); + StaticText(new java.lang.String[][] { new java.lang.String[] { "en_US", "Static Text" } }), + ObjectMember(new java.lang.String[][] { new java.lang.String[] { "en_US", "Object data" } }), + Aggregate(new java.lang.String[][] { new java.lang.String[] { "en_US", "Aggregate function" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/TextAlignment.java b/javasource/xlsreport/proxies/TextAlignment.java index 532776c..ca9c9e0 100644 --- a/javasource/xlsreport/proxies/TextAlignment.java +++ b/javasource/xlsreport/proxies/TextAlignment.java @@ -6,9 +6,9 @@ public enum TextAlignment { - Left(new java.lang.String[][] { new java.lang.String[] { "en_US", "Left" }, new java.lang.String[] { "nl_NL", "Links" } }), - Center(new java.lang.String[][] { new java.lang.String[] { "en_US", "Center" }, new java.lang.String[] { "nl_NL", "Gecentreerd" } }), - Right(new java.lang.String[][] { new java.lang.String[] { "en_US", "Right" }, new java.lang.String[] { "nl_NL", "Rechts" } }); + Left(new java.lang.String[][] { new java.lang.String[] { "en_US", "Left" } }), + Center(new java.lang.String[][] { new java.lang.String[] { "en_US", "Center" } }), + Right(new java.lang.String[][] { new java.lang.String[] { "en_US", "Right" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/TextVerticalAlignment.java b/javasource/xlsreport/proxies/TextVerticalAlignment.java index 412ee52..21d7797 100644 --- a/javasource/xlsreport/proxies/TextVerticalAlignment.java +++ b/javasource/xlsreport/proxies/TextVerticalAlignment.java @@ -6,9 +6,9 @@ public enum TextVerticalAlignment { - Top(new java.lang.String[][] { new java.lang.String[] { "en_US", "Top" }, new java.lang.String[] { "nl_NL", "Boven" } }), - Middle(new java.lang.String[][] { new java.lang.String[] { "en_US", "Middle" }, new java.lang.String[] { "nl_NL", "Midden" } }), - Bottom(new java.lang.String[][] { new java.lang.String[] { "en_US", "Bottom" }, new java.lang.String[] { "nl_NL", "Onder" } }); + Top(new java.lang.String[][] { new java.lang.String[] { "en_US", "Top" } }), + Middle(new java.lang.String[][] { new java.lang.String[] { "en_US", "Middle" } }), + Bottom(new java.lang.String[][] { new java.lang.String[] { "en_US", "Bottom" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/proxies/Yes_no.java b/javasource/xlsreport/proxies/Yes_no.java index de9fec7..9048699 100644 --- a/javasource/xlsreport/proxies/Yes_no.java +++ b/javasource/xlsreport/proxies/Yes_no.java @@ -6,8 +6,8 @@ public enum Yes_no { - Yes(new java.lang.String[][] { new java.lang.String[] { "en_US", "Yes" }, new java.lang.String[] { "nl_NL", "Ja" } }), - No(new java.lang.String[][] { new java.lang.String[] { "en_US", "No" }, new java.lang.String[] { "nl_NL", "Nee" } }); + Yes(new java.lang.String[][] { new java.lang.String[] { "en_US", "Yes" } }), + No(new java.lang.String[][] { new java.lang.String[] { "en_US", "No" } }); private java.util.Map captions; diff --git a/javasource/xlsreport/report/data/ColumnPreset.java b/javasource/xlsreport/report/data/ColumnPreset.java index 524f42a..03c2b77 100644 --- a/javasource/xlsreport/report/data/ColumnPreset.java +++ b/javasource/xlsreport/report/data/ColumnPreset.java @@ -25,6 +25,7 @@ public class ColumnPreset private AggregateFunction resultAggrFunction; private DescriptiveStatistics statistics; private int valuesCounter; + private String microflowName; /** * Constructor for XLS columns to contains styling @@ -34,13 +35,14 @@ public class ColumnPreset * @param firstPath The first object where the XPath will start to an attribute * @param styleGuid The GUID of the MxCellStyle object */ - public ColumnPreset(String name, boolean nameAsHeader, int columnNr, MxXPath firstPath, long styleGuid) + public ColumnPreset(String name, boolean nameAsHeader, int columnNr, MxXPath firstPath, long styleGuid, String microflowName) { this.name = name; this.nameAsHeader = nameAsHeader; this.columnNr = columnNr; this.firstPath = firstPath; this.styleGuid = styleGuid; + this.microflowName = microflowName; } /** @@ -49,12 +51,13 @@ public ColumnPreset(String name, boolean nameAsHeader, int columnNr, MxXPath fir * @param columnNr The position of the column, start from 0 * @param firstPath The first object where the XPath will start to an attribute */ - public ColumnPreset(String name, int columnNr, MxXPath firstPath) + public ColumnPreset(String name, int columnNr, MxXPath firstPath, String microflowName) { this.name = name; this.columnNr = columnNr; this.firstPath = firstPath; this.nameAsHeader = true; + this.microflowName = microflowName; } public void addDataAggregation(AggregateFunction aggrFunction) @@ -172,5 +175,7 @@ public boolean isDateTimeFormat() public void setDateTimeFormat(boolean dateTimeFormat) { this.dateTimeFormat = dateTimeFormat; - } + } + + public String getMicroflowName(){ return microflowName;}; } diff --git a/javasource/xlsreport/report/export/ExportCSV.java b/javasource/xlsreport/report/export/ExportCSV.java index 1d48f40..74cc6a4 100644 --- a/javasource/xlsreport/report/export/ExportCSV.java +++ b/javasource/xlsreport/report/export/ExportCSV.java @@ -67,6 +67,13 @@ public void buildExportFile(MxSheet mxSheet, List mxColumnList, Ob for(int e = 0; e < table[i].length; e++) { Object value = table[i][e]; + //check if there is a microflow parser + ColumnPreset columnPreset = mxColumnList.get(e); + if (columnPreset.getMicroflowName() != null && value != null){ + //replace the value of data with the new microflow parsed value + value = new microflowParser().microflowParser(context, columnPreset.getMicroflowName(), value.toString()); + + } if(value instanceof Date) { value = this.dateFormat.format((Date) value); diff --git a/javasource/xlsreport/report/export/ExportExcel.java b/javasource/xlsreport/report/export/ExportExcel.java index 607c1f0..cc2bb4c 100644 --- a/javasource/xlsreport/report/export/ExportExcel.java +++ b/javasource/xlsreport/report/export/ExportExcel.java @@ -26,6 +26,7 @@ import xlsreport.report.Aggregator; import xlsreport.report.Styling; import xlsreport.report.data.ColumnPreset; +import xlsreport.report.export.microflowParser; import com.mendix.core.Core; import com.mendix.core.CoreException; @@ -130,6 +131,12 @@ public void buildExportFile(MxSheet mxSheet, List ColumnPresetList // Get the basis data Object data = table[i][e]; ColumnPreset columnPreset = ColumnPresetList.get(e); + //check if there is a microflow parser + if (columnPreset.getMicroflowName() != null && data != null){ + //replace the value of data with the new microflow parsed value + data = new microflowParser().microflowParser(context, columnPreset.getMicroflowName(), data.toString()); + + } if(columnPreset.isResultAggregation()) { double value = ((Number)data).doubleValue(); diff --git a/javasource/xlsreport/report/export/microflowParser.java b/javasource/xlsreport/report/export/microflowParser.java new file mode 100644 index 0000000..45655c4 --- /dev/null +++ b/javasource/xlsreport/report/export/microflowParser.java @@ -0,0 +1,28 @@ +package xlsreport.report.export; + +import com.mendix.core.Core; +import com.mendix.core.CoreException; +import com.mendix.systemwideinterfaces.core.IContext; +import java.util.HashMap; +import java.util.Map; + +public class microflowParser { + + public String microflowParser (IContext context, String mfName, String value) throws CoreException { + + //grab the value of the cell + String param = value; + + //retrieve the parameter name of the mf + String inputParam = Core.getInputParameters(mfName).keySet().toArray()[0].toString(); + + //create a parameter to pass to the mf + Map parameters = new HashMap(); + parameters.put(inputParam, param); + //set the new value for data + String returnValue = Core.execute(context, mfName, parameters); + + return returnValue; + + } +}