database engine started
This commit is contained in:
@ -7,5 +7,6 @@
|
|||||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/quick-json-1.0.2.3.jar"/>
|
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/quick-json-1.0.2.3.jar"/>
|
||||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/log4j-core-2.9.1.jar"/>
|
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/log4j-core-2.9.1.jar"/>
|
||||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/log4j-api-2.9.1.jar"/>
|
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/log4j-api-2.9.1.jar"/>
|
||||||
|
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/mysql-connector-java-5.1.44-bin.jar"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
BIN
bin/de/hottis/MeasurementCollector/DatabaseEngine.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/DatabaseEngine.class
Normal file
Binary file not shown.
BIN
bin/de/hottis/MeasurementCollector/ITriggerable.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/ITriggerable.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/de/hottis/MeasurementCollector/TriggerTimer.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/TriggerTimer.class
Normal file
Binary file not shown.
@ -2,7 +2,7 @@
|
|||||||
<Configuration debug="false">
|
<Configuration debug="false">
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="ConsoleAppender" target="SYSTEM_OUT">
|
<Console name="ConsoleAppender" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n%throwable"/>
|
<PatternLayout pattern="%d [%t, %F, %L] %-5level - %msg%n%throwable"/>
|
||||||
</Console>
|
</Console>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
|
BIN
libraries/mysql-connector-java-5.1.44-bin.jar
Normal file
BIN
libraries/mysql-connector-java-5.1.44-bin.jar
Normal file
Binary file not shown.
80
src/de/hottis/MeasurementCollector/DatabaseEngine.java
Normal file
80
src/de/hottis/MeasurementCollector/DatabaseEngine.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package de.hottis.MeasurementCollector;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Timer;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
public class DatabaseEngine extends Thread implements ITriggerable {
|
||||||
|
final protected Logger logger = LogManager.getRootLogger();
|
||||||
|
|
||||||
|
private Properties config;
|
||||||
|
private DataObjectQueue queue;
|
||||||
|
private boolean stop;
|
||||||
|
private boolean triggerFlag;
|
||||||
|
private Timer timer;
|
||||||
|
|
||||||
|
public DatabaseEngine(Properties config, DataObjectQueue queue) {
|
||||||
|
super("MeasurementCollector.DatabaseEngine");
|
||||||
|
this.config = config;
|
||||||
|
this.queue = queue;
|
||||||
|
this.stop = false;
|
||||||
|
this.triggerFlag = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requestShutdown() {
|
||||||
|
logger.info("Shutdown of database engine requested");
|
||||||
|
this.stop = true;
|
||||||
|
try {
|
||||||
|
this.join();
|
||||||
|
logger.info("Database engine is down");
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
logger.error("Waiting for shutdown of database engine interrupted");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void trigger() {
|
||||||
|
logger.debug("DatabaseEngine triggered");
|
||||||
|
triggerFlag = true;
|
||||||
|
notify();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init() {
|
||||||
|
timer = new Timer("DatabaseEngineTrigger");
|
||||||
|
timer.schedule(new TriggerTimer(this), 0, 60 * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void run() {
|
||||||
|
while (! stop) {
|
||||||
|
logger.debug("DatabaseEngine is about to wait");
|
||||||
|
while (! triggerFlag) {
|
||||||
|
try {
|
||||||
|
wait();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
triggerFlag = false;
|
||||||
|
logger.debug("DatabaseEngine has received trigger");
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (true) {
|
||||||
|
List<ADataObject> adol = queue.peek();
|
||||||
|
if (adol == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ADataObject ado : adol) {
|
||||||
|
logger.debug(ado);
|
||||||
|
}
|
||||||
|
|
||||||
|
queue.remove(adol);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Exception in outer database engine loop", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
src/de/hottis/MeasurementCollector/ITriggerable.java
Normal file
5
src/de/hottis/MeasurementCollector/ITriggerable.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package de.hottis.MeasurementCollector;
|
||||||
|
|
||||||
|
public interface ITriggerable {
|
||||||
|
public void trigger();
|
||||||
|
}
|
@ -81,12 +81,12 @@ public class MBusParser extends AMessageParser {
|
|||||||
if (dataParsers.containsKey(name)) {
|
if (dataParsers.containsKey(name)) {
|
||||||
List<ADataObject> measurementItems = dataParsers.get(name).parse(timestamp, dataRecords);
|
List<ADataObject> measurementItems = dataParsers.get(name).parse(timestamp, dataRecords);
|
||||||
|
|
||||||
for (ADataObject ado : measurementItems) {
|
//for (ADataObject ado : measurementItems) {
|
||||||
logger.debug(ado);
|
// logger.debug(ado);
|
||||||
}
|
//}
|
||||||
|
|
||||||
queue.add(measurementItems);
|
queue.add(measurementItems);
|
||||||
logger.debug("Queue size: " + queue.size());
|
//logger.debug("Queue size: " + queue.size());
|
||||||
} else {
|
} else {
|
||||||
logger.warn("unknown name: " + name);
|
logger.warn("unknown name: " + name);
|
||||||
}
|
}
|
||||||
|
@ -16,17 +16,24 @@ public class MeasurementCollector {
|
|||||||
|
|
||||||
final Properties config = new Properties();
|
final Properties config = new Properties();
|
||||||
config.load(MeasurementCollector.class.getClassLoader().getResourceAsStream(PROPS_FILENAME));
|
config.load(MeasurementCollector.class.getClassLoader().getResourceAsStream(PROPS_FILENAME));
|
||||||
|
logger.debug("Configuration loaded");
|
||||||
|
|
||||||
MqttReceiver mqttReceiver = new MqttReceiver(config);
|
MqttReceiver mqttReceiver = new MqttReceiver(config);
|
||||||
mqttReceiver.connect();
|
mqttReceiver.connect();
|
||||||
|
logger.debug("MqttReceiver started");
|
||||||
|
|
||||||
DataObjectQueue queue = new DataObjectQueue();
|
DataObjectQueue queue = new DataObjectQueue();
|
||||||
|
logger.debug("Queue instantiated");
|
||||||
|
|
||||||
MBusParser mbusParser = new MBusParser(config, queue);
|
MBusParser mbusParser = new MBusParser(config, queue);
|
||||||
mbusParser.registerConfiguredDataParsers();
|
mbusParser.registerConfiguredDataParsers();
|
||||||
mqttReceiver.registerParser(mbusParser);
|
mqttReceiver.registerParser(mbusParser);
|
||||||
|
logger.debug("MBusParser started");
|
||||||
|
|
||||||
|
DatabaseEngine databaseEngine = new DatabaseEngine(config, queue);
|
||||||
|
databaseEngine.init();
|
||||||
|
databaseEngine.start();
|
||||||
|
logger.debug("DatabaseEngine started");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
15
src/de/hottis/MeasurementCollector/TriggerTimer.java
Normal file
15
src/de/hottis/MeasurementCollector/TriggerTimer.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package de.hottis.MeasurementCollector;
|
||||||
|
|
||||||
|
import java.util.TimerTask;
|
||||||
|
|
||||||
|
public class TriggerTimer extends TimerTask {
|
||||||
|
private ITriggerable triggerable;
|
||||||
|
|
||||||
|
public TriggerTimer(ITriggerable triggerable) {
|
||||||
|
this.triggerable = triggerable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
triggerable.trigger();
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
<Configuration debug="false">
|
<Configuration debug="false">
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="ConsoleAppender" target="SYSTEM_OUT">
|
<Console name="ConsoleAppender" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n%throwable"/>
|
<PatternLayout pattern="%d [%t, %F, %L] %-5level - %msg%n%throwable"/>
|
||||||
</Console>
|
</Console>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
|
Reference in New Issue
Block a user