diff --git a/src/org/leolo/rail/BaseProcessingThread.java b/src/org/leolo/rail/BaseProcessingThread.java new file mode 100644 index 0000000..759152b --- /dev/null +++ b/src/org/leolo/rail/BaseProcessingThread.java @@ -0,0 +1,57 @@ +package org.leolo.rail; + +import java.io.IOException; + +import org.apache.activemq.transport.stomp.StompConnection; + +public abstract class BaseProcessingThread extends Thread implements AutoCloseable{ + + private boolean isInit = false; + protected StompConnection connection; + private String configPrefix; + + public BaseProcessingThread(String configPrefix) throws Exception { + this.configPrefix = configPrefix; + this.connection = getConnection(); + } + + public abstract void _init(); + + @Override + public abstract void run(); + + public void init() { + _init(); + isInit = true; + } + + private StompConnection getConnection() throws Exception { + StompConnection conn = new StompConnection(); + conn.open( + ConfigurationManager.getInstance().getProperty(configPrefix+".host"), + ConfigurationManager.getInstance().getInt(configPrefix+".port") + ); + conn.connect( + ConfigurationManager.getInstance().getProperty(configPrefix+".user"), + ConfigurationManager.getInstance().getProperty(configPrefix+".pwd") + ); + return conn; + } + + @Override + public void start() { + if(isInit) { + super.start(); + }else { + throw new RuntimeException("Thread not init yet"); + } + } + + @Override + public void close() throws IOException { + connection.close(); + connection = null; + } + + +} diff --git a/src/org/leolo/rail/ConfigurationManager.java b/src/org/leolo/rail/ConfigurationManager.java index 71957d4..cb8b4b8 100644 --- a/src/org/leolo/rail/ConfigurationManager.java +++ b/src/org/leolo/rail/ConfigurationManager.java @@ -61,4 +61,14 @@ public class ConfigurationManager { public boolean containsKey(Object key) { return prop.containsKey(key); } + + public int getInt(String key) { + return getInt(key, 0); + } + + public int getInt(String key, int defaultValue) { + if(prop.containsKey(key)) + return Integer.parseInt(prop.getProperty(key)); + return defaultValue; + } } diff --git a/src/org/leolo/rail/Constants.java b/src/org/leolo/rail/Constants.java index 313a88f..830191b 100644 --- a/src/org/leolo/rail/Constants.java +++ b/src/org/leolo/rail/Constants.java @@ -4,8 +4,11 @@ public class Constants { public static class NetworkRail{ + public static final String TOPIC_BASE_PATH = "/topic/"; + public static final String TOPIC_NAME_VTSP = "VSTP_ALL"; + } } diff --git a/src/org/leolo/rail/DatabaseManager.java b/src/org/leolo/rail/DatabaseManager.java index 719a979..8a2ae92 100644 --- a/src/org/leolo/rail/DatabaseManager.java +++ b/src/org/leolo/rail/DatabaseManager.java @@ -44,6 +44,7 @@ public class DatabaseManager { log.info("Connecting to DB {} as {}", url, cm.get("db.user")); try { ds = new MariaDbPoolDataSource(url); + ds.setMinPoolSize(1); ds.setMaxPoolSize(Integer.parseInt(cm.getOrDefault("db.poolsize", "20").toString())); ds.setUser(cm.getProperty("db.user").toString()); ds.setPassword(cm.getProperty("db.pwd").toString()); @@ -80,23 +81,6 @@ public class DatabaseManager { return conn; } - @Deprecated - public void clear() { - try( - Connection conn = getConnection(); - Statement stmt = conn.createStatement(); - ){ - stmt.execute("TRUNCATE TABLE train_assoc"); - stmt.execute("TRUNCATE TABLE tiploc"); - stmt.execute("TRUNCATE TABLE train_schedule"); - stmt.execute("TRUNCATE TABLE train_schedule_detail"); - stmt.execute("TRUNCATE TABLE train_schedule_location"); - stmt.execute("TRUNCATE TABLE train_error"); - }catch(SQLException e) { - log.error(e.getMessage(), e); - } - } - public void shutdown() { ds.close(); } diff --git a/src/org/leolo/rail/NRDataDamon.java b/src/org/leolo/rail/NRDataDamon.java index d2dab9c..051c14a 100644 --- a/src/org/leolo/rail/NRDataDamon.java +++ b/src/org/leolo/rail/NRDataDamon.java @@ -1,5 +1,12 @@ package org.leolo.rail; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.UnknownHostException; + +import org.apache.activemq.transport.stomp.StompConnection; +import org.apache.activemq.transport.stomp.StompFrame; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.quartz.Scheduler; @@ -29,6 +36,21 @@ public class NRDataDamon { // TODO Auto-generated catch block e.printStackTrace(); } + NRDataDamon ndd = new NRDataDamon(); + ndd.init(); + try { + ndd.run(); + } catch (Exception e) { + log.error(e.getMessage(), e); + System.exit(-1); + } } + public void init() { + + } + + public void run() throws Exception{ + + } }