package org.hadatac.entity.pojo; import java.io.IOException; import java.util.Date; import java.util.Iterator; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.beans.Field; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.hadatac.utils.Collections; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; import play.Play; public class ConsoleStore { @Field("id") private int id; @Field("last_dynamic_metadata_id") private long lastDynamicMetadataId; @Field("timestamp") private DateTime timestamp; public int getId() { return id; } public void setId(int id) { this.id = id; } public long getLastDynamicMetadataId() { return lastDynamicMetadataId; } public void setLastDynamicMetadataId(long lastDynamicMetadataId) { this.lastDynamicMetadataId = lastDynamicMetadataId; } public String getTimestamp() { DateTimeFormatter formatter = ISODateTimeFormat.dateTime(); return formatter.withZone(DateTimeZone.UTC).print(timestamp); } public void setTimestamp(String timestamp) { DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zzz yyyy"); this.timestamp = formatter.parseDateTime(timestamp); } public int save() { try { SolrClient client = new HttpSolrClient( Play.application().configuration().getString("hadatac.solr.data") + Collections.CONSOLE_STORE); int status = client.addBean(this).getStatus(); client.commit(); client.close(); return status; } catch (IOException | SolrServerException e) { System.out.println("[ERROR] ConsoleStore.save(SolrClient) - e.Message: " + e.getMessage()); return -1; } } public static ConsoleStore find() { ConsoleStore consoleStore = null; SolrClient client = new HttpSolrClient( Play.application().configuration().getString("hadatac.solr.data") + Collections.CONSOLE_STORE); SolrQuery query = new SolrQuery(); query.set("q", "*:*"); query.set("sort", "last_dynamic_metadata_id desc"); query.set("start", "0"); query.set("rows", "1"); try { QueryResponse response = client.query(query); client.close(); SolrDocumentList list = response.getResults(); Iterator<SolrDocument> iter = list.iterator(); if (iter.hasNext()) { SolrDocument document = iter.next(); consoleStore = new ConsoleStore(); consoleStore.setId(Integer.parseInt(document.getFieldValue("id").toString())); consoleStore.setLastDynamicMetadataId(Long.parseLong(document.getFieldValue("last_dynamic_metadata_id").toString())); DateTime date = new DateTime((Date)document.getFieldValue("timestamp")); consoleStore.setTimestamp(date.withZone(DateTimeZone.UTC).toString("EEE MMM dd HH:mm:ss zzz yyyy")); } } catch (SolrServerException | IOException e) { System.out.println("[ERROR] ConsoleStore.find() - e.Message: " + e.getMessage()); } return consoleStore; } }