All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.windowsazure.messaging.NotificationTelemetry Maven / Gradle / Ivy

//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------

package com.windowsazure.messaging;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.digester3.Digester;
import org.xml.sax.SAXException;

public class NotificationTelemetry {

    private String notificationId;
    private String location;
    private NotificationStatus notificationStatus;
    private Date enqueueTime;
    private Date startTime;
    private Date endTime;
    private String notificationBody;
    private String targetPlatforms;
    private Map apnsOutcomeCounts;
    private Map mpnsOutcomeCounts;
    private Map wnsOutcomeCounts;
    private Map gcmOutcomeCounts;
    private Map fcmOutcomeCounts;
    private Map admOutcomeCounts;
    private Map baiduOutcomeCounts;
    private String pnsErrorDetailsUri;

    private static final ThreadLocal parser;

    static {
        parser = ThreadLocal.withInitial(() -> {
            Digester instance = new Digester();
            setupParser(instance);
            return instance;
        });
    }

    public static NotificationTelemetry parseOne(InputStream content) throws IOException, SAXException {
        return parser.get().parse(content);
    }

    public String getNotificationId() {
        return notificationId;
    }

    public void setNotificationId(String notificationId) {
        this.notificationId = notificationId;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public NotificationStatus getNotificationStatus() {
        return notificationStatus;
    }

    public void setNotificationStatusFromString(String status) {
        this.notificationStatus = Enum.valueOf(NotificationStatus.class, status);
    }

    public void setNotificationStatus(NotificationStatus notificationStatus) {
        this.notificationStatus = notificationStatus;
    }

    public Date getEnqueueTime() {
        return enqueueTime;
    }

    public void setEnqueueTimeFromString(String enqueueTime) {
        this.enqueueTime = javax.xml.bind.DatatypeConverter.parseDateTime(enqueueTime).getTime();
    }

    public void setEnqueueTime(Date enqueueTime) {
        this.enqueueTime = enqueueTime;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTimeFromString(String startTime) {
        this.startTime = javax.xml.bind.DatatypeConverter.parseDateTime(startTime).getTime();
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTimeFromString(String endTime) {
        this.endTime = javax.xml.bind.DatatypeConverter.parseDateTime(endTime).getTime();
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public String getNotificationBody() {
        return notificationBody;
    }

    public void setNotificationBody(String notificationBody) {
        this.notificationBody = notificationBody;
    }

    public String getTargetPlatforms() {
        return targetPlatforms;
    }

    public void setTargetPlatforms(String targetPlatforms) {
        this.targetPlatforms = targetPlatforms;
    }

    public Map getApnsOutcomeCounts() {
        return apnsOutcomeCounts;
    }

    public void setApnsOutcomeCounts(Map apnsOutcomeCounts) {
        this.apnsOutcomeCounts = apnsOutcomeCounts;
    }

    public Map getMpnsOutcomeCounts() {
        return mpnsOutcomeCounts;
    }

    public void setMpnsOutcomeCounts(Map mpnsOutcomeCounts) {
        this.mpnsOutcomeCounts = mpnsOutcomeCounts;
    }

    public Map getWnsOutcomeCounts() {
        return wnsOutcomeCounts;
    }

    public void setWnsOutcomeCounts(Map wnsOutcomeCounts) {
        this.wnsOutcomeCounts = wnsOutcomeCounts;
    }

    public Map getGcmOutcomeCounts() {
        return gcmOutcomeCounts;
    }

    public void setGcmOutcomeCounts(Map gcmOutcomeCounts) {
        this.gcmOutcomeCounts = gcmOutcomeCounts;
    }

    public Map getFcmOutcomeCounts() {
        return fcmOutcomeCounts;
    }

    public void setFcmOutcomeCounts(Map fcmOutcomeCounts) {
        this.fcmOutcomeCounts = fcmOutcomeCounts;
    }

    public Map getBaiduOutcomeCounts() {
        return baiduOutcomeCounts;
    }

    public void setBaiduOutcomeCounts(Map baiduOutcomeCounts) {
        this.baiduOutcomeCounts = baiduOutcomeCounts;
    }

    public Map getAdmOutcomeCounts() {
        return admOutcomeCounts;
    }

    public void setAdmOutcomeCounts(Map admOutcomeCounts) {
        this.admOutcomeCounts = admOutcomeCounts;
    }

    public String getPnsErrorDetailsUri() {
        return pnsErrorDetailsUri;
    }

    public void setPnsErrorDetailsUri(String pnsErrorDetailsUri) {
        this.pnsErrorDetailsUri = pnsErrorDetailsUri;
    }

    private static void setupParser(Digester digester) {
        digester.addObjectCreate("*/NotificationDetails", NotificationTelemetry.class);
        digester.addCallMethod("*/NotificationId", "setNotificationId", 1);
        digester.addCallParam("*/NotificationId", 0);
        digester.addCallMethod("*/Location", "setLocation", 1);
        digester.addCallParam("*/Location", 0);
        digester.addCallMethod("*/State", "setNotificationStatusFromString", 1);
        digester.addCallParam("*/State", 0);
        digester.addCallMethod("*/EnqueueTime", "setEnqueueTimeFromString", 1);
        digester.addCallParam("*/EnqueueTime", 0);
        digester.addCallMethod("*/StartTime", "setStartTimeFromString", 1);
        digester.addCallParam("*/StartTime", 0);
        digester.addCallMethod("*/EndTime", "setEndTimeFromString", 1);
        digester.addCallParam("*/EndTime", 0);
        digester.addCallMethod("*/NotificationBody", "setNotificationBody", 1);
        digester.addCallParam("*/NotificationBody", 0);
        digester.addCallMethod("*/TargetPlatforms", "setTargetPlatforms", 1);
        digester.addCallParam("*/TargetPlatforms", 0);
        digester.addCallMethod("*/PnsErrorDetailsUri", "setPnsErrorDetailsUri", 1);
        digester.addCallParam("*/PnsErrorDetailsUri", 0);

        digester.addObjectCreate("*/ApnsOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/ApnsOutcomeCounts", "setApnsOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/MpnsOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/MpnsOutcomeCounts", "setMpnsOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/WnsOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/WnsOutcomeCounts", "setWnsOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/GcmOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/GcmOutcomeCounts", "setGcmOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/FcmOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/FcmOutcomeCounts", "setFcmOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/AdmOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/AdmOutcomeCounts", "setAdmOutcomeCounts", Map.class.getName());

        digester.addObjectCreate("*/BaiduOutcomeCounts", HashMap.class);
        digester.addCallMethod("*/Outcome", "put", 2, new Class[]{String.class, Integer.class});
        digester.addCallParam("*/Name", 0);
        digester.addCallParam("*/Count", 1);
        digester.addSetNext("*/BaiduOutcomeCounts", "setBaiduOutcomeCounts", Map.class.getName());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy