import java.sql.Timestamp;
import java.util.UUID;
import com.intrbiz.bergamot.model.Site;
import com.intrbiz.data.DataManager;
import com.intrbiz.lamplighter.data.LamplighterDB;
import com.intrbiz.lamplighter.model.StoredDoubleGaugeReading;
import com.intrbiz.lamplighter.model.StoredFloatGaugeReading;
import com.intrbiz.lamplighter.model.StoredIntGaugeReading;
import com.intrbiz.lamplighter.model.StoredLongGaugeReading;
import com.intrbiz.util.pool.database.DatabasePool;
public class ReadingsExample
{
public static void main(String[] args) throws Exception
{
// database
DataManager.getInstance().registerDefaultServer(DatabasePool.Default.with().postgresql().url("jdbc:postgresql://172.30.13.48:5432/bergamot").username("bergamot").password("bergamot").build());
//
LamplighterDB.install();
//
LamplighterDB db = LamplighterDB.connect();
System.out.println("Lamplighter Version: " + db.getVersion());
//
UUID siteId = Site.randomSiteId();
UUID checkId = Site.randomId(siteId);
UUID readingIdD = Site.randomId(siteId);
UUID readingIdL = Site.randomId(siteId);
UUID readingIdI = Site.randomId(siteId);
UUID readingIdF = Site.randomId(siteId);
//
db.setupSiteReadings(siteId);
db.setupDoubleGaugeReading(siteId, readingIdD, checkId, "testd", "Test", "", "", 300_000L);
db.setupLongGaugeReading(siteId, readingIdL, checkId, "testl", "Test", "", "", 300_000L);
db.setupIntGaugeReading(siteId, readingIdI, checkId, "testi", "Test", "", "", 300_000L);
db.setupFloatGaugeReading(siteId, readingIdF, checkId, "testf", "Test", "", "", 300_000L);
System.out.println("Setup reading: " + siteId + "::" + readingIdD + "/" + readingIdL + "/" + readingIdI + "/" + readingIdF);
//
db.execute(() -> {
long epoch = 1420070400000L;
long start = System.currentTimeMillis();
for (int i = 0; i < ((60/5) * 24 * 365); i++)
{
db.storeDoubleGaugeReading(new StoredDoubleGaugeReading(siteId, readingIdD, new Timestamp(epoch), (double) i, 80D, 90D, 1D, 100D));
db.storeLongGaugeReading(new StoredLongGaugeReading(siteId, readingIdL, new Timestamp(epoch), (long) i, 80L, 90L, 1L, 100L));
db.storeIntGaugeReading(new StoredIntGaugeReading(siteId, readingIdI, new Timestamp(epoch), (i % 100), 80, 90, 1, 100));
db.storeFloatGaugeReading(new StoredFloatGaugeReading(siteId, readingIdF, new Timestamp(epoch), (float) (i % 100), 80F, 90F, 1F, 100F));
epoch += 300_000L;
}
long end = System.currentTimeMillis();
System.out.println("Added " + (((60/5) * 24 * 365) * 4) + " readings in " + (end - start) + " ms");
});
//
for (StoredDoubleGaugeReading reading : db.getLatestDoubleGaugeReadings(siteId, readingIdD, 10))
{
System.out.println(reading.getCollectedAt() + " => " + reading.getValue());
}
//
for (StoredLongGaugeReading reading : db.getLatestLongGaugeReadings(siteId, readingIdL, 10))
{
System.out.println(reading.getCollectedAt() + " => " + reading.getValue());
}
//
for (StoredIntGaugeReading reading : db.getLatestIntGaugeReadings(siteId, readingIdI, 10))
{
System.out.println(reading.getCollectedAt() + " => " + reading.getValue());
}
//
for (StoredFloatGaugeReading reading : db.getLatestFloatGaugeReadings(siteId, readingIdF, 10))
{
System.out.println(reading.getCollectedAt() + " => " + reading.getValue());
}
}
}