DCAE-D be initial commit
[sdc/dcae-d/dt-be-main.git] / dcaedt_be / src / main / java / org / onap / sdc / dcae / rule / editor / translators / FieldConditionTranslator.java
1 package org.onap.sdc.dcae.rule.editor.translators;
2
3 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Condition;
4 import org.onap.sdc.dcae.rule.editor.enums.OperatorTypeEnum;
5
6 import java.util.List;
7
8 public class FieldConditionTranslator implements IRuleElementTranslator<Condition> {
9
10         private static FieldConditionTranslator fieldConditionTranslator = new FieldConditionTranslator();
11
12         public static FieldConditionTranslator getInstance() {
13                 return fieldConditionTranslator;
14         }
15
16         private FieldConditionTranslator(){}
17
18         private class FieldFilterTranslation extends ProcessorTranslation {
19                 private String field;
20                 private String value;
21
22                 private FieldFilterTranslation(Condition condition) {
23                         clazz = OperatorTypeEnum.getTypeByName(condition.getOperator()).getType();
24                         field = condition.getLeft();
25                         value = condition.getRight().get(0);
26                 }
27         }
28
29         private class MultiFieldFilterTranslation extends ProcessorTranslation {
30                 private String field;
31                 private List<String> values;
32
33                 private MultiFieldFilterTranslation(Condition condition) {
34                         field = condition.getLeft();
35                         values = condition.getRight();
36                         clazz = OperatorTypeEnum.getTypeByName(condition.getOperator()).getModifiedType();
37                 }
38         }
39
40         public Translation translateToHpJson(Condition condition) {
41                 return 1 == condition.getRight().size() ? new FieldFilterTranslation(condition) : new MultiFieldFilterTranslation(condition);
42         }
43 }