URLNotificationJSONConverter.java
- package gov.usgs.earthquake.distribution;
- import gov.usgs.earthquake.product.ProductId;
- import gov.usgs.util.XmlUtils;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Date;
- import javax.json.Json;
- import javax.json.JsonObject;
- import javax.json.JsonReader;
- public class URLNotificationJSONConverter {
- /** attribute for product id */
- public static final String ATTRIBUTE_PRODUCT_ID = "id";
- /** attribute for source */
- public static final String ATTRIBUTE_SOURCE = "source";
- /** attribute for type */
- public static final String ATTRIBUTE_TYPE = "type";
- /** attribute for code */
- public static final String ATTRIBUTE_CODE = "code";
- /** attribute for updatetime */
- public static final String ATTRIBUTE_UPDATE_TIME = "updatetime";
- /** attribute for trackerURL */
- public static final String ATTRIBUTE_TRACKER_URL = "trackerURL";
- /** attribute for expires */
- public static final String ATTRIBUTE_EXPIRES = "expires";
- /** attribute for url */
- public static final String ATTRIBUTE_URL = "url";
- /**
- * Converts a URLNotification into a JSON string
- * @param notification URLNotification to convert
- * @return JSON string
- */
- public static String toJSON(final URLNotification notification) {
- //id
- ProductId id = notification.getProductId();
- JsonObject json = Json.createObjectBuilder()
- .add(ATTRIBUTE_PRODUCT_ID,Json.createObjectBuilder()
- .add(ATTRIBUTE_SOURCE,id.getSource())
- .add(ATTRIBUTE_TYPE,id.getType())
- .add(ATTRIBUTE_CODE,id.getCode())
- .add(ATTRIBUTE_UPDATE_TIME, XmlUtils.formatDate(id.getUpdateTime())))
- .add(ATTRIBUTE_TRACKER_URL,notification.getTrackerURL().toString())
- .add(ATTRIBUTE_EXPIRES,XmlUtils.formatDate(notification.getExpirationDate()))
- .add(ATTRIBUTE_URL,notification.getProductURL().toString())
- .build();
- return json.toString();
- }
- /**
- * parse a message from the input stream
- * @param message InputStream message
- * @return URLNotification
- * @throws Exception if error occurs
- */
- public static URLNotification parseJSON(final InputStream message) throws Exception{
- JsonReader jsonReader = Json.createReader(message);
- JsonObject json = jsonReader.readObject();
- jsonReader.close();
- return parseJSON(json);
- }
- /**
- * Parse a JsonObject
- * @param json JsonObject
- * @return URLNotification
- * @throws Exception if error occurs
- */
- public static URLNotification parseJSON(final JsonObject json) throws Exception{
- JsonObject idJson = json.getJsonObject(ATTRIBUTE_PRODUCT_ID);
- ProductId id = new ProductId(
- idJson.getString(ATTRIBUTE_SOURCE),
- idJson.getString(ATTRIBUTE_TYPE),
- idJson.getString(ATTRIBUTE_CODE),
- XmlUtils.getDate(idJson.getString(ATTRIBUTE_UPDATE_TIME)));
- return new URLNotification(
- id,
- XmlUtils.getDate(json.getString(ATTRIBUTE_EXPIRES)),
- new URL(json.getString(ATTRIBUTE_TRACKER_URL)),
- new URL(json.getString(ATTRIBUTE_URL)));
- }
- /**
- * Main function to run a test JSON-ifying a URLnotification
- * @param args arguments
- * @throws Exception if error occurs
- */
- public static void main(String[] args) throws Exception{
- URLNotification testNotification = new URLNotification(new ProductId("testSource","testType","testCode"), new Date(),
- new URL("http://localhost/tracker/"), new URL("http://localhost/product/"));
- String JSON = toJSON(testNotification);
- System.out.println(JSON);
- }
- }