a9c6322907823b2a55b2d0f92d4cabbe9493d827
[policy/drools-applications.git] /
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * policy-yaml\r
4  * ================================================================================\r
5  * Copyright (C) 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 \r
21 package org.onap.policy.controlloop.policy.guard;\r
22 \r
23 import java.util.Collections;\r
24 import java.util.LinkedList;\r
25 import java.util.List;\r
26 import java.util.Map;\r
27 \r
28 public class Constraint {\r
29 \r
30     private Integer freq_limit_per_target;\r
31     private Map<String,String> time_window;\r
32     private Map<String, String> active_time_range;\r
33     \r
34     private List<String> blacklist;\r
35     \r
36     public Constraint() {\r
37         // Do Nothing empty constructor. \r
38     }\r
39 \r
40     public Integer getFreq_limit_per_target() {\r
41         return freq_limit_per_target;\r
42     }\r
43 \r
44 \r
45     public void setFreq_limit_per_target(Integer freq_limit_per_target) {\r
46         this.freq_limit_per_target = freq_limit_per_target;\r
47     }\r
48 \r
49 \r
50     public Map<String, String> getTime_window() {\r
51         return time_window;\r
52     }\r
53 \r
54 \r
55     public void setTime_window(Map<String, String> time_window) {\r
56         this.time_window = time_window;\r
57     }\r
58 \r
59 \r
60     public Map<String, String> getActive_time_range() {\r
61         return active_time_range;\r
62     }\r
63 \r
64 \r
65     public void setActive_time_range(Map<String, String> active_time_range) {\r
66         this.active_time_range = active_time_range;\r
67     }\r
68 \r
69 \r
70     public List<String> getBlacklist() {\r
71         return blacklist;\r
72     }\r
73 \r
74     public void setBlacklist(List<String> blacklist) {\r
75         this.blacklist = blacklist;\r
76     }\r
77 \r
78     public Constraint(Integer freq_limit_per_target, Map<String, String> time_window) {\r
79         this.freq_limit_per_target = freq_limit_per_target;\r
80         if(time_window!=null){\r
81             this.time_window = Collections.unmodifiableMap(time_window);\r
82         }\r
83     }\r
84     \r
85     public Constraint(List<String> blacklist) {\r
86         this.blacklist = new LinkedList<>(blacklist);\r
87     }\r
88     \r
89     public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, List<String> blacklist) {\r
90         this.freq_limit_per_target = freq_limit_per_target;\r
91         this.time_window = Collections.unmodifiableMap(time_window);\r
92         this.blacklist = new LinkedList<>(blacklist);\r
93     }\r
94     \r
95     public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, Map<String, String> active_time_range) {\r
96         this(freq_limit_per_target, time_window);\r
97         if (active_time_range != null) {\r
98             this.active_time_range = Collections.unmodifiableMap(active_time_range);\r
99         }\r
100     }\r
101     \r
102     public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, Map<String, String> active_time_range, List<String> blacklist) {\r
103         this(freq_limit_per_target, time_window);\r
104         if (active_time_range != null) {\r
105             this.active_time_range = Collections.unmodifiableMap(active_time_range);\r
106         }\r
107         if(blacklist!=null){\r
108             this.blacklist = new LinkedList<>(blacklist);\r
109         }\r
110     }\r
111     \r
112     public Constraint(Constraint constraint) {\r
113         this.freq_limit_per_target = constraint.freq_limit_per_target;\r
114         this.time_window = constraint.time_window;\r
115         if (constraint.active_time_range != null) {\r
116             this.active_time_range = Collections.unmodifiableMap(constraint.active_time_range);\r
117         }\r
118         this.blacklist = new LinkedList<>(constraint.blacklist);\r
119     }\r
120     \r
121     public boolean isValid() {\r
122         return ((freq_limit_per_target == null && time_window != null)|| (time_window == null && freq_limit_per_target != null))? false : true;\r
123     }\r
124     \r
125     @Override\r
126     public String toString() {\r
127         return "Constraint [freq_limit_per_target=" + freq_limit_per_target + ", time_window=" + time_window + ", active_time_range=" + active_time_range + ", blacklist=" + blacklist + "]";\r
128     }\r
129 \r
130     @Override\r
131     public int hashCode() {\r
132         final int prime = 31;\r
133         int result = 1;\r
134         result = prime * result + ((freq_limit_per_target == null) ? 0 : freq_limit_per_target.hashCode());\r
135         result = prime * result + ((time_window == null) ? 0 : time_window.hashCode());\r
136         result = prime * result + ((active_time_range == null) ? 0 : active_time_range.hashCode());\r
137         result = prime * result + ((blacklist == null) ? 0 : blacklist.hashCode());\r
138         return result;\r
139     }\r
140 \r
141     @Override\r
142     public boolean equals(Object obj) {\r
143         if (this == obj)\r
144             return true;\r
145         if (obj == null)\r
146             return false;\r
147         if (getClass() != obj.getClass())\r
148             return false;\r
149         Constraint other = (Constraint) obj;\r
150         if (freq_limit_per_target == null) {\r
151             if (other.freq_limit_per_target != null) \r
152                 return false;\r
153         } else if (!freq_limit_per_target.equals(other.freq_limit_per_target))\r
154             return false;\r
155         if (time_window == null) {\r
156             if (other.time_window != null)\r
157                 return false;\r
158         } else if (!time_window.equals(other.time_window))\r
159             return false;\r
160         if (active_time_range == null) {\r
161             if (other.active_time_range != null)\r
162                 return false;\r
163         } else if (!active_time_range.equals(other.active_time_range))\r
164             return false;\r
165         if (blacklist == null) {\r
166             if (other.blacklist != null)\r
167                 return false;\r
168         } else if (!blacklist.equals(other.blacklist))\r
169             return false;\r
170         return true;\r
171     }\r
172 }\r