package zh.solr.se.indexer; import zh.solr.se.indexer.chinese.ChineseIndexer; import zh.solr.se.indexer.solrproxy.SolrConstants; import zh.solr.se.indexer.solrproxy.UnsupportedCoreException; public class IndexerMain { private void run(final String coreName, String dataType, String sourceFile) throws Exception { final IndexerBase indexer = getIndexer(coreName, dataType, sourceFile); if (indexer != null) { indexer.startIndexing(); } } private IndexerBase getIndexer(final String coreName, String dataType, String sourceFile) throws UnsupportedCoreException { if (SolrConstants.CORE_NAME_CHINESE.equalsIgnoreCase(coreName)) { return new ChineseIndexer(dataType, sourceFile); } else { throw new UnsupportedCoreException(coreName); } } private void printUsage() { System.out.println("Usage: java -Xms500m -Xmx1500m -cp ./indexer.jar " + IndexerMain.class.getPackage() + " core_name data_type [index_source_file]"); } public static void main(final String[] args) { final IndexerMain instance = new IndexerMain(); String coreName = args[0]; if (!coreName.startsWith("core-")) { coreName = "core-" + coreName; } String dataType = args[1].trim().toLowerCase(); if (dataType.equals("json") || dataType.equals("xml") || dataType.equals("csv")) { if (args.length != 3) { instance.printUsage(); System.exit(1); } String sourceFile = args[2].trim(); try { instance.run(coreName, dataType, sourceFile); System.exit(0); } catch (final Exception e) { // Don't use e.getMessage(), sometimes it returns null System.err.println("Indexer for core: " + coreName + ", failed. Error: " + e); e.printStackTrace(); System.exit(2); } } else if (dataType.equals("mysql")) { try { instance.run(coreName, dataType, null); System.exit(0); } catch (final Exception e) { // Don't use e.getMessage(), sometimes it returns null System.err.println("Indexer for core: " + coreName + ", failed. Error: " + e); e.printStackTrace(); System.exit(2); } } } }