Well measurements now can be stored in database
also added some more sample data
This commit is contained in:
@@ -1,25 +1,54 @@
|
||||
package com.henrypump.poc;
|
||||
|
||||
import static java.lang.Math.abs;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 2/3/17.
|
||||
*/
|
||||
public class Measurement {
|
||||
private String tagName;
|
||||
private double currentValue;
|
||||
private double lastValue;
|
||||
private double average;
|
||||
private double total;
|
||||
private double max;
|
||||
private double min;
|
||||
private double dailyMax;
|
||||
private double dailyMin;
|
||||
private double[] totalHistory = new double[30];
|
||||
private double[] averageHistory = new double[30];
|
||||
private long numMeasurements;
|
||||
private boolean storeInDatabase;
|
||||
private double lastSentValue;
|
||||
private double sendDelta;
|
||||
private Database db;
|
||||
private long lastSentTimestamp;
|
||||
private long sendTimeDelta;
|
||||
|
||||
Measurement(){
|
||||
Measurement(String tagName, boolean storeInDatabase, Database db, double sendDelta, long sendTimeDelta){
|
||||
this.tagName = tagName;
|
||||
average = 0;
|
||||
total = 0;
|
||||
numMeasurements = 0;
|
||||
max = Double.MIN_VALUE;
|
||||
min = Double.MAX_VALUE;
|
||||
dailyMax = Double.MIN_VALUE;
|
||||
dailyMin = Double.MAX_VALUE;
|
||||
|
||||
// Database code
|
||||
this.storeInDatabase = storeInDatabase;
|
||||
this.db = db;
|
||||
this.sendDelta = sendDelta;
|
||||
this.lastSentValue = 0.0;
|
||||
this.sendTimeDelta = sendTimeDelta;
|
||||
}
|
||||
|
||||
Measurement(String tagName, boolean storeInDatabase){
|
||||
this.tagName = tagName;
|
||||
average = 0;
|
||||
total = 0;
|
||||
numMeasurements = 0;
|
||||
dailyMax = Double.MIN_VALUE;
|
||||
dailyMin = Double.MAX_VALUE;
|
||||
|
||||
// Database code
|
||||
this.storeInDatabase = storeInDatabase;
|
||||
}
|
||||
|
||||
public double getCurrentValue() {
|
||||
@@ -42,8 +71,21 @@ public class Measurement {
|
||||
return numMeasurements;
|
||||
}
|
||||
|
||||
public String getTagName() {
|
||||
return tagName;
|
||||
}
|
||||
|
||||
public double getDailyMax() {
|
||||
return dailyMax;
|
||||
}
|
||||
|
||||
public double getDailyMin() {
|
||||
return dailyMin;
|
||||
}
|
||||
|
||||
public void update(double value)
|
||||
{
|
||||
long currentTimestamp = System.currentTimeMillis();
|
||||
lastValue = currentValue;
|
||||
currentValue = value;
|
||||
|
||||
@@ -51,11 +93,22 @@ public class Measurement {
|
||||
average = average * (((float)numMeasurements - 1)/(float)numMeasurements) + (currentValue / (float)numMeasurements);
|
||||
total = total + value;
|
||||
|
||||
max = Math.max(max, currentValue);
|
||||
min = Math.min(min, currentValue);
|
||||
};
|
||||
dailyMax = Math.max(dailyMax, currentValue);
|
||||
dailyMin = Math.min(dailyMin, currentValue);
|
||||
|
||||
if(storeInDatabase){
|
||||
if(abs(currentValue - lastSentValue) > sendDelta ||
|
||||
currentTimestamp - lastSentTimestamp > (sendTimeDelta * 1000)){
|
||||
db.newMeasurement(this);
|
||||
lastSentValue = currentValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endOfDay(){
|
||||
if (storeInDatabase){
|
||||
db.newDailyTotal(this);
|
||||
}
|
||||
for(int i = 28; i >= 0; i--){
|
||||
totalHistory[i] = totalHistory[i+1];
|
||||
averageHistory[i] = averageHistory[i+1];
|
||||
@@ -66,8 +119,8 @@ public class Measurement {
|
||||
|
||||
total = 0;
|
||||
average = 0;
|
||||
max = Double.MIN_VALUE;
|
||||
min = Double.MAX_VALUE;
|
||||
dailyMax = Double.MIN_VALUE;
|
||||
dailyMin = Double.MAX_VALUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user