Skip to content

Commit

Permalink
Release 3.4.4
Browse files Browse the repository at this point in the history
  • Loading branch information
xuchang committed May 9, 2022
1 parent 6ea97c9 commit 2740dfa
Show file tree
Hide file tree
Showing 32 changed files with 4,126 additions and 155 deletions.
4 changes: 2 additions & 2 deletions SensorsAnalyticsSDK/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<groupId>com.sensorsdata.analytics.javasdk</groupId>
<name>SensorsAnalyticsSDK</name>
<artifactId>SensorsAnalyticsSDK</artifactId>
<version>3.4.3</version>
<version>3.4.4</version>
<description>The official Java SDK of Sensors Analytics</description>
<url>http://sensorsdata.cn</url>

Expand All @@ -37,7 +37,7 @@
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
<jdk.version>1.7</jdk.version>
<httpclient.version>4.5.13</httpclient.version>
<jackson-databind.version>2.9.10.7</jackson-databind.version>
<jackson-databind.version>2.9.10.8</jackson-databind.version>
<lombok.version>1.18.20</lombok.version>
<junit.version>4.11</junit.version>
<slf4j.version>1.7.25</slf4j.version>
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class SensorsAnalyticsWorker {

private final Consumer consumer;

private final Map<String, Object> superProperties = new ConcurrentHashMap<String, Object>();
private final Map<String, Object> superProperties = new ConcurrentHashMap<>();

private boolean enableTimeFree = false;

Expand Down Expand Up @@ -157,7 +157,7 @@ void shutdown() {
private Map<String, Object> generateEventMap(String distinctId, Boolean isLoginId, String originDistinctId,
Map<String, String> identity, String actionType, String eventName, Map<String, Object> properties) {
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("_track_id", new Random().nextInt());
eventMap.put("_track_id", SensorsAnalyticsUtil.getTrackId(properties, distinctId));
eventMap.put("type", actionType);
eventMap.put("lib", getLibProperties());
//开启历史数据导入
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ private SensorsConst() {
/**
* 当前JDK版本号,注意要和pom文件里面的version保持一致
*/
public static final String SDK_VERSION = "3.4.3";
public static final String SDK_VERSION = "3.4.4";
/**
* 当前语言类型
*/
Expand All @@ -38,6 +38,9 @@ private SensorsConst() {
*/
public static final String BIND_ID_ACTION_TYPE = "track_id_bind";
public static final String UNBIND_ID_ACTION_TYPE = "track_id_unbind";

public static final String ITEM_TYPE = "Item Type";
public static final String ITEM_ID = "Item Id";
/**
* 绑定事件名称
*/
Expand All @@ -46,9 +49,12 @@ private SensorsConst() {
* 解绑事件名称
*/
public static final String UNBIND_ID = "$UnbindID";

public static final String PROPERTIES = "properties";
/**
* 系统预置属性
*/
public static final String TRACK_ID = "$track_id";
public static final String PROJECT_SYSTEM_ATTR = "$project";
public static final String TIME_SYSTEM_ATTR = "$time";
public static final String TOKEN_SYSTEM_ATTR = "$token";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;

import com.sensorsdata.analytics.javasdk.bean.EventRecord;
import com.sensorsdata.analytics.javasdk.bean.IDMEventRecord;
import com.sensorsdata.analytics.javasdk.bean.IDMUserRecord;
import com.sensorsdata.analytics.javasdk.bean.ItemRecord;
import com.sensorsdata.analytics.javasdk.bean.UserRecord;
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;

import lombok.Getter;
Expand All @@ -12,7 +15,6 @@
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
* 神策数据格式
Expand Down Expand Up @@ -77,18 +79,38 @@ class SensorsData {
*/
private String itemId;

protected SensorsData(EventRecord eventRecord, String actionType) {
this(eventRecord.getDistinctId(), eventRecord.getOriginalId(), null, actionType, eventRecord.getEventName(),
eventRecord.getPropertyMap(), null, null, eventRecord.getTrackId());
}

protected SensorsData(ItemRecord itemRecord, String actionType ) {
this(null,null,null,actionType,null,itemRecord.getPropertyMap(),
itemRecord.getItemType(),itemRecord.getItemId(), itemRecord.getTrackId());
}

protected SensorsData (UserRecord userRecord, String actionType) {
this(userRecord.getDistinctId(), actionType, null, userRecord.getPropertyMap(), userRecord.getTrackId());
}

protected SensorsData(IDMUserRecord userRecord, String actionType) {
this(userRecord.getDistinctId(), actionType, userRecord.getIdentityMap(), userRecord.getPropertyMap());
this(userRecord.getDistinctId(), actionType, userRecord.getIdentityMap(), userRecord.getPropertyMap(),
userRecord.getTrackId());
}

protected SensorsData(IDMEventRecord eventRecord) {
this(eventRecord.getDistinctId(), eventRecord.getIdentityMap(), eventRecord.getEventName(),
eventRecord.getPropertyMap());
eventRecord.getPropertyMap(), eventRecord.getTrackId());
}

protected SensorsData(IDMEventRecord eventRecord, String actionType) {
this(eventRecord.getDistinctId(), null, eventRecord.getIdentityMap(), actionType,
eventRecord.getEventName(), eventRecord.getPropertyMap(), null, null, eventRecord.getTrackId());
}

protected SensorsData(String distinctId, String type, Map<String, String> identities,
Map<String, Object> properties) {
this(distinctId, null, identities, type, null, properties, null, null);
Map<String, Object> properties, Integer trackId) {
this(distinctId, null, identities, type, null, properties, null, null, trackId);
}

/**
Expand All @@ -99,13 +121,13 @@ protected SensorsData(String distinctId, String type, Map<String, String> identi
* @param properties 事件属性集合
*/
protected SensorsData(String distinctId, Map<String, String> identities, String event,
Map<String, Object> properties) {
this(distinctId, null, identities, TRACK_ACTION_TYPE, event, properties, null, null);
Map<String, Object> properties, Integer trackId) {
this(distinctId, null, identities, TRACK_ACTION_TYPE, event, properties, null, null, trackId);
}

private SensorsData(String distinctId, String originalId, Map<String, String> identities, String type, String event,
Map<String, Object> properties, String itemType, String itemId) {
this.trackId = new Random().nextInt();
Map<String, Object> properties, String itemType, String itemId, Integer trackId) {
this.trackId = trackId;
this.distinctId = distinctId;
this.originalId = originalId;
this.identities = identities;
Expand All @@ -118,6 +140,7 @@ private SensorsData(String distinctId, String originalId, Map<String, String> id
this.itemId = itemId;
}


protected static Map<String, Object> generateData(SensorsData sensorsData) {
Map<String, Object> eventMap = new HashMap<>();
if (sensorsData.getTrackId() != null) {
Expand Down Expand Up @@ -156,6 +179,9 @@ protected static Map<String, Object> generateData(SensorsData sensorsData) {
eventMap.put("item_type", sensorsData.getItemType());
}
if (sensorsData.getProperties() != null) {
if (sensorsData.getTrackId() != null) {
sensorsData.getProperties().remove(SensorsConst.TRACK_ID);
}
eventMap.put("properties", sensorsData.getProperties());
}
return eventMap;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.sensorsdata.analytics.javasdk.bean;

import com.sensorsdata.analytics.javasdk.SensorsConst;
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;

import java.io.Serializable;
import java.util.Date;
Expand All @@ -22,11 +24,21 @@ public class EventRecord implements Serializable {

private final Boolean isLoginId;

private EventRecord(String eventName, String distinctId, Boolean isLoginId, Map<String, Object> propertyMap) {
private final Integer trackId;

private final String originalId;

private EventRecord(String eventName, String distinctId, Boolean isLoginId, Map<String, Object> propertyMap,
Integer trackId, String originalId) {
this.eventName = eventName;
this.distinctId = distinctId;
this.isLoginId = isLoginId;
if (isLoginId) {
propertyMap.put(SensorsConst.LOGIN_SYSTEM_ATTR, true);
}
this.propertyMap = propertyMap;
this.trackId = trackId;
this.originalId = originalId;
}

@Override
Expand Down Expand Up @@ -59,16 +71,24 @@ public Boolean getIsLoginId() {
return isLoginId;
}

public String getOriginalId() {
return originalId;
}

public Integer getTrackId() {return trackId; }

public static class Builder {
private final Map<String, Object> propertyMap = new HashMap<String, Object>();
private final Map<String, Object> propertyMap = new HashMap<>();
private String eventName;
private String distinctId;
private Boolean isLoginId;
private Integer trackId;
private String originalId;

private Builder() {
}

public EventRecord build() throws InvalidArgumentException {

if (eventName == null) {
throw new InvalidArgumentException("The eventName is empty.");
}
Expand All @@ -78,7 +98,16 @@ public EventRecord build() throws InvalidArgumentException {
if (isLoginId == null) {
throw new InvalidArgumentException("The isLoginId is empty.");
}
return new EventRecord(eventName, distinctId, isLoginId, propertyMap);
SensorsAnalyticsUtil.assertKey("event_name",eventName);
SensorsAnalyticsUtil.assertValue("distinct_id", distinctId);
String message = String.format("[distinct_id=%s,event_name=%s,is_login_id=%s]",distinctId,eventName,isLoginId);
trackId = SensorsAnalyticsUtil.getTrackId(propertyMap, message);
return new EventRecord(eventName, distinctId, isLoginId, propertyMap,trackId, originalId);
}

public EventRecord.Builder setOriginalId(String originalId) {
this.originalId = originalId;
return this;
}

public EventRecord.Builder setEventName(String eventName) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sensorsdata.analytics.javasdk.bean;

import static com.sensorsdata.analytics.javasdk.SensorsConst.LOGIN_SYSTEM_ATTR;
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;

import com.sensorsdata.analytics.javasdk.SensorsConst;
import com.sensorsdata.analytics.javasdk.common.Pair;
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
Expand Down Expand Up @@ -44,12 +44,16 @@ public class IDMEventRecord extends SensorsAnalyticsIdentity {
*/
private final Map<String, Object> propertyMap;

private final Integer trackId;


private IDMEventRecord(Map<String, String> identityMap, String eventName, String distinctId,
Map<String, Object> propertyMap) {
Map<String, Object> propertyMap, Integer trackId) {
super(identityMap);
this.eventName = eventName;
this.distinctId = distinctId;
this.propertyMap = propertyMap;
this.trackId = trackId;
}

public static IDMBuilder starter() {
Expand All @@ -62,6 +66,7 @@ public static class IDMBuilder {
private final Map<String, Object> propertyMap = new HashMap<>();
private String eventName;
private String distinctId;
private Integer trackId;

public IDMEventRecord build() throws InvalidArgumentException {
SensorsAnalyticsUtil.assertKey("event_name", eventName);
Expand All @@ -73,8 +78,12 @@ public IDMEventRecord build() throws InvalidArgumentException {
}
Pair<String, Boolean> resPair =
SensorsAnalyticsUtil.checkIdentitiesAndGenerateDistinctId(distinctId, idMap);
propertyMap.put(LOGIN_SYSTEM_ATTR, resPair.getValue());
return new IDMEventRecord(idMap, eventName, resPair.getKey(), propertyMap);
if (resPair.getValue()) {
propertyMap.put(SensorsConst.LOGIN_SYSTEM_ATTR, true);
}
String message = String.format("[distinct_id=%s,event_name=%s]",distinctId,eventName);
trackId = SensorsAnalyticsUtil.getTrackId(propertyMap, message);
return new IDMEventRecord(idMap, eventName, resPair.getKey(), propertyMap,trackId);
}

public IDMEventRecord.IDMBuilder identityMap(Map<String, String> identityMap) {
Expand All @@ -97,7 +106,6 @@ public IDMEventRecord.IDMBuilder setEventName(@NonNull String eventName) {
public IDMEventRecord.IDMBuilder setDistinctId(@NonNull String distinctId) {
this.distinctId = distinctId;
// IDM3.0 设置 distinctId,设置 $is_login_id = false,其实也可不设置
propertyMap.put(LOGIN_SYSTEM_ATTR, false);
return this;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sensorsdata.analytics.javasdk.bean;

import static com.sensorsdata.analytics.javasdk.SensorsConst.LOGIN_SYSTEM_ATTR;

import com.sensorsdata.analytics.javasdk.SensorsConst;
import com.sensorsdata.analytics.javasdk.common.Pair;
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
Expand Down Expand Up @@ -35,10 +35,14 @@ public class IDMUserRecord extends SensorsAnalyticsIdentity {

private final String distinctId;

private IDMUserRecord(Map<String, String> identityMap, Map<String, Object> propertyMap, String distinctId) {
private final Integer trackId;

private IDMUserRecord(Map<String, String> identityMap, Map<String, Object> propertyMap, String distinctId,
Integer trackId) {
super(identityMap);
this.propertyMap = propertyMap;
this.distinctId = distinctId;
this.trackId = trackId;
}

public static IDMBuilder starter() {
Expand All @@ -50,12 +54,18 @@ public static class IDMBuilder {
private final Map<String, String> idMap = new LinkedHashMap<>();
private String distinctId;
private final Map<String, Object> propertyMap = new HashMap<>();
private Integer trackId;

public IDMUserRecord build() throws InvalidArgumentException {
Pair<String, Boolean> resPair =
SensorsAnalyticsUtil.checkIdentitiesAndGenerateDistinctId(distinctId, idMap);
propertyMap.put(LOGIN_SYSTEM_ATTR, resPair.getValue());
return new IDMUserRecord(idMap, propertyMap, resPair.getKey());
if (resPair.getValue()) {
propertyMap.put(SensorsConst.LOGIN_SYSTEM_ATTR, true);
}
// 填充 distinct_id 和 目标表
String message = String.format("[distinct_id=%s,target_table=user]",distinctId);
trackId = SensorsAnalyticsUtil.getTrackId(propertyMap, message);
return new IDMUserRecord(idMap, propertyMap, resPair.getKey(), trackId);
}

public IDMUserRecord.IDMBuilder identityMap(Map<String, String> identityMap) {
Expand All @@ -73,7 +83,6 @@ public IDMUserRecord.IDMBuilder addIdentityProperty(String key, String value) {
public IDMUserRecord.IDMBuilder setDistinctId(@NonNull String distinctId) {
this.distinctId = distinctId;
// IDM3.0 设置 distinctId,设置 $is_login_id = false,其实也可不设置
propertyMap.put(LOGIN_SYSTEM_ATTR, false);
return this;
}

Expand Down
Loading

0 comments on commit 2740dfa

Please sign in to comment.