Search in sources :

Example 1 with UserAttribute

use of com.optimizely.ab.config.audience.UserAttribute in project java-sdk by optimizely.

the class AudienceGsonDeserializer method parseConditions.

private Condition parseConditions(List<Object> rawObjectList) {
    List<Condition> conditions = new ArrayList<Condition>();
    String operand = (String) rawObjectList.get(0);
    for (int i = 1; i < rawObjectList.size(); i++) {
        Object obj = rawObjectList.get(i);
        if (obj instanceof List) {
            List<Object> objectList = (List<Object>) rawObjectList.get(i);
            conditions.add(parseConditions(objectList));
        } else {
            LinkedTreeMap<String, String> conditionMap = (LinkedTreeMap<String, String>) rawObjectList.get(i);
            conditions.add(new UserAttribute(conditionMap.get("name"), conditionMap.get("type"), conditionMap.get("value")));
        }
    }
    Condition condition;
    if (operand.equals("and")) {
        condition = new AndCondition(conditions);
    } else if (operand.equals("or")) {
        condition = new OrCondition(conditions);
    } else {
        condition = new NotCondition(conditions.get(0));
    }
    return condition;
}
Also used : Condition(com.optimizely.ab.config.audience.Condition) OrCondition(com.optimizely.ab.config.audience.OrCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) LinkedTreeMap(com.google.gson.internal.LinkedTreeMap) NotCondition(com.optimizely.ab.config.audience.NotCondition) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) ArrayList(java.util.ArrayList) AndCondition(com.optimizely.ab.config.audience.AndCondition) JsonObject(com.google.gson.JsonObject) ArrayList(java.util.ArrayList) List(java.util.List) OrCondition(com.optimizely.ab.config.audience.OrCondition)

Example 2 with UserAttribute

use of com.optimizely.ab.config.audience.UserAttribute in project java-sdk by optimizely.

the class JsonConfigParser method parseConditions.

private Condition parseConditions(JSONArray conditionJson) {
    List<Condition> conditions = new ArrayList<Condition>();
    String operand = (String) conditionJson.get(0);
    for (int i = 1; i < conditionJson.length(); i++) {
        Object obj = conditionJson.get(i);
        if (obj instanceof JSONArray) {
            conditions.add(parseConditions(conditionJson.getJSONArray(i)));
        } else {
            JSONObject conditionMap = (JSONObject) obj;
            String value = null;
            if (conditionMap.has("value")) {
                value = conditionMap.getString("value");
            }
            conditions.add(new UserAttribute((String) conditionMap.get("name"), (String) conditionMap.get("type"), value));
        }
    }
    Condition condition;
    if (operand.equals("and")) {
        condition = new AndCondition(conditions);
    } else if (operand.equals("or")) {
        condition = new OrCondition(conditions);
    } else {
        condition = new NotCondition(conditions.get(0));
    }
    return condition;
}
Also used : Condition(com.optimizely.ab.config.audience.Condition) OrCondition(com.optimizely.ab.config.audience.OrCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) JSONObject(org.json.JSONObject) NotCondition(com.optimizely.ab.config.audience.NotCondition) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) ArrayList(java.util.ArrayList) JSONArray(org.json.JSONArray) JSONObject(org.json.JSONObject) OrCondition(com.optimizely.ab.config.audience.OrCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition)

Example 3 with UserAttribute

use of com.optimizely.ab.config.audience.UserAttribute in project java-sdk by optimizely.

the class AudienceJacksonDeserializer method parseConditions.

private Condition parseConditions(List<Object> rawObjectList) {
    List<Condition> conditions = new ArrayList<Condition>();
    String operand = (String) rawObjectList.get(0);
    for (int i = 1; i < rawObjectList.size(); i++) {
        Object obj = rawObjectList.get(i);
        if (obj instanceof List) {
            List<Object> objectList = (List<Object>) rawObjectList.get(i);
            conditions.add(parseConditions(objectList));
        } else {
            HashMap<String, String> conditionMap = (HashMap<String, String>) rawObjectList.get(i);
            conditions.add(new UserAttribute(conditionMap.get("name"), conditionMap.get("type"), conditionMap.get("value")));
        }
    }
    Condition condition;
    if (operand.equals("and")) {
        condition = new AndCondition(conditions);
    } else if (operand.equals("or")) {
        condition = new OrCondition(conditions);
    } else {
        condition = new NotCondition(conditions.get(0));
    }
    return condition;
}
Also used : Condition(com.optimizely.ab.config.audience.Condition) OrCondition(com.optimizely.ab.config.audience.OrCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) HashMap(java.util.HashMap) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) ArrayList(java.util.ArrayList) AndCondition(com.optimizely.ab.config.audience.AndCondition) ArrayList(java.util.ArrayList) List(java.util.List) OrCondition(com.optimizely.ab.config.audience.OrCondition)

Example 4 with UserAttribute

use of com.optimizely.ab.config.audience.UserAttribute in project java-sdk by optimizely.

the class ProjectConfigTest method verifyGetAudienceConditionsFromValidId.

/**
 * Asserts that getAudienceConditionsFromId returns the respective conditions for an audience, provided the
 * audience ID parameter is valid.
 */
@Test
public void verifyGetAudienceConditionsFromValidId() throws Exception {
    List<Condition> userAttributes = new ArrayList<Condition>();
    userAttributes.add(new UserAttribute("browser_type", "custom_dimension", "firefox"));
    OrCondition orInner = new OrCondition(userAttributes);
    NotCondition notCondition = new NotCondition(orInner);
    List<Condition> outerOrList = new ArrayList<Condition>();
    outerOrList.add(notCondition);
    OrCondition orOuter = new OrCondition(outerOrList);
    List<Condition> andList = new ArrayList<Condition>();
    andList.add(orOuter);
    Condition expectedConditions = new AndCondition(andList);
    Condition actualConditions = projectConfig.getAudienceConditionsFromId("100");
    assertThat(actualConditions, is(expectedConditions));
}
Also used : Condition(com.optimizely.ab.config.audience.Condition) OrCondition(com.optimizely.ab.config.audience.OrCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) ArrayList(java.util.ArrayList) OrCondition(com.optimizely.ab.config.audience.OrCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) Test(org.junit.Test)

Example 5 with UserAttribute

use of com.optimizely.ab.config.audience.UserAttribute in project java-sdk by optimizely.

the class ProjectConfigTestUtils method generateValidProjectConfigV3.

private static ProjectConfig generateValidProjectConfigV3() {
    List<LiveVariableUsageInstance> variationVtag1VariableUsageInstances = asList(new LiveVariableUsageInstance("6", "True"), new LiveVariableUsageInstance("2", "10"), new LiveVariableUsageInstance("3", "string_var_vtag1"), new LiveVariableUsageInstance("4", "5.3"));
    List<LiveVariableUsageInstance> variationVtag2VariableUsageInstances = asList(new LiveVariableUsageInstance("6", "False"), new LiveVariableUsageInstance("2", "20"), new LiveVariableUsageInstance("3", "string_var_vtag2"), new LiveVariableUsageInstance("4", "6.3"));
    List<Experiment> experiments = asList(new Experiment("223", "etag1", "Running", "1", singletonList("100"), asList(new Variation("276", "vtag1", variationVtag1VariableUsageInstances), new Variation("277", "vtag2", variationVtag2VariableUsageInstances)), Collections.singletonMap("testUser1", "vtag1"), asList(new TrafficAllocation("276", 3500), new TrafficAllocation("277", 9000)), ""), new Experiment("118", "etag2", "Not started", "2", singletonList("100"), asList(new Variation("278", "vtag3", Collections.<LiveVariableUsageInstance>emptyList()), new Variation("279", "vtag4", Collections.<LiveVariableUsageInstance>emptyList())), Collections.singletonMap("testUser3", "vtag3"), asList(new TrafficAllocation("278", 4500), new TrafficAllocation("279", 9000)), ""));
    List<Attribute> attributes = singletonList(new Attribute("134", "browser_type"));
    List<String> singleExperimentId = singletonList("223");
    List<String> multipleExperimentIds = asList("118", "223");
    List<EventType> events = asList(new EventType("971", "clicked_cart", singleExperimentId), new EventType("098", "Total Revenue", singleExperimentId), new EventType("099", "clicked_purchase", multipleExperimentIds), new EventType("100", "no_running_experiments", singletonList("118")));
    List<Condition> userAttributes = new ArrayList<Condition>();
    userAttributes.add(new UserAttribute("browser_type", "custom_dimension", "firefox"));
    OrCondition orInner = new OrCondition(userAttributes);
    NotCondition notCondition = new NotCondition(orInner);
    List<Condition> outerOrList = new ArrayList<Condition>();
    outerOrList.add(notCondition);
    OrCondition orOuter = new OrCondition(outerOrList);
    List<Condition> andList = new ArrayList<Condition>();
    andList.add(orOuter);
    AndCondition andCondition = new AndCondition(andList);
    List<Audience> audiences = singletonList(new Audience("100", "not_firefox_users", andCondition));
    Map<String, String> userIdToVariationKeyMap = new HashMap<String, String>();
    userIdToVariationKeyMap.put("testUser1", "e1_vtag1");
    userIdToVariationKeyMap.put("testUser2", "e1_vtag2");
    List<Experiment> randomGroupExperiments = asList(new Experiment("301", "group_etag2", "Running", "3", singletonList("100"), asList(new Variation("282", "e2_vtag1", Collections.<LiveVariableUsageInstance>emptyList()), new Variation("283", "e2_vtag2", Collections.<LiveVariableUsageInstance>emptyList())), Collections.<String, String>emptyMap(), asList(new TrafficAllocation("282", 5000), new TrafficAllocation("283", 10000)), "42"), new Experiment("300", "group_etag1", "Running", "4", singletonList("100"), asList(new Variation("280", "e1_vtag1", Collections.singletonList(new LiveVariableUsageInstance("7", "True"))), new Variation("281", "e1_vtag2", Collections.singletonList(new LiveVariableUsageInstance("7", "False")))), userIdToVariationKeyMap, asList(new TrafficAllocation("280", 3000), new TrafficAllocation("281", 10000)), "42"));
    List<Experiment> overlappingGroupExperiments = asList(new Experiment("302", "overlapping_etag1", "Running", "5", singletonList("100"), asList(new Variation("284", "e1_vtag1", Collections.<LiveVariableUsageInstance>emptyList()), new Variation("285", "e1_vtag2", Collections.<LiveVariableUsageInstance>emptyList())), userIdToVariationKeyMap, asList(new TrafficAllocation("284", 1500), new TrafficAllocation("285", 3000)), "43"));
    Group randomPolicyGroup = new Group("42", "random", randomGroupExperiments, asList(new TrafficAllocation("300", 3000), new TrafficAllocation("301", 9000), new TrafficAllocation("", 10000)));
    Group overlappingPolicyGroup = new Group("43", "overlapping", overlappingGroupExperiments, Collections.<TrafficAllocation>emptyList());
    List<Group> groups = asList(randomPolicyGroup, overlappingPolicyGroup);
    List<LiveVariable> liveVariables = asList(new LiveVariable("1", "boolean_variable", "False", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.BOOLEAN), new LiveVariable("2", "integer_variable", "5", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.INTEGER), new LiveVariable("3", "string_variable", "string_live_variable", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.STRING), new LiveVariable("4", "double_variable", "13.37", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.DOUBLE), new LiveVariable("5", "archived_variable", "True", LiveVariable.VariableStatus.ARCHIVED, LiveVariable.VariableType.BOOLEAN), new LiveVariable("6", "etag1_variable", "False", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.BOOLEAN), new LiveVariable("7", "group_etag1_variable", "False", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.BOOLEAN), new LiveVariable("8", "unused_string_variable", "unused_variable", LiveVariable.VariableStatus.ACTIVE, LiveVariable.VariableType.STRING));
    return new ProjectConfig("789", "1234", "3", "42", groups, experiments, attributes, events, audiences, true, liveVariables);
}
Also used : NotCondition(com.optimizely.ab.config.audience.NotCondition) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) HashMap(java.util.HashMap) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) ArrayList(java.util.ArrayList) AndCondition(com.optimizely.ab.config.audience.AndCondition) Condition(com.optimizely.ab.config.audience.Condition) OrCondition(com.optimizely.ab.config.audience.OrCondition) NotCondition(com.optimizely.ab.config.audience.NotCondition) AndCondition(com.optimizely.ab.config.audience.AndCondition) Audience(com.optimizely.ab.config.audience.Audience) OrCondition(com.optimizely.ab.config.audience.OrCondition)

Aggregations

AndCondition (com.optimizely.ab.config.audience.AndCondition)7 Condition (com.optimizely.ab.config.audience.Condition)7 NotCondition (com.optimizely.ab.config.audience.NotCondition)7 OrCondition (com.optimizely.ab.config.audience.OrCondition)7 UserAttribute (com.optimizely.ab.config.audience.UserAttribute)7 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)3 Audience (com.optimizely.ab.config.audience.Audience)2 List (java.util.List)2 JsonObject (com.google.gson.JsonObject)1 LinkedTreeMap (com.google.gson.internal.LinkedTreeMap)1 JSONArray (org.json.JSONArray)1 JSONObject (org.json.JSONObject)1 JSONArray (org.json.simple.JSONArray)1 JSONObject (org.json.simple.JSONObject)1 Test (org.junit.Test)1