View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.core.persistence.jpa.entity.task;
20  
21  import com.fasterxml.jackson.core.type.TypeReference;
22  import java.util.Map;
23  import java.util.Optional;
24  import java.util.regex.Pattern;
25  import javax.persistence.Entity;
26  import javax.persistence.EnumType;
27  import javax.persistence.Enumerated;
28  import javax.persistence.Lob;
29  import javax.persistence.ManyToOne;
30  import javax.persistence.Table;
31  import javax.validation.constraints.NotNull;
32  import org.apache.syncope.common.lib.form.FormPropertyType;
33  import org.apache.syncope.core.persistence.api.entity.task.FormPropertyDef;
34  import org.apache.syncope.core.persistence.api.entity.task.MacroTask;
35  import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
36  import org.apache.syncope.core.persistence.jpa.validation.entity.FormPropertyDefCheck;
37  import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
38  
39  @Entity
40  @Table(name = JPAFormPropertyDef.TABLE)
41  @FormPropertyDefCheck
42  public class JPAFormPropertyDef extends AbstractProvidedKeyEntity implements FormPropertyDef {
43  
44      private static final long serialVersionUID = -5839990371546587373L;
45  
46      public static final String TABLE = "FormPropertyDef";
47  
48      protected static final TypeReference<Map<String, String>> TYPEREF = new TypeReference<Map<String, String>>() {
49      };
50  
51      private int idx;
52  
53      @ManyToOne(optional = false)
54      private JPAMacroTask macroTask;
55  
56      @NotNull
57      private String name;
58  
59      @NotNull
60      @Enumerated(EnumType.STRING)
61      private FormPropertyType type;
62  
63      @NotNull
64      private Boolean readable = Boolean.TRUE;
65  
66      @NotNull
67      private Boolean writable = Boolean.TRUE;
68  
69      @NotNull
70      private Boolean required = Boolean.FALSE;
71  
72      private String stringRegEx;
73  
74      private String datePattern;
75  
76      @Lob
77      private String enumValues;
78  
79      @NotNull
80      private Boolean dropdownSingleSelection = Boolean.TRUE;
81  
82      @NotNull
83      private Boolean dropdownFreeForm = Boolean.FALSE;
84  
85      public void setIdx(final int idx) {
86          this.idx = idx;
87      }
88  
89      @Override
90      public JPAMacroTask getMacroTask() {
91          return macroTask;
92      }
93  
94      @Override
95      public void setMacroTask(final MacroTask macroTask) {
96          checkType(macroTask, JPAMacroTask.class);
97          this.macroTask = (JPAMacroTask) macroTask;
98      }
99  
100     @Override
101     public String getName() {
102         return name;
103     }
104 
105     @Override
106     public void setName(final String name) {
107         this.name = name;
108     }
109 
110     @Override
111     public FormPropertyType getType() {
112         return type;
113     }
114 
115     @Override
116     public void setType(final FormPropertyType type) {
117         this.type = type;
118     }
119 
120     @Override
121     public boolean isReadable() {
122         return readable == null ? true : readable;
123     }
124 
125     @Override
126     public void setReadable(final boolean readable) {
127         this.readable = readable;
128     }
129 
130     @Override
131     public boolean isWritable() {
132         return writable == null ? true : writable;
133     }
134 
135     @Override
136     public void setWritable(final boolean writable) {
137         this.writable = writable;
138     }
139 
140     @Override
141     public boolean isRequired() {
142         return required == null ? false : required;
143     }
144 
145     @Override
146     public void setRequired(final boolean required) {
147         this.required = required;
148     }
149 
150     @Override
151     public Pattern getStringRegEx() {
152         return Optional.ofNullable(stringRegEx).map(Pattern::compile).orElse(null);
153     }
154 
155     @Override
156     public void setStringRegExp(final Pattern stringRegEx) {
157         this.stringRegEx = Optional.ofNullable(stringRegEx).map(Pattern::pattern).orElse(null);
158     }
159 
160     @Override
161     public String getDatePattern() {
162         return datePattern;
163     }
164 
165     @Override
166     public void setDatePattern(final String datePattern) {
167         this.datePattern = datePattern;
168     }
169 
170     @Override
171     public Map<String, String> getEnumValues() {
172         return Optional.ofNullable(enumValues).map(v -> POJOHelper.deserialize(v, TYPEREF)).orElse(Map.of());
173     }
174 
175     @Override
176     public void setEnumValues(final Map<String, String> enumValues) {
177         this.enumValues = Optional.ofNullable(enumValues).map(POJOHelper::serialize).orElse(null);
178     }
179 
180     @Override
181     public boolean isDropdownSingleSelection() {
182         return dropdownSingleSelection == null ? false : dropdownSingleSelection;
183     }
184 
185     @Override
186     public void setDropdownSingleSelection(final boolean dropdownSingleSelection) {
187         this.dropdownSingleSelection = dropdownSingleSelection;
188     }
189 
190     @Override
191     public boolean isDropdownFreeForm() {
192         return dropdownFreeForm == null ? false : dropdownFreeForm;
193     }
194 
195     @Override
196     public void setDropdownFreeForm(final boolean dropdownFreeForm) {
197         this.dropdownFreeForm = dropdownFreeForm;
198     }
199 }