diff --git a/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/AbstractFormatExporter.java b/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/AbstractFormatExporter.java index ab8c0a69bb..2ecd741481 100644 --- a/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/AbstractFormatExporter.java +++ b/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/AbstractFormatExporter.java @@ -269,6 +269,31 @@ protected JSONArray getTableOrderedColumns(JSONArray columnsNew, JSONArray colum return new JSONArray(); } } + + protected JSONArray getDiscoveryOrderedColumns(JSONArray columnsNew, JSONArray columnsOld) { + JSONArray columnsOrdered = new JSONArray(); + // new columns are in the correct order + // for each of them we have to find the correspondent old column and push it into columnsOrdered + try { + for (int i = 0; i < columnsNew.length(); i++) { + + JSONObject columnNew = columnsNew.getJSONObject(i); + + for (int j = 0; j < columnsOld.length(); j++) { + JSONObject columnOld = columnsOld.getJSONObject(j); + if (columnOld.getString("header").equals(columnNew.getString("name"))) { + + columnsOrdered.put(columnOld); + break; + } + } + } + return columnsOrdered; + } catch (Exception e) { + LOGGER.error("Error retrieving ordered columns"); + return new JSONArray(); + } + } protected String getTableColumnHeaderValue(JSONObject column) { try { diff --git a/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/excel/ExcelExporter.java b/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/excel/ExcelExporter.java index 8861aaf916..5505818d93 100644 --- a/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/excel/ExcelExporter.java +++ b/knowagecockpitengine/src/main/java/it/eng/knowage/engine/cockpit/api/export/excel/ExcelExporter.java @@ -877,6 +877,8 @@ public void fillSheetWithData(JSONObject dataStore, Workbook wb, Sheet sheet, St if (widgetData.getString("type").equalsIgnoreCase("table") && widgetContent.has("columnSelectedOfDataset")) { hiddenColumns = getHiddenColumnsList(columnSelectedOfDataset); columnsOrdered = getTableOrderedColumns(columnSelectedOfDataset, columns); + } else if (widgetData.getString("type").equalsIgnoreCase("discovery") && widgetContent.has("columnSelectedOfDataset")) { + columnsOrdered = getDiscoveryOrderedColumns(columnSelectedOfDataset, columns); } else { columnsOrdered = columns; }