Update AAF Version 1.0.0
[aaf/authz.git] / authz-certman / src / main / java / com / att / authz / cm / validation / Validator.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * * \r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * * \r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package com.att.authz.cm.validation;\r
24 \r
25 import java.util.List;\r
26 \r
27 import com.att.authz.layer.Result;\r
28 import com.att.dao.aaf.cass.ArtiDAO;\r
29 import com.att.dao.aaf.cass.ArtiDAO.Data;\r
30 \r
31 /**\r
32  * Validator\r
33  * Consistently apply content rules for content (incoming)\r
34  * \r
35  * Note: We restrict content for usability in URLs (because RESTful service), and avoid \r
36  * issues with Regular Expressions, and other enabling technologies. \r
37  *\r
38  */\r
39 public class Validator {\r
40         // Repeated Msg fragments\r
41         private static final String MECHID = "mechid";\r
42         private static final String MACHINE = "machine";\r
43         private static final String ARTIFACT_LIST_IS_NULL = "Artifact List is null.";\r
44         private static final String Y = "y.";\r
45         private static final String IES = "ies.";\r
46         private static final String ENTR = " entr";\r
47         private static final String MUST_HAVE_AT_LEAST = " must have at least ";\r
48         private static final String IS_NULL = " is null.";\r
49         private static final String ARTIFACTS_MUST_HAVE_AT_LEAST = "Artifacts must have at least ";\r
50         private StringBuilder msgs;\r
51 \r
52         public Validator nullOrBlank(String name, String str) {\r
53                 if(str==null) {\r
54                         msg(name + IS_NULL);\r
55                 } else if(str.length()==0) {\r
56                         msg(name + " is blank.");\r
57                 }\r
58                 return this;\r
59         }\r
60         \r
61         private void msg(String ... strs) {\r
62                 if(msgs==null) {\r
63                         msgs=new StringBuilder();\r
64                 }\r
65                 for(String str : strs) {\r
66                         msgs.append(str);\r
67                 }\r
68                 msgs.append('\n');\r
69         }\r
70         \r
71         public boolean err() {\r
72                 return msgs!=null;\r
73         }\r
74         \r
75         public String errs() {\r
76                 return msgs.toString();\r
77         }\r
78 \r
79         public Validator notOK(Result<?> res) {\r
80                 if(res==null) {\r
81                         msgs.append("Result object is blank");\r
82                 } else if(res.notOK()) {\r
83                         msgs.append(res.getClass().getSimpleName() + " is not OK");\r
84                 }\r
85                 return this;\r
86         }\r
87 \r
88         public Validator isNull(String name, Object obj) {\r
89                 if(obj==null) {\r
90                         msg(name + IS_NULL);\r
91                 } \r
92                 return this;\r
93         }\r
94 \r
95         public Validator nullBlankMin(String name, List<String> list, int min) {\r
96                 if(list==null) {\r
97                         msg(name + IS_NULL);\r
98                 } else {\r
99                         if(list.size()<min) {\r
100                                 msg(name + MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));\r
101                         } else {\r
102                                 for(String s : list) {\r
103                                         nullOrBlank("List Item",s);\r
104                                 }\r
105                         }\r
106                 }\r
107                 return this;\r
108         }\r
109 \r
110         public Validator artisRequired(List<ArtiDAO.Data> list, int min) {\r
111                 if(list==null) {\r
112                         msg(ARTIFACT_LIST_IS_NULL);\r
113                 } else {\r
114                         if(list.size()<min) {\r
115                                 msg(ARTIFACTS_MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));\r
116                         } else {\r
117                                 for(ArtiDAO.Data a : list) {\r
118                                         allRequired(a);\r
119                                 }\r
120                         }\r
121                 }\r
122                 return this;\r
123         }\r
124 \r
125         public Validator artisKeys(List<ArtiDAO.Data> list, int min) {\r
126                 if(list==null) {\r
127                         msg(ARTIFACT_LIST_IS_NULL);\r
128                 } else {\r
129                         if(list.size()<min) {\r
130                                 msg(ARTIFACTS_MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));\r
131                         } else {\r
132                                 for(ArtiDAO.Data a : list) {\r
133                                         keys(a);\r
134                                 }\r
135                         }\r
136                 }\r
137                 return this;\r
138         }\r
139 \r
140 \r
141         public Validator keys(ArtiDAO.Data add) {\r
142                 if(add==null) {\r
143                         msg("Artifact is null.");\r
144                 } else {\r
145                         nullOrBlank(MECHID, add.mechid);\r
146                         nullOrBlank(MACHINE, add.machine);\r
147                 }\r
148                 return this;\r
149         }\r
150         \r
151         private Validator allRequired(Data a) {\r
152                 if(a==null) {\r
153                         msg("Artifact is null.");\r
154                 } else {\r
155                         nullOrBlank(MECHID, a.mechid);\r
156                         nullOrBlank(MACHINE, a.machine);\r
157                         nullOrBlank("ca",a.ca);\r
158                         nullOrBlank("dir",a.dir);\r
159                         nullOrBlank("os_user",a.os_user);\r
160                         // Note: AppName, Notify & Sponsor are currently not required\r
161                 }\r
162                 return this;\r
163         }\r
164 \r
165 }\r