/**
   * Builds data in conversion link based on class member values, to be encrypted.
   *
   * @return URL-encoded string based on class settings.
   */
  public static synchronized String buildDataUnencrypted(TuneEvent eventData) {
    params = TuneParameters.getInstance();

    StringBuilder link = new StringBuilder();

    link.append(TuneUrlKeys.CONNECTION_TYPE + "=" + params.getConnectionType());
    safeAppend(link, TuneUrlKeys.ANDROID_ID, params.getAndroidId());
    safeAppend(link, TuneUrlKeys.ANDROID_ID_MD5, params.getAndroidIdMd5());
    safeAppend(link, TuneUrlKeys.ANDROID_ID_SHA1, params.getAndroidIdSha1());
    safeAppend(link, TuneUrlKeys.ANDROID_ID_SHA256, params.getAndroidIdSha256());
    safeAppend(link, TuneUrlKeys.APP_AD_TRACKING, params.getAppAdTrackingEnabled());
    safeAppend(link, TuneUrlKeys.APP_NAME, params.getAppName());
    safeAppend(link, TuneUrlKeys.APP_VERSION, params.getAppVersion());
    safeAppend(link, TuneUrlKeys.APP_VERSION_NAME, params.getAppVersionName());
    safeAppend(link, TuneUrlKeys.COUNTRY_CODE, params.getCountryCode());
    safeAppend(link, TuneUrlKeys.DEVICE_BRAND, params.getDeviceBrand());
    safeAppend(link, TuneUrlKeys.DEVICE_BUILD, params.getDeviceBuild());
    safeAppend(link, TuneUrlKeys.DEVICE_CARRIER, params.getDeviceCarrier());
    safeAppend(link, TuneUrlKeys.DEVICE_CPU_TYPE, params.getDeviceCpuType());
    safeAppend(link, TuneUrlKeys.DEVICE_CPU_SUBTYPE, params.getDeviceCpuSubtype());
    safeAppend(link, TuneUrlKeys.DEVICE_MODEL, params.getDeviceModel());
    safeAppend(link, TuneUrlKeys.DEVICE_ID, params.getDeviceId());
    safeAppend(link, TuneUrlKeys.FIRE_AID, params.getFireAdvertisingId());
    safeAppend(link, TuneUrlKeys.FIRE_AD_TRACKING_DISABLED, params.getFireAdTrackingLimited());
    safeAppend(link, TuneUrlKeys.GOOGLE_AID, params.getGoogleAdvertisingId());
    safeAppend(link, TuneUrlKeys.GOOGLE_AD_TRACKING_DISABLED, params.getGoogleAdTrackingLimited());
    safeAppend(link, TuneUrlKeys.INSTALL_DATE, params.getInstallDate());
    safeAppend(link, TuneUrlKeys.INSTALLER, params.getInstaller());
    safeAppend(link, TuneUrlKeys.INSTALL_REFERRER, params.getInstallReferrer());
    safeAppend(link, TuneUrlKeys.LANGUAGE, params.getLanguage());
    safeAppend(link, TuneUrlKeys.LAST_OPEN_LOG_ID, params.getLastOpenLogId());
    if (params.getLocation() != null) {
      safeAppend(link, TuneUrlKeys.ALTITUDE, Double.toString(params.getLocation().getAltitude()));
      safeAppend(link, TuneUrlKeys.LATITUDE, Double.toString(params.getLocation().getLatitude()));
      safeAppend(link, TuneUrlKeys.LONGITUDE, Double.toString(params.getLocation().getLongitude()));
    } else {
      safeAppend(link, TuneUrlKeys.ALTITUDE, params.getAltitude());
      safeAppend(link, TuneUrlKeys.LATITUDE, params.getLatitude());
      safeAppend(link, TuneUrlKeys.LONGITUDE, params.getLongitude());
    }
    safeAppend(link, TuneUrlKeys.LOCALE, params.getLocale());
    safeAppend(link, TuneUrlKeys.MAC_ADDRESS, params.getMacAddress());
    safeAppend(link, TuneUrlKeys.MAT_ID, params.getMatId());
    safeAppend(link, TuneUrlKeys.MOBILE_COUNTRY_CODE, params.getMCC());
    safeAppend(link, TuneUrlKeys.MOBILE_NETWORK_CODE, params.getMNC());
    safeAppend(link, TuneUrlKeys.OPEN_LOG_ID, params.getOpenLogId());
    safeAppend(link, TuneUrlKeys.OS_VERSION, params.getOsVersion());
    safeAppend(link, TuneUrlKeys.SDK_PLUGIN, params.getPluginName());
    safeAppend(link, TuneUrlKeys.PURCHASE_STATUS, params.getPurchaseStatus());
    safeAppend(link, TuneUrlKeys.REFERRER_DELAY, params.getReferrerDelay());
    safeAppend(link, TuneUrlKeys.SCREEN_DENSITY, params.getScreenDensity());
    safeAppend(
        link, TuneUrlKeys.SCREEN_SIZE, params.getScreenWidth() + "x" + params.getScreenHeight());
    safeAppend(link, TuneUrlKeys.SDK_VERSION, params.getSdkVersion());
    safeAppend(link, TuneUrlKeys.TRUSTE_ID, params.getTRUSTeId());
    safeAppend(link, TuneUrlKeys.USER_AGENT, params.getUserAgent());

    // Append event-level params
    safeAppend(link, TuneUrlKeys.ATTRIBUTE1, eventData.getAttribute1());
    safeAppend(link, TuneUrlKeys.ATTRIBUTE2, eventData.getAttribute2());
    safeAppend(link, TuneUrlKeys.ATTRIBUTE3, eventData.getAttribute3());
    safeAppend(link, TuneUrlKeys.ATTRIBUTE4, eventData.getAttribute4());
    safeAppend(link, TuneUrlKeys.ATTRIBUTE5, eventData.getAttribute5());
    safeAppend(link, TuneUrlKeys.CONTENT_ID, eventData.getContentId());
    safeAppend(link, TuneUrlKeys.CONTENT_TYPE, eventData.getContentType());
    // Event-level currency overrides TUNE class-level
    if (eventData.getCurrencyCode() != null) {
      safeAppend(link, TuneUrlKeys.CURRENCY_CODE, eventData.getCurrencyCode());
    } else {
      safeAppend(link, TuneUrlKeys.CURRENCY_CODE, params.getCurrencyCode());
    }
    if (eventData.getDate1() != null) {
      safeAppend(link, TuneUrlKeys.DATE1, Long.toString(eventData.getDate1().getTime() / 1000));
    }
    if (eventData.getDate2() != null) {
      safeAppend(link, TuneUrlKeys.DATE2, Long.toString(eventData.getDate2().getTime() / 1000));
    }
    if (eventData.getDeviceForm() != null) {
      safeAppend(link, TuneUrlKeys.DEVICE_FORM, eventData.getDeviceForm());
    }
    if (eventData.getLevel() != 0) {
      safeAppend(link, TuneUrlKeys.LEVEL, Integer.toString(eventData.getLevel()));
    }
    if (eventData.getQuantity() != 0) {
      safeAppend(link, TuneUrlKeys.QUANTITY, Integer.toString(eventData.getQuantity()));
    }
    if (eventData.getRating() != 0) {
      safeAppend(link, TuneUrlKeys.RATING, Double.toString(eventData.getRating()));
    }
    safeAppend(link, TuneUrlKeys.REF_ID, eventData.getRefId());
    safeAppend(link, TuneUrlKeys.REVENUE, Double.toString(eventData.getRevenue()));
    safeAppend(link, TuneUrlKeys.SEARCH_STRING, eventData.getSearchString());

    // Append user information
    safeAppend(link, TuneUrlKeys.AGE, params.getAge());
    safeAppend(link, TuneUrlKeys.EXISTING_USER, params.getExistingUser());
    safeAppend(link, TuneUrlKeys.FACEBOOK_USER_ID, params.getFacebookUserId());
    safeAppend(link, TuneUrlKeys.GENDER, params.getGender());
    safeAppend(link, TuneUrlKeys.GOOGLE_USER_ID, params.getGoogleUserId());
    safeAppend(link, TuneUrlKeys.IS_PAYING_USER, params.getIsPayingUser());
    safeAppend(link, TuneUrlKeys.TWITTER_USER_ID, params.getTwitterUserId());
    safeAppend(link, TuneUrlKeys.USER_EMAIL_MD5, params.getUserEmailMd5());
    safeAppend(link, TuneUrlKeys.USER_EMAIL_SHA1, params.getUserEmailSha1());
    safeAppend(link, TuneUrlKeys.USER_EMAIL_SHA256, params.getUserEmailSha256());
    safeAppend(link, TuneUrlKeys.USER_ID, params.getUserId());
    safeAppend(link, TuneUrlKeys.USER_NAME_MD5, params.getUserNameMd5());
    safeAppend(link, TuneUrlKeys.USER_NAME_SHA1, params.getUserNameSha1());
    safeAppend(link, TuneUrlKeys.USER_NAME_SHA256, params.getUserNameSha256());
    safeAppend(link, TuneUrlKeys.USER_PHONE_MD5, params.getPhoneNumberMd5());
    safeAppend(link, TuneUrlKeys.USER_PHONE_SHA1, params.getPhoneNumberSha1());
    safeAppend(link, TuneUrlKeys.USER_PHONE_SHA256, params.getPhoneNumberSha256());

    return link.toString();
  }