From 8c08ca8bdbbb8c92b534600ee9191c82b92e7c82 Mon Sep 17 00:00:00 2001 From: Jesse Lingeman Date: Mon, 17 Feb 2020 20:43:42 -0500 Subject: [PATCH] Modifies the "arguments" section of the JSON file format to be 'argname' : 'argtype' so that the keys are unique. This allows behavior to be consistent across different JSON importers and is consistent with the recommendation in JSON RFC 8259. Additionally, "Import Passes From JSON" should be enabled when there are no columns in the spreadsheet. This has also been fixed. --- .../controllers/ExportDatabaseFileController.java | 2 +- .../datavyu/controllers/OpenDataStoreFileController.java | 9 ++++----- src/main/java/org/datavyu/views/DatavyuView.java | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/datavyu/controllers/ExportDatabaseFileController.java b/src/main/java/org/datavyu/controllers/ExportDatabaseFileController.java index e69928852..6bb51eeb6 100644 --- a/src/main/java/org/datavyu/controllers/ExportDatabaseFileController.java +++ b/src/main/java/org/datavyu/controllers/ExportDatabaseFileController.java @@ -417,7 +417,7 @@ public void exportAsJSON(String dbFileName, DataStore dataStore) throws UserWarn column.getRootNode().childArguments.forEach(argument -> { try { - g.writeStringField(argument.type.name(), argument.name); + g.writeStringField(argument.name, argument.type.name()); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/org/datavyu/controllers/OpenDataStoreFileController.java b/src/main/java/org/datavyu/controllers/OpenDataStoreFileController.java index 5e0b3b0b8..e4800943b 100644 --- a/src/main/java/org/datavyu/controllers/OpenDataStoreFileController.java +++ b/src/main/java/org/datavyu/controllers/OpenDataStoreFileController.java @@ -219,8 +219,7 @@ public void importJSONToSpreadsheet(File file, SpreadSheetPanel spreadSheet) thr while (!JsonToken.END_OBJECT.equals(token)) { token = parser.nextToken(); if (token == null) { break; } - if (JsonToken.START_OBJECT.equals(token) || JsonToken - .START_OBJECT.equals(token) || JsonToken.END_OBJECT + if (JsonToken.START_OBJECT.equals(token) || JsonToken.END_OBJECT .equals(token)) { break; } @@ -233,10 +232,10 @@ public void importJSONToSpreadsheet(File file, SpreadSheetPanel spreadSheet) thr variableArg.name = parser.getValueAsString(); } if (variableType == Argument.Type.MATRIX) { - if (getVarType(parser.getCurrentName()) != null) { + if (getVarType(parser.getValueAsString()) != null) { variableArg.childArguments.add(new Argument(parser - .getValueAsString(), getVarType(parser - .getCurrentName()))); + .getCurrentName(), getVarType(parser + .getValueAsString()))); } else { logger.warn("Unknown argument ('" + parser.getCurrentName () + "' line " + parser.getCurrentLocation() diff --git a/src/main/java/org/datavyu/views/DatavyuView.java b/src/main/java/org/datavyu/views/DatavyuView.java index 9af960c0e..7f85442a2 100755 --- a/src/main/java/org/datavyu/views/DatavyuView.java +++ b/src/main/java/org/datavyu/views/DatavyuView.java @@ -2603,13 +2603,13 @@ private void spreadsheetMenuSelected(final MenuEvent evt) { if (totalNumberOfVisibleColumns == 0) { newCellMenuItem.setEnabled(false); exportJSON.setEnabled(false); - importJSON.setEnabled(false); } else { newCellMenuItem.setEnabled(true); exportJSON.setEnabled(true); - importJSON.setEnabled(true); } + importJSON.setEnabled(true); + List selectedCols = Datavyu.getProjectController().getDataStore().getSelectedVariables(); if (selectedCols.isEmpty()) {