From fe60ba2292cbf2b00dd00da36d72b4af5893f2ad Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Mon, 13 Feb 2017 12:23:03 -0600 Subject: [PATCH] Uses external MongoDB, uses dates instead of strings for timestamps --- src/main/java/com/henrypump/poc/Database.java | 19 +++++------- .../java/com/henrypump/poc/IOControl.java | 31 ++++++++++--------- .../java/com/henrypump/poc/Measurement.java | 6 +++- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/henrypump/poc/Database.java b/src/main/java/com/henrypump/poc/Database.java index 9dc22f9..84e6814 100644 --- a/src/main/java/com/henrypump/poc/Database.java +++ b/src/main/java/com/henrypump/poc/Database.java @@ -27,7 +27,7 @@ public class Database { private MongoDatabase database; Database(){ - mongoClient = new MongoClient(); + mongoClient = new MongoClient("10.20.155.202"); database = mongoClient.getDatabase(pocDatabase); } @@ -69,7 +69,7 @@ public class Database { .append("surface_load", s_l) .append("downhole_position", d_p) .append("downhole_load", d_l) - .append("timestamp", ZonedDateTime.now().toString()); + .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); collection.insertOne(doc); System.out.println("Stored stroke number " + inpCard.getStrokeNumber() + " as " + doc.getObjectId("_id")); return collection.count(); @@ -79,7 +79,6 @@ public class Database { } public long newMeasurement(Measurement inpMeasurement){ - String df = ZonedDateTime.now().toString(); MongoCollection collection = database.getCollection("wellData"); Document doc = new Document("tagname", inpMeasurement.getTagName()) .append("currentValue", inpMeasurement.getCurrentValue()) @@ -88,7 +87,7 @@ public class Database { .append("dailyAverage", inpMeasurement.getAverage()) .append("dailyTotal", inpMeasurement.getTotal()) .append("numMeasurements", inpMeasurement.getNumMeasurements()) - .append("timestamp", df); + .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); collection.insertOne(doc); System.out.println("Stored " + inpMeasurement.getCurrentValue() + " for " + inpMeasurement.getTagName()); return collection.count(); @@ -109,7 +108,6 @@ public class Database { } public long newDailyTotal(Measurement inpMeasurement){ - String df = ZonedDateTime.now().toString(); MongoCollection collection = database.getCollection("gaugeOff"); Document doc = new Document("tagname", inpMeasurement.getTagName()) .append("currentValue", inpMeasurement.getCurrentValue()) @@ -117,7 +115,7 @@ public class Database { .append("minDailyValue", inpMeasurement.getDailyMin()) .append("dailyAverage", inpMeasurement.getAverage()) .append("dailyTotal", inpMeasurement.getTotal()) - .append("timestamp", df); + .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); collection.insertOne(doc); return collection.count(); @@ -140,9 +138,9 @@ public class Database { }; public long newWellTest(WellTest inp){ - String df = ZonedDateTime.now().toString(); MongoCollection collection = database.getCollection("wellTests"); - Document doc = new Document("testStartTime", df) + + Document doc = new Document("testStartTime", Date.from(inp.getTestStart().toInstant())) .append("testHours", inp.getTestHours()) .append("testTotalBBL", inp.getTotalFluidBBL()) .append("testOilBBL", inp.getTestOilBBL()) @@ -157,9 +155,8 @@ public class Database { } public Document getPreviousWellTest(ZonedDateTime inpDateTime){ - String isoInpDateTime = inpDateTime.toString(); MongoCollection wellTestCollection = database.getCollection("wellTests"); - MongoCursor cursor = wellTestCollection.find(lte("testStartTime", isoInpDateTime)) + MongoCursor cursor = wellTestCollection.find(lte("testStartTime", Date.from(inpDateTime.toInstant()))) .sort(Sorts.descending("testStartTime")).limit(1).iterator(); Document lastTest = new Document("kFactor", (Double) 1.0); try { @@ -189,7 +186,7 @@ public class Database { public long newFluidShot(FluidShot inp){ String df = ZonedDateTime.now().toString(); MongoCollection collection = database.getCollection("fluidShots"); - Document doc = new Document("timestamp", df) + Document doc = new Document("timestamp", Date.from(ZonedDateTime.now().toInstant())) .append("fluidLevel", inp.getFluidLevel()) .append("pumpIntakePressure", inp.getPumpIntakePressure()) .append("frictionEstimate", inp.getFrictionEstimate()); diff --git a/src/main/java/com/henrypump/poc/IOControl.java b/src/main/java/com/henrypump/poc/IOControl.java index 830d67a..212c83c 100644 --- a/src/main/java/com/henrypump/poc/IOControl.java +++ b/src/main/java/com/henrypump/poc/IOControl.java @@ -48,20 +48,23 @@ public class IOControl implements Runnable { } public void run() { - if (startBtn.read() == 1) startWell(); - if (stopBtn.read() == 1) stopWell(); - if (startBtn.read() == 1 && stopBtn.read() == 1) { - exitPOC(); + System.out.println("Running the IOControl Loop"); + for (;;) { + if (startBtn.read() == 1) startWell(); + if (stopBtn.read() == 1) stopWell(); + if (startBtn.read() == 1 && stopBtn.read() == 1) { + exitPOC(); + } + + pos = poc.thisWell.getCurrentSurfacePosition(); + runStatus = poc.thisWell.getRunStatus(); + led2.write(pos > 20.0 ? 1 : 0); + led3.write(pos > 40.0 ? 1 : 0); + led4.write(pos > 60.0 ? 1 : 0); + led5.write(pos > 80.0 ? 1 : 0); + + runningIndicator.write(runStatus == Well.RUNSTATUS_RUNNING ? 1 : 0); + runCommand.write((runStatus == Well.RUNSTATUS_RUNNING || runStatus == Well.RUNSTATUS_STARTING) ? 1 : 0); } - - pos = poc.thisWell.getCurrentSurfacePosition(); - runStatus = poc.thisWell.getRunStatus(); - led2.write(pos > 20.0 ? 1 : 0); - led3.write(pos > 40.0 ? 1 : 0); - led4.write(pos > 60.0 ? 1 : 0); - led5.write(pos > 80.0 ? 1 : 0); - - runningIndicator.write(runStatus==Well.RUNSTATUS_RUNNING ? 1 : 0); - runCommand.write((runStatus == Well.RUNSTATUS_RUNNING || runStatus == Well.RUNSTATUS_STARTING) ? 1: 0); } } diff --git a/src/main/java/com/henrypump/poc/Measurement.java b/src/main/java/com/henrypump/poc/Measurement.java index e2f6fdb..5d00dc6 100644 --- a/src/main/java/com/henrypump/poc/Measurement.java +++ b/src/main/java/com/henrypump/poc/Measurement.java @@ -2,7 +2,9 @@ package com.henrypump.poc; import org.bson.Document; +import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.Date; import static java.lang.Math.abs; @@ -44,7 +46,9 @@ public class Measurement { Document lastStored = this.db.getLastStoredMeasurement(this.tagName); try { - ZonedDateTime timestamp = ZonedDateTime.parse((CharSequence) lastStored.get("timestamp")); + Date lastStoredTimestamp = (Date) lastStored.get("timestamp"); + ZonedDateTime timestamp = ZonedDateTime.ofInstant(lastStoredTimestamp.toInstant(), + ZoneId.systemDefault()); if (isToday(timestamp)){ this.average = lastStored.getDouble("dailyAverage"); this.total = lastStored.getDouble("dailyTotal");