From ccef93ea94b64160261ddebd16344d215c74c6a5 Mon Sep 17 00:00:00 2001 From: gezvf Date: Fri, 18 Aug 2017 16:11:55 +0200 Subject: [PATCH] ImportFileCleaner --- .../edam/excelimport/ImportFileCleaner.java | 84 +++++++++++++++++++ .../ToolboxImportFileGenerator.java | 7 +- 2 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 Toolbox Migration/src/com/bayer/edam/excelimport/ImportFileCleaner.java diff --git a/Toolbox Migration/src/com/bayer/edam/excelimport/ImportFileCleaner.java b/Toolbox Migration/src/com/bayer/edam/excelimport/ImportFileCleaner.java new file mode 100644 index 0000000..1f4362c --- /dev/null +++ b/Toolbox Migration/src/com/bayer/edam/excelimport/ImportFileCleaner.java @@ -0,0 +1,84 @@ +package com.bayer.edam.excelimport; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Layout; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; + +import com.univocity.parsers.csv.CsvParser; +import com.univocity.parsers.csv.CsvParserSettings; +import com.univocity.parsers.csv.CsvWriter; +import com.univocity.parsers.csv.CsvWriterSettings; + +/** + * Quick and dirty: Remove all files from the import Excel spreadsheet that are not shown in a directory listing. + * + * @author gezvf + * + */ +public class ImportFileCleaner { + + private static Logger log = Logger.getLogger(ImportFileCleaner.class); + + private static String toolboxExportFilePath = "C:\\Temp\\Migration CS - SQL Server\\export-2017-08-15-update.csv"; + private static String listingFilePath = "D:\\listing.txt"; + private static String outputFilePath = "C:\\Temp\\Migration CS - SQL Server\\export-2017-08-15-update-smallSet.csv"; + + private CsvParserSettings parserSettings = new CsvParserSettings(); + private List inputRows; + private List filenames; + private List linesToKeep = new ArrayList(); + + public ImportFileCleaner() throws IOException { + parserSettings.getFormat().setLineSeparator("\r\n"); + parserSettings.getFormat().setDelimiter(';'); + parserSettings.getFormat().setCharToEscapeQuoteEscaping('"'); + parserSettings.setHeaderExtractionEnabled(false); + CsvParser parser = new CsvParser(parserSettings); + inputRows = parser.parseAll(new File(toolboxExportFilePath)); + + filenames = FileUtils.readLines(new File(listingFilePath), "UTF-8"); + + for (String[] line : inputRows) { + if (filenames.contains(line[1])) + linesToKeep.add(line); + } + + List csvOutputList = new ArrayList(); + for (String[] line : linesToKeep) { + csvOutputList.add(line); + } + + CsvWriterSettings writerSettings = new CsvWriterSettings(); + writerSettings.setFormat(parserSettings.getFormat()); + + CsvWriter writer = new CsvWriter(new File(outputFilePath), writerSettings); + writer.writeRowsAndClose(csvOutputList); + + log.info("No input lines: " + inputRows.size()); + log.info("No output lines: " + linesToKeep.size()); + + } + + public static void main(String[] args) { + try { + Layout layout = new PatternLayout("%d{ISO8601} - %p %m%n"); // "%d{ISO8601} - %p %m%n" + BasicConfigurator.configure(new ConsoleAppender(layout)); + log.setLevel(Level.INFO); + + new ImportFileCleaner(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/Toolbox Migration/src/com/bayer/edam/excelimport/ToolboxImportFileGenerator.java b/Toolbox Migration/src/com/bayer/edam/excelimport/ToolboxImportFileGenerator.java index e756b72..855f43c 100644 --- a/Toolbox Migration/src/com/bayer/edam/excelimport/ToolboxImportFileGenerator.java +++ b/Toolbox Migration/src/com/bayer/edam/excelimport/ToolboxImportFileGenerator.java @@ -29,8 +29,8 @@ import com.univocity.parsers.csv.CsvWriterSettings; public class ToolboxImportFileGenerator { private static Logger log = Logger.getLogger(ToolboxImportFileGenerator.class); - private static String toolboxExportFilePath = "C:\\Temp\\Migration CS - SQL Server\\export-2017-08-15-update.csv"; - private static String importFilePath = "C:\\Temp\\Migration CS - SQL Server\\importFile.csv"; + private static String toolboxExportFilePath = "C:\\Temp\\Migration CS - SQL Server\\export-2017-08-15-update-smallSet.csv"; + private static String importFilePath = "C:\\Temp\\Migration CS - SQL Server\\importFile-smallSet.csv"; private static final Map brandMap; private static final Map unitMap; @@ -617,7 +617,8 @@ public class ToolboxImportFileGenerator { categoryMap.put("LocalCampaignTools : Local Print Ad", "Advertising - Print : Print ad - local rep use"); categoryMap.put("LocalTradeshowsEventTools : Agenda template", "Field Day \\/ Tradeshow \\/ Event Materials : Agenda"); categoryMap.put("LocalTradeshowsEventTools : Banner - 3'X4'", "Field Day \\/ Tradeshow \\/ Event Materials : Banner"); - categoryMap.put("LocalTradeshowsEventTools : Banner - 3'X8' ", "Field Day \\/ Tradeshow \\/ Event Materials : Banner"); + categoryMap.put("LocalTradeshowsEventTools : Banner - 3'X8' ", "Field Day \\/ Tradeshow \\/ Event Materials : Banner"); // XXX + categoryMap.put("LocalTradeshowsEventTools : Banner - 3'X8'", "Field Day \\/ Tradeshow \\/ Event Materials : Banner"); categoryMap.put("LocalTradeshowsEventTools : Bannerup", "Field Day \\/ Tradeshow \\/ Event Materials : Banner Up"); categoryMap.put("LocalTradeshowsEventTools : BannerUp Base (for dual-sided graphics)", "Field Day \\/ Tradeshow \\/ Event Materials : Banner Up"); categoryMap.put("LocalTradeshowsEventTools : BannerUp Base (for single-sided graphics)", "Field Day \\/ Tradeshow \\/ Event Materials : Banner Up");