From 9d7b8a52792887d9ca1f3bf4c35021997132f9e1 Mon Sep 17 00:00:00 2001 From: Tom Morris Date: Thu, 18 Aug 2011 17:39:18 +0000 Subject: [PATCH] Don't die if we get passed no candidates git-svn-id: http://google-refine.googlecode.com/svn/trunk@2210 7d457c2a-affb-35e4-300a-418c747d4874 --- .../refine/importers/ExcelImporter.java | 56 ++++++++++--------- .../refine/importers/FixedWidthImporter.java | 32 +++++------ .../google/refine/importers/JsonImporter.java | 32 ++++++----- .../google/refine/importers/XmlImporter.java | 40 ++++++------- 4 files changed, 83 insertions(+), 77 deletions(-) diff --git a/main/src/com/google/refine/importers/ExcelImporter.java b/main/src/com/google/refine/importers/ExcelImporter.java index 1a6883f8e..fa9cb27e1 100644 --- a/main/src/com/google/refine/importers/ExcelImporter.java +++ b/main/src/com/google/refine/importers/ExcelImporter.java @@ -79,34 +79,36 @@ public class ExcelImporter extends TabularImportingParserBase { JSONArray sheetRecords = new JSONArray(); JSONUtilities.safePut(options, "sheetRecords", sheetRecords); try { - JSONObject firstFileRecord = fileRecords.get(0); - File file = ImportingUtilities.getFile(job, firstFileRecord); - InputStream is = new FileInputStream(file); - try { - Workbook wb = xmlBased ? - new XSSFWorkbook(is) : - new HSSFWorkbook(new POIFSFileSystem(is)); - - int sheetCount = wb.getNumberOfSheets(); - boolean hasData = false; - for (int i = 0; i < sheetCount; i++) { - Sheet sheet = wb.getSheetAt(i); - int rows = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1; - - JSONObject sheetRecord = new JSONObject(); - JSONUtilities.safePut(sheetRecord, "name", sheet.getSheetName()); - JSONUtilities.safePut(sheetRecord, "rows", rows); - if (hasData) { - JSONUtilities.safePut(sheetRecord, "selected", false); - } else if (rows > 1) { - JSONUtilities.safePut(sheetRecord, "selected", true); - hasData = true; - } - JSONUtilities.append(sheetRecords, sheetRecord); + if (fileRecords.size() > 0) { + JSONObject firstFileRecord = fileRecords.get(0); + File file = ImportingUtilities.getFile(job, firstFileRecord); + InputStream is = new FileInputStream(file); + try { + Workbook wb = xmlBased ? + new XSSFWorkbook(is) : + new HSSFWorkbook(new POIFSFileSystem(is)); + + int sheetCount = wb.getNumberOfSheets(); + boolean hasData = false; + for (int i = 0; i < sheetCount; i++) { + Sheet sheet = wb.getSheetAt(i); + int rows = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1; + + JSONObject sheetRecord = new JSONObject(); + JSONUtilities.safePut(sheetRecord, "name", sheet.getSheetName()); + JSONUtilities.safePut(sheetRecord, "rows", rows); + if (hasData) { + JSONUtilities.safePut(sheetRecord, "selected", false); + } else if (rows > 1) { + JSONUtilities.safePut(sheetRecord, "selected", true); + hasData = true; + } + JSONUtilities.append(sheetRecords, sheetRecord); + } + } finally { + is.close(); } - } finally { - is.close(); - } + } } catch (IOException e) { // Ignore } diff --git a/main/src/com/google/refine/importers/FixedWidthImporter.java b/main/src/com/google/refine/importers/FixedWidthImporter.java index 45b181c86..23c4c5242 100644 --- a/main/src/com/google/refine/importers/FixedWidthImporter.java +++ b/main/src/com/google/refine/importers/FixedWidthImporter.java @@ -30,25 +30,25 @@ public class FixedWidthImporter extends TabularImportingParserBase { ImportingJob job, List fileRecords, String format) { JSONObject options = super.createParserUIInitializationData(job, fileRecords, format); JSONArray columnWidths = new JSONArray(); - - JSONObject firstFileRecord = fileRecords.get(0); - String encoding = ImportingUtilities.getEncoding(firstFileRecord); - String location = JSONUtilities.getString(firstFileRecord, "location", null); - if (location != null) { - File file = new File(job.getRawDataDir(), location); - int[] columnWidthsA = guessColumnWidths(file, encoding); - if (columnWidthsA != null) { - for (int w : columnWidthsA) { - JSONUtilities.append(columnWidths, w); + if (fileRecords.size() > 0) { + JSONObject firstFileRecord = fileRecords.get(0); + String encoding = ImportingUtilities.getEncoding(firstFileRecord); + String location = JSONUtilities.getString(firstFileRecord, "location", null); + if (location != null) { + File file = new File(job.getRawDataDir(), location); + int[] columnWidthsA = guessColumnWidths(file, encoding); + if (columnWidthsA != null) { + for (int w : columnWidthsA) { + JSONUtilities.append(columnWidths, w); + } } } + + JSONUtilities.safePut(options, "lineSeparator", "\n"); + JSONUtilities.safePut(options, "headerLines", 0); + JSONUtilities.safePut(options, "columnWidths", columnWidths); + JSONUtilities.safePut(options, "guessCellValueTypes", true); } - - JSONUtilities.safePut(options, "lineSeparator", "\n"); - JSONUtilities.safePut(options, "headerLines", 0); - JSONUtilities.safePut(options, "columnWidths", columnWidths); - JSONUtilities.safePut(options, "guessCellValueTypes", true); - return options; } diff --git a/main/src/com/google/refine/importers/JsonImporter.java b/main/src/com/google/refine/importers/JsonImporter.java index d28e8bbb8..7b7e172bc 100644 --- a/main/src/com/google/refine/importers/JsonImporter.java +++ b/main/src/com/google/refine/importers/JsonImporter.java @@ -75,24 +75,26 @@ public class JsonImporter extends TreeImportingParserBase { public JSONObject createParserUIInitializationData( ImportingJob job, List fileRecords, String format) { JSONObject options = super.createParserUIInitializationData(job, fileRecords, format); - try { - JSONObject firstFileRecord = fileRecords.get(0); - File file = ImportingUtilities.getFile(job, firstFileRecord); - InputStream is = new FileInputStream(file); + if (fileRecords.size() > 0) { try { - JsonFactory factory = new JsonFactory(); - JsonParser parser = factory.createJsonParser(is); - - PreviewParsingState state = new PreviewParsingState(); - Object rootValue = parseForPreview(parser, state); - if (rootValue != null) { - JSONUtilities.safePut(options, "dom", rootValue); + JSONObject firstFileRecord = fileRecords.get(0); + File file = ImportingUtilities.getFile(job, firstFileRecord); + InputStream is = new FileInputStream(file); + try { + JsonFactory factory = new JsonFactory(); + JsonParser parser = factory.createJsonParser(is); + + PreviewParsingState state = new PreviewParsingState(); + Object rootValue = parseForPreview(parser, state); + if (rootValue != null) { + JSONUtilities.safePut(options, "dom", rootValue); + } + } finally { + is.close(); } - } finally { - is.close(); + } catch (IOException e) { + // Ignore } - } catch (IOException e) { - // Ignore } return options; diff --git a/main/src/com/google/refine/importers/XmlImporter.java b/main/src/com/google/refine/importers/XmlImporter.java index c86638ec3..267e89cca 100644 --- a/main/src/com/google/refine/importers/XmlImporter.java +++ b/main/src/com/google/refine/importers/XmlImporter.java @@ -73,28 +73,30 @@ public class XmlImporter extends TreeImportingParserBase { ImportingJob job, List fileRecords, String format) { JSONObject options = super.createParserUIInitializationData(job, fileRecords, format); try { - JSONObject firstFileRecord = fileRecords.get(0); - File file = ImportingUtilities.getFile(job, firstFileRecord); - InputStream is = new FileInputStream(file); - try { - XMLStreamReader parser = createXMLStreamReader(is); - PreviewParsingState state = new PreviewParsingState(); - - while (parser.hasNext() && state.tokenCount < PREVIEW_PARSING_LIMIT) { - int tokenType = parser.next(); - state.tokenCount++; - if (tokenType == XMLStreamConstants.START_ELEMENT) { - JSONObject rootElement = descendElement(parser, state); - if (rootElement != null) { - JSONUtilities.safePut(options, "dom", rootElement); - break; + if (fileRecords.size() > 0) { + JSONObject firstFileRecord = fileRecords.get(0); + File file = ImportingUtilities.getFile(job, firstFileRecord); + InputStream is = new FileInputStream(file); + try { + XMLStreamReader parser = createXMLStreamReader(is); + PreviewParsingState state = new PreviewParsingState(); + + while (parser.hasNext() && state.tokenCount < PREVIEW_PARSING_LIMIT) { + int tokenType = parser.next(); + state.tokenCount++; + if (tokenType == XMLStreamConstants.START_ELEMENT) { + JSONObject rootElement = descendElement(parser, state); + if (rootElement != null) { + JSONUtilities.safePut(options, "dom", rootElement); + break; + } + } else { + // ignore everything else } - } else { - // ignore everything else } + } finally { + is.close(); } - } finally { - is.close(); } } catch (XMLStreamException e) { // Ignore