diff --git a/.classpath b/.classpath index 302939a..af1430b 100644 --- a/.classpath +++ b/.classpath @@ -1,14 +1,26 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index 5887986..c98ff59 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ MeasurementCollectorMqttReceiver-* +target + diff --git a/.project b/.project index e8a8959..e188ccb 100644 --- a/.project +++ b/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 3a21537..714351a 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,11 +1,5 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/bin/de/hottis/measurementCollector/ADataObject.class b/bin/de/hottis/measurementCollector/ADataObject.class deleted file mode 100644 index 6f59984..0000000 Binary files a/bin/de/hottis/measurementCollector/ADataObject.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/ADataParser.class b/bin/de/hottis/measurementCollector/ADataParser.class deleted file mode 100644 index 6541422..0000000 Binary files a/bin/de/hottis/measurementCollector/ADataParser.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/AMessageParser.class b/bin/de/hottis/measurementCollector/AMessageParser.class deleted file mode 100644 index 2c5ef96..0000000 Binary files a/bin/de/hottis/measurementCollector/AMessageParser.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/DatabaseEngine.class b/bin/de/hottis/measurementCollector/DatabaseEngine.class deleted file mode 100644 index aefe6bd..0000000 Binary files a/bin/de/hottis/measurementCollector/DatabaseEngine.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/ElectricEnergyDataObject.class b/bin/de/hottis/measurementCollector/ElectricEnergyDataObject.class deleted file mode 100644 index c1ef562..0000000 Binary files a/bin/de/hottis/measurementCollector/ElectricEnergyDataObject.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/FinderOnePhasePowerMeter.class b/bin/de/hottis/measurementCollector/FinderOnePhasePowerMeter.class deleted file mode 100644 index 3da2311..0000000 Binary files a/bin/de/hottis/measurementCollector/FinderOnePhasePowerMeter.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/FinderThreePhasePowerMeter.class b/bin/de/hottis/measurementCollector/FinderThreePhasePowerMeter.class deleted file mode 100644 index 517990c..0000000 Binary files a/bin/de/hottis/measurementCollector/FinderThreePhasePowerMeter.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/HottisFourChannelThermometer.class b/bin/de/hottis/measurementCollector/HottisFourChannelThermometer.class deleted file mode 100644 index bf31ea2..0000000 Binary files a/bin/de/hottis/measurementCollector/HottisFourChannelThermometer.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/ITriggerable.class b/bin/de/hottis/measurementCollector/ITriggerable.class deleted file mode 100644 index 6f6cfa8..0000000 Binary files a/bin/de/hottis/measurementCollector/ITriggerable.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/JmsTopic$Mode.class b/bin/de/hottis/measurementCollector/JmsTopic$Mode.class deleted file mode 100644 index aa9c13a..0000000 Binary files a/bin/de/hottis/measurementCollector/JmsTopic$Mode.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/JmsTopic.class b/bin/de/hottis/measurementCollector/JmsTopic.class deleted file mode 100644 index 334e71d..0000000 Binary files a/bin/de/hottis/measurementCollector/JmsTopic.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MBusParser.class b/bin/de/hottis/measurementCollector/MBusParser.class deleted file mode 100644 index 47c4044..0000000 Binary files a/bin/de/hottis/measurementCollector/MBusParser.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MeasurementCollector.class b/bin/de/hottis/measurementCollector/MeasurementCollector.class deleted file mode 100644 index 2d1310d..0000000 Binary files a/bin/de/hottis/measurementCollector/MeasurementCollector.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MeasurementCollectorException.class b/bin/de/hottis/measurementCollector/MeasurementCollectorException.class deleted file mode 100644 index fdce709..0000000 Binary files a/bin/de/hottis/measurementCollector/MeasurementCollectorException.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MeasurementDatabaseEngine.class b/bin/de/hottis/measurementCollector/MeasurementDatabaseEngine.class deleted file mode 100644 index 01d6297..0000000 Binary files a/bin/de/hottis/measurementCollector/MeasurementDatabaseEngine.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MqttReceiver$Callback.class b/bin/de/hottis/measurementCollector/MqttReceiver$Callback.class deleted file mode 100644 index 39e91f5..0000000 Binary files a/bin/de/hottis/measurementCollector/MqttReceiver$Callback.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MqttReceiver.class b/bin/de/hottis/measurementCollector/MqttReceiver.class deleted file mode 100644 index 09ad6f3..0000000 Binary files a/bin/de/hottis/measurementCollector/MqttReceiver.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/MyQueue.class b/bin/de/hottis/measurementCollector/MyQueue.class deleted file mode 100644 index 7f5fed1..0000000 Binary files a/bin/de/hottis/measurementCollector/MyQueue.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/TemperatureDataObject.class b/bin/de/hottis/measurementCollector/TemperatureDataObject.class deleted file mode 100644 index f5d9860..0000000 Binary files a/bin/de/hottis/measurementCollector/TemperatureDataObject.class and /dev/null differ diff --git a/bin/de/hottis/measurementCollector/TriggerTimer.class b/bin/de/hottis/measurementCollector/TriggerTimer.class deleted file mode 100644 index 68c07bc..0000000 Binary files a/bin/de/hottis/measurementCollector/TriggerTimer.class and /dev/null differ diff --git a/bin/measurementDataEngine.props b/bin/measurementDataEngine.props deleted file mode 100644 index 7310c4e..0000000 --- a/bin/measurementDataEngine.props +++ /dev/null @@ -1,9 +0,0 @@ -db.period = 3600 -db.url = jdbc:mysql://localhost/smarthome -db.driver = com.mysql.jdbc.Driver -db.user = smarthome -db.password = smarthome123 - -jms.broker = tcp://localhost:61616 -jms.clientid = mdb -jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/libraries/activemq-client-5.15.2.jar b/libraries/activemq-client-5.15.2.jar deleted file mode 100644 index 705e166..0000000 Binary files a/libraries/activemq-client-5.15.2.jar and /dev/null differ diff --git a/libraries/geronimo-j2ee-management_1.1_spec-1.0.1.jar b/libraries/geronimo-j2ee-management_1.1_spec-1.0.1.jar deleted file mode 100644 index 0701ae0..0000000 Binary files a/libraries/geronimo-j2ee-management_1.1_spec-1.0.1.jar and /dev/null differ diff --git a/libraries/geronimo-jms_1.1_spec-1.1.1.jar b/libraries/geronimo-jms_1.1_spec-1.1.1.jar deleted file mode 100644 index 4f5e646..0000000 Binary files a/libraries/geronimo-jms_1.1_spec-1.1.1.jar and /dev/null differ diff --git a/libraries/hawtbuf-1.11.jar b/libraries/hawtbuf-1.11.jar deleted file mode 100644 index c7042a6..0000000 Binary files a/libraries/hawtbuf-1.11.jar and /dev/null differ diff --git a/libraries/jmbus-3.0.1.jar b/libraries/jmbus-3.0.1.jar deleted file mode 100644 index 966c683..0000000 Binary files a/libraries/jmbus-3.0.1.jar and /dev/null differ diff --git a/libraries/log4j-api-2.9.1.jar b/libraries/log4j-api-2.9.1.jar deleted file mode 100644 index b1d1b76..0000000 Binary files a/libraries/log4j-api-2.9.1.jar and /dev/null differ diff --git a/libraries/log4j-core-2.9.1.jar b/libraries/log4j-core-2.9.1.jar deleted file mode 100644 index 88cfaed..0000000 Binary files a/libraries/log4j-core-2.9.1.jar and /dev/null differ diff --git a/libraries/mysql-connector-java-5.1.44-bin.jar b/libraries/mysql-connector-java-5.1.44-bin.jar deleted file mode 100644 index 2f2e32d..0000000 Binary files a/libraries/mysql-connector-java-5.1.44-bin.jar and /dev/null differ diff --git a/libraries/org.eclipse.paho.client.mqttv3-1.2.0.jar b/libraries/org.eclipse.paho.client.mqttv3-1.2.0.jar deleted file mode 100644 index e26154e..0000000 Binary files a/libraries/org.eclipse.paho.client.mqttv3-1.2.0.jar and /dev/null differ diff --git a/libraries/quick-json-1.0.2.3.jar b/libraries/quick-json-1.0.2.3.jar deleted file mode 100644 index 5b1af44..0000000 Binary files a/libraries/quick-json-1.0.2.3.jar and /dev/null differ diff --git a/libraries/slf4j-api-1.7.25.jar b/libraries/slf4j-api-1.7.25.jar deleted file mode 100644 index 0143c09..0000000 Binary files a/libraries/slf4j-api-1.7.25.jar and /dev/null differ diff --git a/bin/measurementCollector.props b/measurementCollector.props similarity index 100% rename from bin/measurementCollector.props rename to measurementCollector.props diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..ee57a98 --- /dev/null +++ b/pom.xml @@ -0,0 +1,59 @@ + + 4.0.0 + de.hottis.measurementCollector + MeasurementCollector + jar + 1.0-SNAPSHOT + MeasurementCollector + http://maven.apache.org + + 1.8 + 1.8 + + + + junit + junit + 3.8.1 + test + + + de.hottis.common + HottisLibJava + 1.0-SNAPSHOT + + + de.hottis.smarthomelib + SmarthomeLib + 1.0-SNAPSHOT + + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + 1.2.0 + + + org.openmuc + jmbus + 3.0.1 + + + + + + maven-assembly-plugin + + + + de.hottis.measurementCollector.MeasurementCollector + + + + jar-with-dependencies + + + + + + diff --git a/src/de/hottis/measurementCollector/ADataObject.java b/src/de/hottis/measurementCollector/ADataObject.java deleted file mode 100644 index 2feb296..0000000 --- a/src/de/hottis/measurementCollector/ADataObject.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.hottis.measurementCollector; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Map; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public abstract class ADataObject implements Serializable { - private static final long serialVersionUID = 1L; - - final protected Logger logger = LogManager.getRootLogger(); - - private LocalDateTime timestamp; - private String name; - private Map values; - - public ADataObject(LocalDateTime timestamp, String name) { - this.timestamp = timestamp; - this.name = name; - } - - public void setValues(Map values) { - this.values = values; - } - - abstract public String getTableName(); - - public LocalDateTime getTimestamp() { - return timestamp; - } - - public Map getValues() { - return values; - } - - public String getName() { - return name; - } - - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append("<"); - sb.append(name); - sb.append(", "); - sb.append(timestamp); - sb.append(", "); - sb.append(values.toString()); - sb.append(">"); - return sb.toString(); - } -} diff --git a/src/de/hottis/measurementCollector/DatabaseEngine.java b/src/de/hottis/measurementCollector/DatabaseEngine.java deleted file mode 100644 index 1fe6bbe..0000000 --- a/src/de/hottis/measurementCollector/DatabaseEngine.java +++ /dev/null @@ -1,185 +0,0 @@ -package de.hottis.measurementCollector; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.Timestamp; -import java.time.LocalDateTime; -import java.util.HashMap; -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 { - static final String DATABASE_ENGINE_PERIOD_PROP = "db.period"; - static final String DATABASE_URL_PROP = "db.url"; - static final String DATABASE_USER_PROP = "db.user"; - static final String DATABASE_PASSWORD_PROP = "db.password"; - static final String DATABASE_DRIVER_PROP = "db.driver"; - - final protected Logger logger = LogManager.getRootLogger(); - - private Properties config; - private MyQueue queue; - private boolean stop; - private boolean triggerFlag; - private Timer timer; - private int period; - private String dbUrl; - private String dbUsername; - private String dbPassword; - - public DatabaseEngine(Properties config, MyQueue queue) { - super("MeasurementCollector.DatabaseEngine"); - this.config = config; - this.queue = queue; - this.stop = false; - this.triggerFlag = false; - this.period = Integer.parseInt(this.config.getProperty(DATABASE_ENGINE_PERIOD_PROP)); - this.dbUrl = this.config.getProperty(DATABASE_URL_PROP); - this.dbUsername = this.config.getProperty(DATABASE_USER_PROP); - this.dbPassword = this.config.getProperty(DATABASE_PASSWORD_PROP); - } - - 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() throws MeasurementCollectorException { - timer = new Timer("DatabaseEngineTrigger"); - timer.schedule(new TriggerTimer(this), 0, period * 1000); - try { - Class.forName(config.getProperty(DATABASE_DRIVER_PROP)); - } catch (ClassNotFoundException e) { - logger.error("Database driver class not found", e); - throw new MeasurementCollectorException("Database driver class not found", e); - } - } - - private String createStatementFromDataObject(ADataObject ado) { - StringBuffer sb = new StringBuffer(); - sb.append("INSERT INTO " + ado.getTableName()); - sb.append("(name,ts,"); - sb.append(String.join(",", ado.getValues().keySet())); - sb.append(") "); - sb.append("VALUES(?,?,"); - - String[] marks = (String[]) ado.getValues().values().stream() - .map(c -> "?") - .toArray(String[]::new); - sb.append(String.join(",", marks)); - - sb.append(")"); - return sb.toString(); - } - - private void bindValue(PreparedStatement pstmt, int pos, Object o) throws SQLException { - if (o instanceof Integer) { - pstmt.setInt(pos, (Integer)o); - } else if (o instanceof Byte) { - pstmt.setByte(pos, (Byte)o); - } else if (o instanceof Double) { - pstmt.setDouble(pos, (Double)o); - } else if (o instanceof String) { - pstmt.setString(pos, (String)o); - } else if (o instanceof LocalDateTime) { - pstmt.setTimestamp(pos, Timestamp.valueOf(((LocalDateTime)o))); - } else { - throw new SQLException("illegal parameter type: " + o.getClass().getName()); - } - } - - - @Override - public synchronized void run() { - while (! stop) { - logger.debug("DatabaseEngine is about to wait for (regularly) " + period + "s"); - while (! triggerFlag) { - try { - wait(); - } catch (InterruptedException e) { - } - } - triggerFlag = false; - logger.debug("DatabaseEngine has received trigger"); - - Connection dbCon = null; - HashMap preparedStatements = new HashMap(); - try { - int itemCnt = 0; - - while (true) { - try { - ADataObject ado = queue.dequeue(); - if (ado == null) { - logger.warn("DatabaseEngine found no data"); - break; - } - dbCon = DriverManager.getConnection(dbUrl, dbUsername, dbPassword); - - String key = ado.getClass().getName(); - PreparedStatement pstmt; - if (! preparedStatements.containsKey(key)) { - pstmt = dbCon.prepareStatement(createStatementFromDataObject(ado)); - preparedStatements.put(key, pstmt); - } else { - pstmt = preparedStatements.get(key); - } - bindValue(pstmt, 1, ado.getName()); - bindValue(pstmt, 2, ado.getTimestamp()); - int pos = 3; - for (Object o : ado.getValues().values()) { - bindValue(pstmt, pos, o); - pos++; - } - itemCnt++; - logger.info("DatabaseEngine received (" + itemCnt + ") " + ado); - logger.info("Statement is " + pstmt.toString()); - pstmt.execute(); - logger.info("Database insert executed"); - pstmt.clearParameters(); - } catch (SQLException e) { - logger.error("SQLException in inner database engine loop", e); - } - } - } catch (Exception e) { - logger.error("Exception in outer database engine loop", e); - } finally { - for (PreparedStatement p : preparedStatements.values()) { - try { - p.close(); - } catch (SQLException e) { - logger.warn("SQLException when closing prepared statement, nothing will be done"); - } - } - preparedStatements.clear(); - if (dbCon != null) { - try { - dbCon.close(); - } catch (SQLException e) { - logger.warn("SQLException when closing connection, nothing will be done"); - } finally { - dbCon = null; - } - } - } - } - logger.info("Database engine is terminating"); - } -} diff --git a/src/de/hottis/measurementCollector/ElectricEnergyDataObject.java b/src/de/hottis/measurementCollector/ElectricEnergyDataObject.java deleted file mode 100644 index cc0439e..0000000 --- a/src/de/hottis/measurementCollector/ElectricEnergyDataObject.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.hottis.measurementCollector; - -import java.time.LocalDateTime; -import java.util.HashMap; - -public class ElectricEnergyDataObject extends ADataObject { - private static final long serialVersionUID = 1L; - static final String ENERGY_KEY = "energy"; - static final String POWER_KEY = "power"; - static final String TABLE_NAME = "ElectricEnergy"; - - public ElectricEnergyDataObject(LocalDateTime timestamp, String name, double energy, double power) { - super(timestamp, name); - HashMap values = new HashMap(); - values.put(ENERGY_KEY, energy); - values.put(POWER_KEY, power); - setValues(values); - } - - @Override - public String getTableName() { - return TABLE_NAME; - } -} diff --git a/src/de/hottis/measurementCollector/ITriggerable.java b/src/de/hottis/measurementCollector/ITriggerable.java deleted file mode 100644 index c1e2cef..0000000 --- a/src/de/hottis/measurementCollector/ITriggerable.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.hottis.measurementCollector; - -public interface ITriggerable { - public void trigger(); -} diff --git a/src/de/hottis/measurementCollector/JmsTopic.java b/src/de/hottis/measurementCollector/JmsTopic.java deleted file mode 100644 index 9abcfc1..0000000 --- a/src/de/hottis/measurementCollector/JmsTopic.java +++ /dev/null @@ -1,124 +0,0 @@ -package de.hottis.measurementCollector; - -import java.io.Serializable; -import java.util.Properties; - -import javax.jms.Connection; -import javax.jms.DeliveryMode; -import javax.jms.JMSException; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.ObjectMessage; -import javax.jms.Session; -import javax.jms.Topic; - -import org.apache.activemq.ActiveMQConnectionFactory; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class JmsTopic implements MyQueue { - static final String JMS_PARSED_DATA_TOPIC = "jms.parseddata.topic"; - static final String JMS_CLIENTID_PROP = "jms.clientid"; - static final String JMS_BROKER ="jms.broker"; - - static enum Mode { CONSUMER, PRODUCER, CONSUMER_PRODUCER }; - - final protected Logger logger = LogManager.getRootLogger(); - - private String clientId; - private Properties config; - private Connection connection; - private Session session; - private Topic topic; - private MessageProducer producer; - private MessageConsumer consumer; - private String topicTxt; - private String broker; - private Mode mode; - - public JmsTopic(Properties config, Mode mode) { - this.config = config; - clientId = this.config.getProperty(JMS_CLIENTID_PROP); - topicTxt = this.config.getProperty(JMS_PARSED_DATA_TOPIC); - broker = this.config.getProperty(JMS_BROKER); - this.mode = mode; - } - - - public void init() throws MeasurementCollectorException { - try { - ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(broker); - connectionFactory.setTrustAllPackages(true); - logger.debug("connectionFactory: " + connectionFactory); - connection = connectionFactory.createConnection(); - connection.setClientID(clientId); - connection.start(); - logger.debug("connection: " + connection); - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - logger.debug("session: " + session); - topic = session.createTopic(topicTxt); - logger.debug("topic: " + topic); - - if ((mode == Mode.PRODUCER) || (mode == Mode.CONSUMER_PRODUCER)) { - producer = session.createProducer(topic); - producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); - logger.debug("producer: " + producer); - } else { - producer = null; - } - - if ((mode == Mode.CONSUMER) || (mode == Mode.CONSUMER_PRODUCER)) { - consumer = session.createDurableSubscriber(topic, "DatabaseEngine"); - logger.debug("consumer: " + consumer); - } else { - consumer = null; - } - - } catch (JMSException e) { - logger.error("JMSException in AJmsQueue.init", e); - throw new MeasurementCollectorException("JMSException in AJmsTopic.init", e); - } - } - - public T dequeue() throws MeasurementCollectorException { - if (consumer == null) { - throw new MeasurementCollectorException("This is no consumer"); - } - try { - ObjectMessage message = (ObjectMessage) consumer.receiveNoWait(); - T item; - if (message != null) { - @SuppressWarnings("unchecked") - T t = (T) message.getObject(); - item = t; - logger.debug("message dequeued"); - } else { - item = null; - } - return item; - } catch (JMSException e) { - logger.error("JMSException in JmsTopic.dequeue", e); - logger.error("Calling init"); - init(); - throw new MeasurementCollectorException("JMSException in JmsTopic.dequeue", e); - } - } - - public void enqueue(T item) throws MeasurementCollectorException { - if (producer == null) { - throw new MeasurementCollectorException("This is no producer"); - } - try { - ObjectMessage message = session.createObjectMessage(); - message.setObject(item); - producer.send(message); - logger.debug("message enqueued"); - } catch (JMSException e) { - logger.error("JMSException in JmsTopic.enqueue", e); - logger.error("Calling init"); - init(); - throw new MeasurementCollectorException("JMSException in JmsTopic.enqueue", e); - } - } - -} diff --git a/src/de/hottis/measurementCollector/MeasurementCollectorException.java b/src/de/hottis/measurementCollector/MeasurementCollectorException.java deleted file mode 100644 index a0db89c..0000000 --- a/src/de/hottis/measurementCollector/MeasurementCollectorException.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.hottis.measurementCollector; - -@SuppressWarnings("serial") -public class MeasurementCollectorException extends Exception { - public MeasurementCollectorException(String msg, Throwable cause) { - super(msg, cause); - } - - public MeasurementCollectorException(String msg) { - super(msg); - } - -} diff --git a/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java b/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java deleted file mode 100644 index 9797dd9..0000000 --- a/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.hottis.measurementCollector; - -import java.util.Properties; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - - -public class MeasurementDatabaseEngine { - static final String PROPS_FILENAME = "measurementDataEngine.props"; - static final Logger logger = LogManager.getRootLogger(); - - - public static void main(String[] args) throws Exception { - logger.info("MeasurementDatabaseEngine starting"); - - final Properties config = new Properties(); - config.load(MeasurementDatabaseEngine.class.getClassLoader().getResourceAsStream(PROPS_FILENAME)); - logger.debug("Configuration loaded"); - - JmsTopic queue = new JmsTopic(config, JmsTopic.Mode.CONSUMER); - queue.init(); - - DatabaseEngine databaseEngine = new DatabaseEngine(config, queue); - databaseEngine.init(); - databaseEngine.start(); - logger.debug("DatabaseEngine started"); - } - -} diff --git a/src/de/hottis/measurementCollector/MyQueue.java b/src/de/hottis/measurementCollector/MyQueue.java deleted file mode 100644 index d73dfab..0000000 --- a/src/de/hottis/measurementCollector/MyQueue.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.hottis.measurementCollector; - -import java.io.Serializable; - -public interface MyQueue { - public T dequeue() throws MeasurementCollectorException; - public void enqueue(T item) throws MeasurementCollectorException; -} diff --git a/src/de/hottis/measurementCollector/TemperatureDataObject.java b/src/de/hottis/measurementCollector/TemperatureDataObject.java deleted file mode 100644 index 90794a0..0000000 --- a/src/de/hottis/measurementCollector/TemperatureDataObject.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.hottis.measurementCollector; - -import java.time.LocalDateTime; -import java.util.HashMap; - -public class TemperatureDataObject extends ADataObject { - private static final long serialVersionUID = 1L; - static final String TEMPERATURE_KEY = "temperature"; - static final String TABLE_NAME = "Temperature"; - - public TemperatureDataObject(LocalDateTime timestamp, String name, double temperature) { - super(timestamp, name); - HashMap values = new HashMap(); - values.put(TEMPERATURE_KEY, temperature); - setValues(values); - } - - public String getTableName() { - return TABLE_NAME; - } -} diff --git a/src/de/hottis/measurementCollector/TriggerTimer.java b/src/de/hottis/measurementCollector/TriggerTimer.java deleted file mode 100644 index 71aa361..0000000 --- a/src/de/hottis/measurementCollector/TriggerTimer.java +++ /dev/null @@ -1,15 +0,0 @@ -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(); - } -} diff --git a/src/log4j2.xml b/src/log4j2.xml deleted file mode 100644 index 0e87b69..0000000 --- a/src/log4j2.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/de/hottis/measurementCollector/ADataParser.java b/src/main/java/de/hottis/measurementCollector/ADataParser.java similarity index 100% rename from src/de/hottis/measurementCollector/ADataParser.java rename to src/main/java/de/hottis/measurementCollector/ADataParser.java diff --git a/src/de/hottis/measurementCollector/AMessageParser.java b/src/main/java/de/hottis/measurementCollector/AMessageParser.java similarity index 100% rename from src/de/hottis/measurementCollector/AMessageParser.java rename to src/main/java/de/hottis/measurementCollector/AMessageParser.java diff --git a/src/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java b/src/main/java/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java similarity index 100% rename from src/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java rename to src/main/java/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java diff --git a/src/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java b/src/main/java/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java similarity index 100% rename from src/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java rename to src/main/java/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java diff --git a/src/de/hottis/measurementCollector/HottisFourChannelThermometer.java b/src/main/java/de/hottis/measurementCollector/HottisFourChannelThermometer.java similarity index 100% rename from src/de/hottis/measurementCollector/HottisFourChannelThermometer.java rename to src/main/java/de/hottis/measurementCollector/HottisFourChannelThermometer.java diff --git a/src/de/hottis/measurementCollector/MBusParser.java b/src/main/java/de/hottis/measurementCollector/MBusParser.java similarity index 100% rename from src/de/hottis/measurementCollector/MBusParser.java rename to src/main/java/de/hottis/measurementCollector/MBusParser.java diff --git a/src/de/hottis/measurementCollector/MeasurementCollector.java b/src/main/java/de/hottis/measurementCollector/MeasurementCollector.java similarity index 100% rename from src/de/hottis/measurementCollector/MeasurementCollector.java rename to src/main/java/de/hottis/measurementCollector/MeasurementCollector.java diff --git a/src/de/hottis/measurementCollector/MqttReceiver.java b/src/main/java/de/hottis/measurementCollector/MqttReceiver.java similarity index 100% rename from src/de/hottis/measurementCollector/MqttReceiver.java rename to src/main/java/de/hottis/measurementCollector/MqttReceiver.java diff --git a/bin/log4j2.xml b/src/main/resources/log4j2.xml similarity index 100% rename from bin/log4j2.xml rename to src/main/resources/log4j2.xml diff --git a/src/measurementCollector.props b/src/measurementCollector.props deleted file mode 100644 index f4350d7..0000000 --- a/src/measurementCollector.props +++ /dev/null @@ -1,17 +0,0 @@ -mqtt.broker = tcp://172.16.2.15:1883 -;mqtt.broker = tcp://eupenstrasse20.dynamic.hottis.de:2883 -;mqtt.username = tron -;mqtt.password = geheim123 - -mbus.dataparser.1 = light,Light,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.2 = computer,Computer,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.3 = laundry,Laundry,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.4 = dryer,Dryer,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.5 = dishwasher,Dishwasher,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.6 = freezer,Freezer,de.hottis.measurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.7 = electricity,Total,de.hottis.measurementCollector.FinderThreePhasePowerMeter -mbus.dataparser.8 = thermom.,null,de.hottis.measurementCollector.HottisFourChannelThermometer - -jms.broker = tcp://localhost:61616 -jms.clientid = mcol -jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/src/measurementDataEngine.props b/src/measurementDataEngine.props deleted file mode 100644 index 7310c4e..0000000 --- a/src/measurementDataEngine.props +++ /dev/null @@ -1,9 +0,0 @@ -db.period = 3600 -db.url = jdbc:mysql://localhost/smarthome -db.driver = com.mysql.jdbc.Driver -db.user = smarthome -db.password = smarthome123 - -jms.broker = tcp://localhost:61616 -jms.clientid = mdb -jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/src/test/java/de/hottis/measurementCollector/AppTest.java b/src/test/java/de/hottis/measurementCollector/AppTest.java new file mode 100644 index 0000000..644ba77 --- /dev/null +++ b/src/test/java/de/hottis/measurementCollector/AppTest.java @@ -0,0 +1,38 @@ +package de.hottis.measurementCollector; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/start.sh b/start.sh deleted file mode 100755 index 118d4e0..0000000 --- a/start.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -PWD=`pwd` -CLASSPATH=$CLASSPATH:$PWD/bin -for I in `find libraries -type f`; do - CLASSPATH=$CLASSPATH:$PWD/$I; -done -export CLASSPATH -export JAVA_HOME=/opt/jdk1.8.0_131 - -$JAVA_HOME/bin/java de.hottis.measurementCollector.MeasurementCollector - diff --git a/startDatabaseEngine.sh b/startDatabaseEngine.sh deleted file mode 100755 index c38da59..0000000 --- a/startDatabaseEngine.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -PWD=`pwd` -CLASSPATH=$CLASSPATH:$PWD/bin -for I in `find libraries -type f`; do - CLASSPATH=$CLASSPATH:$PWD/$I; -done -export CLASSPATH -export JAVA_HOME=/opt/jdk1.8.0_131 - -$JAVA_HOME/bin/java de.hottis.measurementCollector.MeasurementDatabaseEngine -