/** Reset the transformer in preparation for a new object */ private void reset() throws TransformerException { if (firstRun) { firstRun = false; // Output directory String outputPath = config.getString(null, "outputPath"); if (outputPath == null) { throw new TransformerException("Output path not specified!"); } outputDir = new File(outputPath); outputDir.mkdirs(); // Rendition exclusions excludeList = Arrays.asList(StringUtils.split(config.getString(null, "excludeRenditionExt"), ',')); // Conversion Service URL convertUrl = config.getString(null, "url"); if (convertUrl == null) { throw new TransformerException("No ICE URL provided!"); } } // Priority Boolean testResponse = itemConfig.getBoolean(null, "priority"); if (testResponse != null) { // We found it in item config priority = testResponse; } else { // Try system config priority = config.getBoolean(true, "priority"); } // Clear the old SAX reader reader = new SafeSAXReader(); // Remove the last object thumbnails = null; previews = null; }
/** * Initialise the CSV harvester plugin. * * @throws HarvesterException if an error occurred */ @Override public void init() throws HarvesterException { JsonSimple options = new JsonSimple(getJsonConfig().getObject("harvester", "csv")); String filePath = options.getString(null, "fileLocation"); if (filePath == null) { throw new HarvesterException("No data file provided!"); } File csvDataFile = new File(filePath); if (csvDataFile == null || !csvDataFile.exists()) { throw new HarvesterException("Could not find CSV file '" + filePath + "'"); } filename = csvDataFile.getName(); idPrefix = options.getString("", "recordIDPrefix"); maxRows = options.getInteger(-1, "maxRows"); delimiter = options.getString(String.valueOf(DEFAULT_DELIMITER), "delimiter").charAt(0); ignoredFields = getStringList(options, "ignoreFields"); includedFields = getStringList(options, "includedFields"); multiValueFields = getStringList(options, "multiValueFields"); multiValueFieldDelimiter = options .getString( String.valueOf(DEFAULT_MULTI_VALUE_FIELD_DELIMITER), "multiValueFieldDelimiter") .charAt(0); payloadId = options.getString(DEFAULT_PAYLOAD_ID, "payloadId"); batchSize = options.getInteger(DEFAULT_BATCH_SIZE, "batchSize"); hasMore = true; if (delimiter == multiValueFieldDelimiter) { throw new HarvesterException( "Cannot parse CSV: The requested delimiters for the CSV and multivalue fields are the same: " + delimiter); } try { // open the CSV file for reading Reader fileReader = new InputStreamReader(new FileInputStream(csvDataFile), "UTF-8"); // char delimiter = options.getString(String.valueOf(DEFAULT_DELIMITER), // "delimiter").charAt(0); csvReader = new CSVReader(fileReader, delimiter); // configure the data fields if (options.getBoolean(true, "headerRow")) { dataFields = Arrays.asList(csvReader.readNext()); } else { dataFields = getStringList(options, "headerList"); } // check that the specified id column is valid idColumn = options.getString(null, "idColumn"); if (idColumn != null && !dataFields.contains(idColumn)) { throw new HarvesterException( "ID column '" + idColumn + "' was invalid or not found in the data!"); } // load filters, all filters must pass for the row to be considered filters = new HashMap<String, List<Filter>>(); List<JsonSimple> filterConfig = options.getJsonSimpleList("filters"); if (filterConfig != null) { for (JsonSimple singleFilterConfig : filterConfig) { Filter filter = new Filter(singleFilterConfig); String field = filter.getField(); if (!dataFields.contains(field)) { throw new HarvesterException("Filter column '" + field + "' was not found in the data"); } List<Filter> existingFilters = filters.get(field); if (existingFilters == null) { existingFilters = new ArrayList<Filter>(); filters.put(field, existingFilters); } existingFilters.add(filter); } } } catch (IOException ioe) { throw new HarvesterException(ioe); } }