11package de .komoot .photon ;
22
3-
43import com .beust .jcommander .JCommander ;
54import com .beust .jcommander .ParameterException ;
5+
6+ import de .komoot .photon .elasticsearch .ReplicationUpdater ;
7+ import de .komoot .photon .elasticsearch .Replicatior ;
68import de .komoot .photon .elasticsearch .Server ;
79import de .komoot .photon .nominatim .NominatimConnector ;
810import de .komoot .photon .nominatim .NominatimUpdater ;
1214import spark .Request ;
1315import spark .Response ;
1416
17+ import java .io .File ;
1518import java .io .FileNotFoundException ;
1619import java .io .IOException ;
1720
1821import static spark .Spark .*;
1922
20-
2123@ Slf4j
2224public class App {
2325
@@ -47,6 +49,11 @@ public static void main(String[] rawArgs) throws Exception {
4749 return ;
4850 }
4951
52+ if (args .isReplicate ()) {
53+ startReplicationUpdate (args );
54+ return ;
55+ }
56+
5057 boolean shutdownES = false ;
5158 final Server esServer = new Server (args ).start ();
5259 try {
@@ -67,11 +74,11 @@ public static void main(String[] rawArgs) throws Exception {
6774 // no special action specified -> normal mode: start search API
6875 startApi (args , esClient );
6976 } finally {
70- if (shutdownES ) esServer .shutdown ();
77+ if (shutdownES )
78+ esServer .shutdown ();
7179 }
7280 }
7381
74-
7582 /**
7683 * dump elastic search index and create a new and empty one
7784 *
@@ -87,7 +94,6 @@ private static void startRecreatingIndex(Server esServer) {
8794 log .info ("deleted photon index and created an empty new one." );
8895 }
8996
90-
9197 /**
9298 * take nominatim data and dump it to json
9399 *
@@ -97,7 +103,8 @@ private static void startJsonDump(CommandLineArgs args) {
97103 try {
98104 final String filename = args .getJsonDump ();
99105 final JsonDumper jsonDumper = new JsonDumper (filename , args .getLanguages ());
100- NominatimConnector nominatimConnector = new NominatimConnector (args .getHost (), args .getPort (), args .getDatabase (), args .getUser (), args .getPassword ());
106+ NominatimConnector nominatimConnector = new NominatimConnector (args .getHost (), args .getPort (), args .getDatabase (), args .getUser (),
107+ args .getPassword ());
101108 nominatimConnector .setImporter (jsonDumper );
102109 nominatimConnector .readEntireDatabase (args .getCountryCodes ().split ("," ));
103110 log .info ("json dump was created: " + filename );
@@ -106,7 +113,6 @@ private static void startJsonDump(CommandLineArgs args) {
106113 }
107114 }
108115
109-
110116 /**
111117 * take nominatim data to fill elastic search index
112118 *
@@ -130,11 +136,22 @@ private static void startNominatimImport(CommandLineArgs args, Server esServer,
130136 log .info ("imported data from nominatim to photon with languages: " + args .getLanguages ());
131137 }
132138
139+ /**
140+ * Run generation of replication files once
141+ *
142+ * @param args the arguments from the command line
143+ */
144+ private static void startReplicationUpdate (CommandLineArgs args ) {
145+ final NominatimUpdater nominatimUpdater = new NominatimUpdater (args .getHost (), args .getPort (), args .getDatabase (), args .getUser (), args .getPassword ());
146+ Updater updater = new ReplicationUpdater (new File (args .getReplicationDirectory ()), null );
147+ nominatimUpdater .setUpdater (updater );
148+ nominatimUpdater .update ();
149+ }
133150
134151 /**
135152 * start api to accept search requests via http
136153 *
137- * @param args
154+ * @param args the arguments from the command line
138155 * @param esNodeClient
139156 */
140157 private static void startApi (CommandLineArgs args , Client esNodeClient ) {
@@ -159,11 +176,19 @@ private static void startApi(CommandLineArgs args, Client esNodeClient) {
159176 // setup update API
160177 final NominatimUpdater nominatimUpdater = new NominatimUpdater (args .getHost (), args .getPort (), args .getDatabase (), args .getUser (), args .getPassword ());
161178 Updater updater = new de .komoot .photon .elasticsearch .Updater (esNodeClient , args .getLanguages ());
162- nominatimUpdater .setUpdater (updater );
163-
164- get ("/nominatim-update" , (Request request , Response response ) -> {
165- new Thread (() -> nominatimUpdater .update ()).start ();
166- return "nominatim update started (more information in console output) ..." ;
167- });
179+ String replicationUrl = args .getReplicationUrl ();
180+ if (replicationUrl == null ) {
181+ if (args .isGenerateFiles ()) {
182+ updater = new ReplicationUpdater (new File (args .getReplicationDirectory ()), updater );
183+ }
184+ nominatimUpdater .setUpdater (updater );
185+ get ("/nominatim-update" , (Request request , Response response ) -> {
186+ new Thread (() -> nominatimUpdater .update ()).start ();
187+ return "nominatim update started (more information in console output) ..." ;
188+ });
189+ } else {
190+ Replicatior replicator = new Replicatior (new File (args .getReplicationDirectory ()), args .getReplicationUrl (), args .getReplicationInterval (), updater );
191+ replicator .start ();
192+ }
168193 }
169194}
0 commit comments