diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 88a2231..f05e7fd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,13 +2,7 @@ - - - - - - @@ -418,8 +412,8 @@ - - + + @@ -2265,8 +2259,8 @@ - - + + diff --git a/src/main/java/com/henrypump/poc/Database.java b/src/main/java/com/henrypump/poc/Database.java index 75ba03e..c8d5256 100644 --- a/src/main/java/com/henrypump/poc/Database.java +++ b/src/main/java/com/henrypump/poc/Database.java @@ -33,31 +33,41 @@ public class Database { private String pocDatabase = "poc"; private MongoClient mongoClient; private MongoDatabase database; + private MongoCollection cardCollection, wellDataCollection, gaugeOffCollection, wellTestCollection, + fluidShotsCollection, runStatusCollection, wellConfigCollection, setpointCollection; + + public void initCollections(){ + cardCollection = database.getCollection("cards"); + cardCollection.createIndex(Indexes.ascending("timestamp", "strokeNumber")); + + wellDataCollection = database.getCollection("wellData"); + wellDataCollection.createIndex(Indexes.ascending("timestamp", "tagName")); + + gaugeOffCollection = database.getCollection("gaugeOff"); + gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName")); + + + wellTestCollection = database.getCollection("wellTests"); + wellTestCollection.createIndex(Indexes.ascending("testStartTime")); + + fluidShotsCollection = database.getCollection("fluidShots"); + fluidShotsCollection.createIndex(Indexes.ascending("timestamp")); + + runStatusCollection = database.getCollection("runStatus"); + runStatusCollection.createIndex(Indexes.ascending("timestamp")); + + wellConfigCollection = database.getCollection("wellConfiguration"); + wellConfigCollection.createIndex(Indexes.ascending("timestamp")); + + setpointCollection = database.getCollection("setpoints"); + } + Database(){ mongoClient = new MongoClient(); database = mongoClient.getDatabase(pocDatabase); - MongoCollection cardCollection = database.getCollection("cards"); - cardCollection.createIndex(Indexes.ascending("timestamp", "strokeNumber")); - MongoCollection wellDataCollection = database.getCollection("wellData"); - wellDataCollection.createIndex(Indexes.ascending("timestamp", "tagName")); - - MongoCollection gaugeOffCollection = database.getCollection("gaugeOff"); - gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName")); - - - MongoCollection wellTestCollection = database.getCollection("wellTests"); - wellTestCollection.createIndex(Indexes.ascending("testStartTime")); - - MongoCollection fluidShotsCollection = database.getCollection("fluidShots"); - fluidShotsCollection.createIndex(Indexes.ascending("timestamp")); - - MongoCollection runStatusCollection = database.getCollection("runStatus"); - runStatusCollection.createIndex(Indexes.ascending("timestamp")); - - MongoCollection wellConfigCollection = database.getCollection("wellConfiguration"); - wellConfigCollection.createIndex(Indexes.ascending("timestamp")); + initCollections(); } @@ -65,27 +75,12 @@ public class Database { Database(String dbHostname){ mongoClient = new MongoClient(dbHostname); database = mongoClient.getDatabase(pocDatabase); - MongoCollection cardCollection = database.getCollection("cards"); - cardCollection.createIndex(Indexes.ascending("timestamp")); - MongoCollection wellDataCollection = database.getCollection("wellData"); - wellDataCollection.createIndex(Indexes.ascending("timestamp", "tagName")); + initCollections(); + } - MongoCollection gaugeOffCollection = database.getCollection("gaugeOff"); - gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName")); - - - MongoCollection wellTestCollection = database.getCollection("wellTests"); - wellTestCollection.createIndex(Indexes.ascending("testStartTime")); - - MongoCollection fluidShotsCollection = database.getCollection("fluidShots"); - fluidShotsCollection.createIndex(Indexes.ascending("timestamp")); - - MongoCollection runStatusCollection = database.getCollection("runStatus"); - runStatusCollection.createIndex(Indexes.ascending("timestamp")); - - MongoCollection wellConfigCollection = database.getCollection("wellConfiguration"); - wellConfigCollection.createIndex(Indexes.ascending("timestamp")); + public void close(){ + mongoClient.close(); } public long getLastStrokeNum(){ @@ -112,7 +107,7 @@ public class Database { } public long newCard(Card inpCard){ - MongoCollection collection = database.getCollection("cards"); + List s_p = new ArrayList(); List s_l = new ArrayList(); List d_p = new ArrayList(); @@ -135,16 +130,13 @@ public class Database { .append("downhole_position", d_p) .append("downhole_load", d_l) .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); - collection.insertOne(doc); + cardCollection.insertOne(doc); System.out.println("Stored stroke number " + inpCard.getStrokeNumber() + " as " + doc.getObjectId("_id")); - return collection.count(); - } - public void close(){ - mongoClient.close(); + return cardCollection.count(); } + public long newMeasurement(Measurement inpMeasurement){ - MongoCollection collection = database.getCollection("wellData"); Document doc = new Document("tagname", inpMeasurement.getTagName()) .append("currentValue", inpMeasurement.getCurrentValue()) .append("maxDailyValue", inpMeasurement.getDailyMax()) @@ -153,14 +145,13 @@ public class Database { .append("dailyTotal", inpMeasurement.getTotal()) .append("numMeasurements", inpMeasurement.getNumMeasurements()) .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); - collection.insertOne(doc); + wellDataCollection.insertOne(doc); System.out.println("Stored " + inpMeasurement.getCurrentValue() + " for " + inpMeasurement.getTagName()); - return collection.count(); + return wellDataCollection.count(); } public Document getLastStoredMeasurement(String tagName){ - MongoCollection collection = database.getCollection("wellData"); - MongoCursor cursor = collection.find(eq("tagname", tagName)).sort(Sorts.descending("timestamp")).limit(1).iterator(); + MongoCursor cursor = wellDataCollection.find(eq("tagname", tagName)).sort(Sorts.descending("timestamp")).limit(1).iterator(); Document lastStoredDoc = new Document(); try { while (cursor.hasNext()) { @@ -173,7 +164,6 @@ public class Database { } public long newDailyTotal(Measurement inpMeasurement){ - MongoCollection collection = database.getCollection("gaugeOff"); Document doc = new Document("tagname", inpMeasurement.getTagName()) .append("currentValue", inpMeasurement.getCurrentValue()) .append("maxDailyValue", inpMeasurement.getDailyMax()) @@ -181,14 +171,13 @@ public class Database { .append("dailyAverage", inpMeasurement.getAverage()) .append("dailyTotal", inpMeasurement.getTotal()) .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); - collection.insertOne(doc); - return collection.count(); + gaugeOffCollection.insertOne(doc); + return gaugeOffCollection.count(); } public double getPreviousDailyTotal(ZonedDateTime inpDateTime){ String isoInpDateTime = inpDateTime.toString(); - MongoCollection wellTestCollection = database.getCollection("gaugeOff"); MongoCursor cursor = wellTestCollection.find(and(eq("tagname", "Fluid Produced"), lte("timestamp", isoInpDateTime))) .sort(Sorts.descending("timestamp")).limit(1).iterator(); double lastTotal = -1.0; @@ -203,7 +192,6 @@ public class Database { }; public long newWellTest(WellTest inp){ - MongoCollection collection = database.getCollection("wellTests"); Document doc = new Document("testStartTime", Date.from(inp.getTestStart().toInstant())) .append("testHours", inp.getTestHours()) .append("testTotalBBL", inp.getTotalFluidBBL()) @@ -214,12 +202,11 @@ public class Database { .append("oilRatio", inp.getOilRatio()) .append("waterRatio", inp.getWaterRatio()) .append("gasMCFRatio", inp.getGasMCFRatio()); - collection.insertOne(doc); - return collection.count(); + wellTestCollection.insertOne(doc); + return wellTestCollection.count(); } public Document getPreviousWellTest(ZonedDateTime inpDateTime){ - MongoCollection wellTestCollection = database.getCollection("wellTests"); 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); @@ -234,7 +221,6 @@ public class Database { }; public double getLatestKFactor(){ - MongoCollection wellTestCollection = database.getCollection("wellTests"); MongoCursor cursor = wellTestCollection.find().sort(Sorts.descending("testStartTime")).limit(1).iterator(); double kFactor = 1.0; try { @@ -249,18 +235,16 @@ public class Database { public long newFluidShot(FluidShot inp){ String df = ZonedDateTime.now().toString(); - MongoCollection collection = database.getCollection("fluidShots"); Document doc = new Document("timestamp", Date.from(ZonedDateTime.now().toInstant())) .append("fluidLevel", inp.getFluidLevel()) .append("pumpIntakePressure", inp.getPumpIntakePressure()) .append("frictionEstimate", inp.getFrictionEstimate()); - collection.insertOne(doc); - return collection.count(); + fluidShotsCollection.insertOne(doc); + return fluidShotsCollection.count(); } public double getLatestFrictionEstimate(){ - MongoCollection wellTestCollection = database.getCollection("fluidShots"); - MongoCursor cursor = wellTestCollection.find().sort(Sorts.descending("timestamp")).limit(1).iterator(); + MongoCursor cursor = fluidShotsCollection.find().sort(Sorts.descending("timestamp")).limit(1).iterator(); double frictionEstimate = -1; try { while (cursor.hasNext()) { @@ -273,34 +257,14 @@ public class Database { } public long newRunStatus(String runStatus, String initiator){ - MongoCollection collection = database.getCollection("runStatus"); Document doc = new Document("status", runStatus) .append("initiator", initiator) .append("timestamp", Date.from(ZonedDateTime.now().toInstant())); - collection.insertOne(doc); - return collection.count(); - } - - static String readFile(String file) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(file)); - String line = null; - StringBuilder stringBuilder = new StringBuilder(); - String ls = System.getProperty("line.separator"); - - try { - while((line = reader.readLine()) != null) { - stringBuilder.append(line); - stringBuilder.append(ls); - } - - return stringBuilder.toString(); - } finally { - reader.close(); - } + runStatusCollection.insertOne(doc); + return runStatusCollection.count(); } public long storeWellSetup(Well thisWell){ - MongoCollection collection = database.getCollection("wellConfiguration"); ArrayList taperArr = new ArrayList(); for (int i = 1; i <= thisWell.getNumTapers(); i++){ Document tap = new Document("length", thisWell.getRodLength(i)) @@ -325,12 +289,11 @@ public class Database { .append("tapers", taperArr) .append("storedBy", "poc"); - collection.insertOne(doc); - return collection.count(); + wellConfigCollection.insertOne(doc); + return wellConfigCollection.count(); } public Document getLatestWellConfiguration(){ - MongoCollection wellConfigCollection = database.getCollection("wellConfiguration"); MongoCursor cursor = wellConfigCollection.find().sort(Sorts.descending("timestamp")).limit(1).iterator(); Document lastConfig = new Document(); try {