Java tutorial
// // AdjustUtil.java // Adjust // // Created by Abdullah Obaied on 2016-10-19. // Copyright (c) 2016 adjust GmbH. All rights reserved. // See the file MIT-LICENSE for copying permission. // package com.adjust.nativemodule; import java.util.Map; import java.util.List; import android.net.Uri; import java.util.HashMap; import java.util.ArrayList; import javax.annotation.Nullable; import com.facebook.react.bridge.*; import com.facebook.react.modules.core.*; import com.adjust.sdk.*; final class AdjustUtil { private static final String ATTRIBUTION_TRACKER_TOKEN = "trackerToken"; private static final String ATTRIBUTION_TRACKER_NAME = "trackerName"; private static final String ATTRIBUTION_NETWORK = "network"; private static final String ATTRIBUTION_CAMPAIGN = "campaign"; private static final String ATTRIBUTION_ADGROUP = "adgroup"; private static final String ATTRIBUTION_CREATIVE = "creative"; private static final String ATTRIBUTION_CLICK_LABEL = "clickLabel"; private static final String ATTRIBUTION_ADID = "adid"; private static final String EVENT_SUCCESS_MESSAGE = "message"; private static final String EVENT_SUCCESS_TIMESTAMP = "timestamp"; private static final String EVENT_SUCCESS_ADID = "adid"; private static final String EVENT_SUCCESS_EVENT_TOKEN = "eventToken"; private static final String EVENT_SUCCESS_JSON_RESPONSE = "jsonResponse"; private static final String EVENT_FAILED_MESSAGE = "message"; private static final String EVENT_FAILED_TIMESTAMP = "timestamp"; private static final String EVENT_FAILED_ADID = "adid"; private static final String EVENT_FAILED_EVENT_TOKEN = "eventToken"; private static final String EVENT_FAILED_WILL_RETRY = "willRetry"; private static final String EVENT_FAILED_JSON_RESPONSE = "jsonResponse"; private static final String SESSION_SUCCESS_MESSAGE = "message"; private static final String SESSION_SUCCESS_TIMESTAMP = "timestamp"; private static final String SESSION_SUCCESS_ADID = "adid"; private static final String SESSION_SUCCESS_JSON_RESPONSE = "jsonResponse"; private static final String SESSION_FAILED_MESSAGE = "message"; private static final String SESSION_FAILED_TIMESTAMP = "timestamp"; private static final String SESSION_FAILED_ADID = "adid"; private static final String SESSION_FAILED_WILL_RETRY = "willRetry"; private static final String SESSION_FAILED_JSON_RESPONSE = "jsonResponse"; public static WritableMap attributionToMap(AdjustAttribution attribution) { WritableMap map = Arguments.createMap(); if (null == attribution) { return map; } map.putString(ATTRIBUTION_TRACKER_TOKEN, null != attribution.trackerToken ? attribution.trackerToken : ""); map.putString(ATTRIBUTION_TRACKER_NAME, null != attribution.trackerName ? attribution.trackerName : ""); map.putString(ATTRIBUTION_NETWORK, null != attribution.network ? attribution.network : ""); map.putString(ATTRIBUTION_CAMPAIGN, null != attribution.campaign ? attribution.campaign : ""); map.putString(ATTRIBUTION_ADGROUP, null != attribution.adgroup ? attribution.adgroup : ""); map.putString(ATTRIBUTION_CREATIVE, null != attribution.creative ? attribution.creative : ""); map.putString(ATTRIBUTION_CLICK_LABEL, null != attribution.clickLabel ? attribution.clickLabel : ""); map.putString(ATTRIBUTION_ADID, null != attribution.adid ? attribution.adid : ""); return map; } public static WritableMap eventSuccessToMap(AdjustEventSuccess eventSuccess) { WritableMap map = Arguments.createMap(); if (null == eventSuccess) { return map; } map.putString(EVENT_SUCCESS_MESSAGE, null != eventSuccess.message ? eventSuccess.message : ""); map.putString(EVENT_SUCCESS_TIMESTAMP, null != eventSuccess.timestamp ? eventSuccess.timestamp : ""); map.putString(EVENT_SUCCESS_ADID, null != eventSuccess.adid ? eventSuccess.adid : ""); map.putString(EVENT_SUCCESS_EVENT_TOKEN, null != eventSuccess.eventToken ? eventSuccess.eventToken : ""); map.putString(EVENT_SUCCESS_JSON_RESPONSE, null != eventSuccess.jsonResponse ? eventSuccess.jsonResponse.toString() : ""); return map; } public static WritableMap eventFailureToMap(AdjustEventFailure eventFailure) { WritableMap map = Arguments.createMap(); if (null == eventFailure) { return map; } map.putString(EVENT_FAILED_MESSAGE, null != eventFailure.message ? eventFailure.message : ""); map.putString(EVENT_FAILED_TIMESTAMP, null != eventFailure.timestamp ? eventFailure.timestamp : ""); map.putString(EVENT_FAILED_ADID, null != eventFailure.adid ? eventFailure.adid : ""); map.putString(EVENT_FAILED_EVENT_TOKEN, null != eventFailure.eventToken ? eventFailure.eventToken : ""); map.putString(EVENT_FAILED_WILL_RETRY, eventFailure.willRetry ? "true" : "false"); map.putString(EVENT_FAILED_JSON_RESPONSE, null != eventFailure.jsonResponse ? eventFailure.jsonResponse.toString() : ""); return map; } public static WritableMap sessionSuccessToMap(AdjustSessionSuccess sessionSuccess) { WritableMap map = Arguments.createMap(); if (null == sessionSuccess) { return map; } map.putString(SESSION_SUCCESS_MESSAGE, null != sessionSuccess.message ? sessionSuccess.message : ""); map.putString(SESSION_SUCCESS_TIMESTAMP, null != sessionSuccess.timestamp ? sessionSuccess.timestamp : ""); map.putString(SESSION_SUCCESS_ADID, null != sessionSuccess.adid ? sessionSuccess.adid : ""); map.putString(SESSION_SUCCESS_JSON_RESPONSE, null != sessionSuccess.jsonResponse ? sessionSuccess.jsonResponse.toString() : ""); return map; } public static WritableMap sessionFailureToMap(AdjustSessionFailure sessionFailure) { WritableMap map = Arguments.createMap(); if (null == sessionFailure) { return map; } map.putString(SESSION_FAILED_MESSAGE, null != sessionFailure.message ? sessionFailure.message : ""); map.putString(SESSION_FAILED_TIMESTAMP, null != sessionFailure.timestamp ? sessionFailure.timestamp : ""); map.putString(SESSION_FAILED_ADID, null != sessionFailure.adid ? sessionFailure.adid : ""); map.putString(SESSION_FAILED_WILL_RETRY, sessionFailure.willRetry ? "true" : "false"); map.putString(SESSION_FAILED_JSON_RESPONSE, null != sessionFailure.jsonResponse ? sessionFailure.jsonResponse.toString() : ""); return map; } public static WritableMap deferredDeeplinkToMap(Uri uri) { WritableMap map = Arguments.createMap(); if (null == uri) { return map; } map.putString("uri", uri.toString()); return map; } /** * toMap converts a {@link ReadableMap} into a HashMap. * * @param readableMap The ReadableMap to be conveted. * @return A HashMap containing the data that was in the ReadableMap. */ public static Map<String, Object> toMap(@Nullable ReadableMap readableMap) { if (readableMap == null) { return null; } com.facebook.react.bridge.ReadableMapKeySetIterator iterator = readableMap.keySetIterator(); if (!iterator.hasNextKey()) { return null; } Map<String, Object> result = new HashMap<>(); while (iterator.hasNextKey()) { String key = iterator.nextKey(); String value = toObject(readableMap, key).toString(); if (value == null) { AdjustFactory.getLogger().warn("Null parameter inside key-value pair with key: " + key); continue; } result.put(key, value); } return result; } /** * toList converts a {@link ReadableArray} into an ArrayList. * * @param readableArray The ReadableArray to be conveted. * @return An ArrayList containing the data that was in the ReadableArray. */ public static List<Object> toList(@Nullable ReadableArray readableArray) { if (readableArray == null) { return null; } List<Object> result = new ArrayList<>(readableArray.size()); for (int index = 0; index < readableArray.size(); index++) { ReadableType readableType = readableArray.getType(index); switch (readableType) { case Null: break; case Boolean: result.add(readableArray.getBoolean(index)); break; case Number: // Can be int or double. double tmp = readableArray.getDouble(index); if (tmp == (int) tmp) { result.add((int) tmp); } else { result.add(tmp); } break; case String: result.add(readableArray.getString(index)); break; case Map: result.add(toMap(readableArray.getMap(index))); break; case Array: result = toList(readableArray.getArray(index)); break; default: AdjustFactory.getLogger().error("Could not convert object with index: " + index + "."); } } return result; } public static boolean isFieldValid(String field) { if (field != null) { if (!field.equals("") && !field.equals("null")) { return true; } } return false; } /** * toObject extracts a value from a {@link ReadableMap} by its key, * and returns a POJO representing that object. * * @param readableMap The Map to containing the value to be converted * @param key The key for the value to be converted * @return The converted POJO */ private static Object toObject(@Nullable ReadableMap readableMap, String key) { if (readableMap == null) { return null; } Object result = null; ReadableType readableType = readableMap.getType(key); switch (readableType) { case Null: result = null; break; case Boolean: result = readableMap.getBoolean(key); break; case Number: // Can be int or double. double tmp = readableMap.getDouble(key); if (tmp == (int) tmp) { result = (int) tmp; } else { result = tmp; } break; case String: result = readableMap.getString(key); break; case Map: result = toMap(readableMap.getMap(key)); break; case Array: result = toList(readableMap.getArray(key)); break; default: AdjustFactory.getLogger().error("Could not convert object with key: " + key + "."); } return result; } }