Browse Source

Skeleton to process messages

develop
LO Kam Tao Leo 4 years ago
parent
commit
17c99e6a5e
  1. 57
      src/org/leolo/rail/BaseProcessingThread.java
  2. 10
      src/org/leolo/rail/ConfigurationManager.java
  3. 3
      src/org/leolo/rail/Constants.java
  4. 18
      src/org/leolo/rail/DatabaseManager.java
  5. 22
      src/org/leolo/rail/NRDataDamon.java

57
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;
}
}

10
src/org/leolo/rail/ConfigurationManager.java

@ -61,4 +61,14 @@ public class ConfigurationManager {
public boolean containsKey(Object key) { public boolean containsKey(Object key) {
return prop.containsKey(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;
}
} }

3
src/org/leolo/rail/Constants.java

@ -4,8 +4,11 @@ public class Constants {
public static class NetworkRail{ public static class NetworkRail{
public static final String TOPIC_BASE_PATH = "/topic/";
public static final String TOPIC_NAME_VTSP = "VSTP_ALL"; public static final String TOPIC_NAME_VTSP = "VSTP_ALL";
} }
} }

18
src/org/leolo/rail/DatabaseManager.java

@ -44,6 +44,7 @@ public class DatabaseManager {
log.info("Connecting to DB {} as {}", url, cm.get("db.user")); log.info("Connecting to DB {} as {}", url, cm.get("db.user"));
try { try {
ds = new MariaDbPoolDataSource(url); ds = new MariaDbPoolDataSource(url);
ds.setMinPoolSize(1);
ds.setMaxPoolSize(Integer.parseInt(cm.getOrDefault("db.poolsize", "20").toString())); ds.setMaxPoolSize(Integer.parseInt(cm.getOrDefault("db.poolsize", "20").toString()));
ds.setUser(cm.getProperty("db.user").toString()); ds.setUser(cm.getProperty("db.user").toString());
ds.setPassword(cm.getProperty("db.pwd").toString()); ds.setPassword(cm.getProperty("db.pwd").toString());
@ -80,23 +81,6 @@ public class DatabaseManager {
return conn; 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() { public void shutdown() {
ds.close(); ds.close();
} }

22
src/org/leolo/rail/NRDataDamon.java

@ -1,5 +1,12 @@
package org.leolo.rail; 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.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.quartz.Scheduler; import org.quartz.Scheduler;
@ -29,6 +36,21 @@ public class NRDataDamon {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); 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{
}
} }

Loading…
Cancel
Save