34
34
*/
35
35
@ Immutable
36
36
@ JsonIgnoreProperties (ignoreUnknown = true )
37
- public class Experiment implements IdKeyMapped {
37
+ public class Experiment implements ExperimentCore {
38
38
39
39
private final String id ;
40
40
private final String key ;
@@ -43,10 +43,6 @@ public class Experiment implements IdKeyMapped {
43
43
private final String groupId ;
44
44
private final Cmab cmab ;
45
45
46
- private final String AND = "AND" ;
47
- private final String OR = "OR" ;
48
- private final String NOT = "NOT" ;
49
-
50
46
private final List <String > audienceIds ;
51
47
private final Condition <AudienceIdCondition > audienceConditions ;
52
48
private final List <Variation > variations ;
@@ -202,98 +198,6 @@ public boolean isLaunched() {
202
198
return status .equals (ExperimentStatus .LAUNCHED .toString ());
203
199
}
204
200
205
- public String serializeConditions (Map <String , String > audiencesMap ) {
206
- Condition condition = this .audienceConditions ;
207
- return condition instanceof EmptyCondition ? "" : this .serialize (condition , audiencesMap );
208
- }
209
-
210
- private String getNameFromAudienceId (String audienceId , Map <String , String > audiencesMap ) {
211
- StringBuilder audienceName = new StringBuilder ();
212
- if (audiencesMap != null && audiencesMap .get (audienceId ) != null ) {
213
- audienceName .append ("\" " + audiencesMap .get (audienceId ) + "\" " );
214
- } else {
215
- audienceName .append ("\" " + audienceId + "\" " );
216
- }
217
- return audienceName .toString ();
218
- }
219
-
220
- private String getOperandOrAudienceId (Condition condition , Map <String , String > audiencesMap ) {
221
- if (condition != null ) {
222
- if (condition instanceof AudienceIdCondition ) {
223
- return this .getNameFromAudienceId (condition .getOperandOrId (), audiencesMap );
224
- } else {
225
- return condition .getOperandOrId ();
226
- }
227
- } else {
228
- return "" ;
229
- }
230
- }
231
-
232
- public String serialize (Condition condition , Map <String , String > audiencesMap ) {
233
- StringBuilder stringBuilder = new StringBuilder ();
234
- List <Condition > conditions ;
235
-
236
- String operand = this .getOperandOrAudienceId (condition , audiencesMap );
237
- switch (operand ){
238
- case (AND ):
239
- conditions = ((AndCondition <?>) condition ).getConditions ();
240
- stringBuilder .append (this .getNameOrNextCondition (operand , conditions , audiencesMap ));
241
- break ;
242
- case (OR ):
243
- conditions = ((OrCondition <?>) condition ).getConditions ();
244
- stringBuilder .append (this .getNameOrNextCondition (operand , conditions , audiencesMap ));
245
- break ;
246
- case (NOT ):
247
- stringBuilder .append (operand + " " );
248
- Condition notCondition = ((NotCondition <?>) condition ).getCondition ();
249
- if (notCondition instanceof AudienceIdCondition ) {
250
- stringBuilder .append (serialize (notCondition , audiencesMap ));
251
- } else {
252
- stringBuilder .append ("(" + serialize (notCondition , audiencesMap ) + ")" );
253
- }
254
- break ;
255
- default :
256
- stringBuilder .append (operand );
257
- break ;
258
- }
259
-
260
- return stringBuilder .toString ();
261
- }
262
-
263
- public String getNameOrNextCondition (String operand , List <Condition > conditions , Map <String , String > audiencesMap ) {
264
- StringBuilder stringBuilder = new StringBuilder ();
265
- int index = 0 ;
266
- if (conditions .isEmpty ()) {
267
- return "" ;
268
- } else if (conditions .size () == 1 ) {
269
- return serialize (conditions .get (0 ), audiencesMap );
270
- } else {
271
- for (Condition con : conditions ) {
272
- index ++;
273
- if (index + 1 <= conditions .size ()) {
274
- if (con instanceof AudienceIdCondition ) {
275
- String audienceName = this .getNameFromAudienceId (((AudienceIdCondition <?>) con ).getAudienceId (),
276
- audiencesMap );
277
- stringBuilder .append ( audienceName + " " );
278
- } else {
279
- stringBuilder .append ("(" + serialize (con , audiencesMap ) + ") " );
280
- }
281
- stringBuilder .append (operand );
282
- stringBuilder .append (" " );
283
- } else {
284
- if (con instanceof AudienceIdCondition ) {
285
- String audienceName = this .getNameFromAudienceId (((AudienceIdCondition <?>) con ).getAudienceId (),
286
- audiencesMap );
287
- stringBuilder .append (audienceName );
288
- } else {
289
- stringBuilder .append ("(" + serialize (con , audiencesMap ) + ")" );
290
- }
291
- }
292
- }
293
- }
294
- return stringBuilder .toString ();
295
- }
296
-
297
201
@ Override
298
202
public String toString () {
299
203
return "Experiment{" +
0 commit comments