001package com.pingidentity.developer.pingid;
002
003import org.json.simple.JSONObject;
004
005import java.text.ParseException;
006import java.text.SimpleDateFormat;
007import java.util.Date;
008import java.util.TimeZone;
009
010public class DeviceDetails {
011    private final String appVersion;
012    private final long availableClaimedSms;
013    private final long availableNotClaimedSms;
014    private final long countryCode;
015    private final String email;
016    private final Date enrollment;
017    private final Boolean hasWatch;
018    private final String osVersion;
019    private final String phoneNumber;
020    private final Boolean pushEnabled;
021    private final String type;
022
023    public DeviceDetails() {
024
025        appVersion = "";
026        availableClaimedSms = 0;
027        availableNotClaimedSms = 0;
028        countryCode = 0;
029        email = "";
030        enrollment = new Date();
031        hasWatch = false;
032        osVersion = "";
033        phoneNumber = "";
034        pushEnabled = false;
035        type = "";
036    }
037
038    public DeviceDetails(JSONObject deviceDetailsJSON) {
039
040        if (deviceDetailsJSON != null) {
041            appVersion = (deviceDetailsJSON.get("appVersion") != null ? (String) deviceDetailsJSON.get("appVersion") : "");
042            availableClaimedSms = (deviceDetailsJSON.get("availableClaimedSms") != null ? (long) deviceDetailsJSON.get("availableClaimedSms") : 0);
043            availableNotClaimedSms = (deviceDetailsJSON.get("availableNotClaimedSms") != null ? (long) deviceDetailsJSON.get("availableNotClaimedSms") : 0);
044            countryCode = (deviceDetailsJSON.get("countryCode") != null ? Long.valueOf(deviceDetailsJSON.get("countryCode").toString()) : 0);
045            email = (String) deviceDetailsJSON.get("email");
046            enrollment = parseDate((String) deviceDetailsJSON.get("enrollment"));
047            hasWatch = (Boolean) deviceDetailsJSON.get("hasWatch");
048            osVersion = (String) deviceDetailsJSON.get("osVersion");
049            phoneNumber = (String) deviceDetailsJSON.get("phoneNumber");
050            pushEnabled = (Boolean) deviceDetailsJSON.get("pushEnabled");
051            type = (String) deviceDetailsJSON.get("type");
052        } else {
053            appVersion = "";
054            availableClaimedSms = 0;
055            availableNotClaimedSms = 0;
056            countryCode = 0;
057            email = "";
058            enrollment = new Date();
059            hasWatch = false;
060            osVersion = "";
061            phoneNumber = "";
062            pushEnabled = false;
063            type = "";
064        }
065    }
066
067    private Date parseDate(String dateToParse) {
068        SimpleDateFormat PingIDDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
069        PingIDDateFormat.setTimeZone(TimeZone.getTimeZone("America/Denver"));
070
071        if (dateToParse != null) {
072            try {
073                return PingIDDateFormat.parse(dateToParse);
074            } catch (ParseException e) {
075                e.printStackTrace();
076            }
077        }
078        return null;
079    }
080}