public void addFactsToSession()

in marketing-analytics/predicting/ml-data-windowing-pipeline/transform/MapGATableRowToSession.java [75:119]


  public void addFactsToSession(
      Session session, Instant time, String factNamePrefix, Object object) {
    if (object instanceof TableRow) {
      TableRow tablerow = (TableRow) object;
      Instant childTime = time;
      if (factNamePrefix.equals("hits")) {
        childTime = childTime.plus(
            Duration.millis(Long.parseLong(tablerow.get("time").toString()) / 1000));
        DateTime dateTime = childTime.toDateTime();
        addFactToSession(
            "dayOfWeekOfHit", String.valueOf(dateTime.getDayOfWeek()), childTime, session);
        addFactToSession("hourOfHit", String.valueOf(dateTime.getHourOfDay()), childTime, session);
      }

      if (factNamePrefix.contains(CUSTOM_DIMENSIONS)) {
        addFactsToSession(
            session,
            childTime,
            factNamePrefix + ".index." + tablerow.get(CUSTOM_DIMENSION_INDEX),
            tablerow.get(CUSTOM_DIMENSION_VALUE));
        return;
      }

      for (Map.Entry<String, Object> entry : tablerow.entrySet()) {
        String childFactNamePrefix = factNamePrefix;
        if (!factNamePrefix.isEmpty()) {
          childFactNamePrefix += ".";
        }
        childFactNamePrefix += entry.getKey();
        if (entry.getValue() instanceof List) {
          for (Object childObject : (List) entry.getValue()) {
            addFactsToSession(session, childTime, childFactNamePrefix, childObject);
          }
        } else {
          addFactsToSession(session, childTime, childFactNamePrefix, entry.getValue());
        }
      }
    } else {
      String factValue = object.toString();
      if (factNamePrefix.contains("Path")) {
        factValue = normalizeURL(factValue);
      }
      addFactToSession(factNamePrefix, factValue, time, session);
    }
  }