diff --git a/main/src/com/google/refine/importing/ImportingUtilities.java b/main/src/com/google/refine/importing/ImportingUtilities.java index d87c91500..143e355f1 100644 --- a/main/src/com/google/refine/importing/ImportingUtilities.java +++ b/main/src/com/google/refine/importing/ImportingUtilities.java @@ -1005,16 +1005,7 @@ public class ImportingUtilities { final Format record, final Project project ) { - ProjectMetadata pm = new ProjectMetadata(); - pm.setName(JSONUtilities.getString(optionObj, "projectName", "Untitled")); - pm.setTags(JSONUtilities.getStringArray(optionObj, "projectTags")); - String encoding = JSONUtilities.getString(optionObj, "encoding", "UTF-8"); - if ("".equals(encoding)) { - // encoding can be present, but empty, which won't trigger JSONUtilities default processing - encoding = "UTF-8"; - } - pm.setEncoding(encoding); - + ProjectMetadata pm = createProjectMetadata(optionObj); record.parser.parse( project, pm, @@ -1041,6 +1032,19 @@ public class ImportingUtilities { job.updating = false; } } - + static public ProjectMetadata createProjectMetadata(JSONObject optionObj) { + ProjectMetadata pm = new ProjectMetadata(); + pm.setName(JSONUtilities.getString(optionObj, "projectName", "Untitled")); + pm.setTags(JSONUtilities.getStringArray(optionObj, "projectTags")); + pm.appendImportOptionMetadata(optionObj); + + String encoding = JSONUtilities.getString(optionObj, "encoding", "UTF-8"); + if ("".equals(encoding)) { + // encoding can be present, but empty, which won't trigger JSONUtilities default processing + encoding = "UTF-8"; + } + pm.setEncoding(encoding); + return pm; + } } diff --git a/main/tests/server/src/com/google/refine/tests/importing/ImportingUtilitiesTests.java b/main/tests/server/src/com/google/refine/tests/importing/ImportingUtilitiesTests.java new file mode 100644 index 000000000..53b706b5f --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/importing/ImportingUtilitiesTests.java @@ -0,0 +1,22 @@ +package com.google.refine.tests.importing; + +import org.json.JSONObject; +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.google.refine.ProjectMetadata; +import com.google.refine.importing.ImportingUtilities; +import com.google.refine.tests.RefineTest; + +public class ImportingUtilitiesTests extends RefineTest { + + @Test + public void createProjectMetadataTest() throws Exception { + JSONObject optionObj = new JSONObject("{\"projectName\":\"acme\",\"projectTags\":[],\"created\":\"2017-12-18T13:28:40.659\",\"modified\":\"2017-12-20T09:28:06.654\",\"creator\":\"\",\"contributors\":\"\",\"subject\":\"\",\"description\":\"\",\"rowCount\":50,\"customMetadata\":{},\"importOptionMetadata\":[{\"guessCellValueTypes\":false,\"projectTags\":[\"\"],\"ignoreLines\":-1,\"processQuotes\":true,\"fileSource\":\"acme.txt\",\"encoding\":\"\",\"separator\":\"|\",\"storeBlankCellsAsNulls\":true,\"storeBlankRows\":true,\"skipDataLines\":0,\"includeFileSources\":false,\"headerLines\":1,\"limit\":-1,\"projectName\":\"acme\"},{\"guessCellValueTypes\":false,\"projectTags\":[\"\"],\"ignoreLines\":-1,\"processQuotes\":true,\"fileSource\":\"acme.txt\",\"encoding\":\"\",\"separator\":\"|\",\"storeBlankCellsAsNulls\":true,\"storeBlankRows\":true,\"skipDataLines\":0,\"includeFileSources\":false,\"headerLines\":1,\"limit\":-1,\"projectName\":\"acme\"}]}"); + ProjectMetadata pm = ImportingUtilities.createProjectMetadata(optionObj); + Assert.assertEquals(pm.getName(), "acme"); + Assert.assertEquals(pm.getEncoding(), "UTF-8"); + Assert.assertTrue(pm.getTags().length == 0); + Assert.assertTrue(pm.getImportOptionMetadata().length() > 0); + } +}