2 * In Samsung Ukraine R&D Center (SRK under a contract between)
3 * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
6 package com.samsung.samserver.web.rest.service.vm;
8 import com.fasterxml.jackson.annotation.*;
9 import javax.validation.Valid;
10 import javax.validation.constraints.*;
15 import static com.samsung.samserver.web.rest.service.vm.DPolicy.*;
16 import static com.samsung.samserver.web.rest.service.vm.UIPoliciesUpdate.*;
17 import static com.samsung.samserver.web.rest.service.vm.UIPolicies.InputType.*;
20 * View Model for UI Policies.
22 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
26 @Getter @Setter @ToString
27 public class UIPolicies {
34 @JsonProperty("policies")
35 private List<UIPolicy> uiPolicyList;
37 static final class InputType {
38 private InputType() {}
39 public static final String FLAG = "flag";
40 public static final String INTEGER = "input-number";
41 public static final String FLAG_SET = "select";
42 public static final String MULT_CHOICE = "multiselect";
45 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
47 @JsonSubTypes.Type(value = Flag.class, name = FLAG),
48 @JsonSubTypes.Type(value = UIInteger.class, name = INTEGER),
49 @JsonSubTypes.Type(value = FlagSet.class, name = FLAG_SET),
50 @JsonSubTypes.Type(value = MultChoice.class, name = MULT_CHOICE)
52 public interface UIPolicy {
55 String toJSONDevice();
56 String toJSONDeviceWithoutValue();
58 UIPolicy bind(DPolicy dPolicy);
59 UIPolicy bind(UIPolicyUpdate uiPolicyUpdate);
61 Logger log = LoggerFactory.getLogger(UIPolicy.class);
63 static UIPolicy make(String uiType) {
64 UIPolicy uiPolicy = null;
67 uiPolicy = new Flag();
70 uiPolicy = new UIInteger();
73 uiPolicy = new FlagSet();
76 uiPolicy = new MultChoice();
79 log.debug("policy: {}","mapping not found");
85 public static final String NAME = "\"name\":\"";
86 public static final String VALUE = "\"value\":";
89 @Getter @Setter @ToString
90 public static class Flag implements UIPolicy {
97 private Integer value;
99 private String uiname;
101 private String descr;
103 private Integer state;
105 public UIPolicy bind(DPolicy dPolicy){
106 DPolicyInteger dPolicyInteger = (DPolicyInteger)dPolicy;
107 name = dPolicyInteger.getName() ;
108 value = dPolicyInteger.getValue();
109 state = (dPolicyInteger.getError()!=null) ? 0:1;
113 public UIPolicy bind(UIPolicyUpdate update){
114 FlagUpdate flagUpdate = (FlagUpdate)update;
115 name = flagUpdate.getName() ;
116 value = flagUpdate.getValue();
120 public String toJSONDevice() {
122 NAME + name + "\"," +
127 public String toJSONDeviceWithoutValue() {
134 @JsonRootName(INTEGER)
135 @Getter @Setter @ToString
136 public static class UIInteger implements UIPolicy {
142 private Integer value;
144 private String uiname;
146 private String descr;
148 private Integer state;
150 public UIInteger bind(DPolicy dPolicy){
151 DPolicyInteger dPolicyInteger = (DPolicyInteger)dPolicy;
152 name = dPolicyInteger.getName() ;
153 value = dPolicyInteger.getValue();
154 state = (dPolicyInteger.getError()!=null) ? 0:1;
158 public UIPolicy bind(UIPolicyUpdate update){
159 UIIntegerUpdate uiIntegerUpdate = (UIIntegerUpdate)update;
160 name = uiIntegerUpdate.getName() ;
161 value = uiIntegerUpdate.getValue();
165 public String toJSONDevice() {
167 NAME + name + "\"," +
172 public String toJSONDeviceWithoutValue() {
179 @JsonRootName(FLAG_SET)
180 @Getter @Setter @ToString
181 public static class FlagSet implements UIPolicy {
183 static final List<String> STRINGS = new ArrayList<>(Arrays.asList("sim1","sim2"));
185 @Getter @Setter @ToString
186 @NoArgsConstructor @AllArgsConstructor
187 public static class FlagSetObject {
200 private List<FlagSetObject> items;
202 private String uiname;
204 private String descr;
206 private Integer state;
209 public FlagSet bind(DPolicy dPolicy){
211 DPolicyIndexed dPolicyIndexed = (DPolicyIndexed)dPolicy;
212 name = dPolicyIndexed.getName();
213 state = (dPolicyIndexed.getError()!=null) ? 0:1;
214 items = new ArrayList<>();
215 int value = dPolicyIndexed.getValue();
216 for (int i=0; i<1; i++) {
217 items.add(new FlagSetObject(
218 STRINGS.get(i), value & (1 << i)
224 public UIPolicy bind(UIPolicyUpdate update){
225 FlagSetUpdate flagSetUpdate = (FlagSetUpdate)update;
226 name = flagSetUpdate.getName() ;
227 items = flagSetUpdate.getItems();
231 public String toJSONDevice() {
233 int size = items.size();
234 StringBuilder s = new StringBuilder();
235 for (FlagSetObject fso: items) {
237 .append(NAME).append(name).append("\",")
238 .append("\"key\":\"").append(fso.getKey()).append("\",")
239 .append(VALUE).append(fso.getValue()).append("}");
241 if (c!=size) s.append(",");
246 public String toJSONDeviceWithoutValue() {
248 int size = items.size();
249 StringBuilder s = new StringBuilder();
250 for (FlagSetObject fso: items) {
252 .append(NAME).append(name).append("\",")
253 .append("\"key\":\"").append(fso.getKey()).append("\"")
256 if (c!=size) s.append(",");
262 @JsonRootName(MULT_CHOICE)
263 @Getter @Setter @ToString
264 public static class MultChoice implements UIPolicy {
266 static final List<String> STRINGS = new ArrayList<>(Arrays.asList(
267 "SIMPLE_PASSWORD","","","","SOMETHING","NUMERIC","ALPHABETIC","ALPHANUMERIC"));
269 @Getter @Setter @ToString
270 @NoArgsConstructor @AllArgsConstructor
271 public static class MultChoiceObject {
283 private List<MultChoiceObject> items;
285 private String uiname;
287 private String descr;
289 private Integer state;
292 public MultChoice bind(DPolicy dPolicy){
293 DPolicyInteger dPolicyInteger = (DPolicyInteger)dPolicy;
294 name = dPolicyInteger.getName();
295 state = (dPolicyInteger.getError()!=null) ? 0:1;
296 items = new ArrayList<>();
297 int value = dPolicyInteger.getValue();
298 for (int i=0; i<8; i++) {
299 items.add(new MultChoiceObject(
300 STRINGS.get(i), value & (1 << i)
306 public UIPolicy bind(UIPolicyUpdate update){
307 MultChoiceUpdate multChoiceUpdate = (MultChoiceUpdate)update;
308 name = multChoiceUpdate.getName() ;
309 items = multChoiceUpdate.getItems();
313 public String toJSONDevice() {
315 for (MultChoiceObject choice: items) {
316 if (choice.value != 0) {
317 int bit = STRINGS.indexOf(choice.key);
318 if (bit > -1) value = value + (1 << bit);
322 NAME + name + "\"," +
327 public String toJSONDeviceWithoutValue() {