Adding rest service for so monitoring
[so.git] / mso-api-handlers / mso-requests-db / src / main / java / org / onap / so / db / request / data / repository / QueryOperationType.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.so.db.request.data.repository;
21
22 import javax.persistence.criteria.CriteriaBuilder;
23 import javax.persistence.criteria.Predicate;
24 import javax.persistence.criteria.Root;
25
26 /**
27  * @author waqas.ikram@ericsson.com
28  */
29 public enum QueryOperationType {
30
31     EQ {
32         @Override
33         public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
34                 final String key, final String value) {
35             return criteriaBuilder.equal(tableRoot.get(key), value);
36         }
37
38     },
39     NEQ {
40
41         @Override
42         public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
43                 final String key, final String value) {
44             return criteriaBuilder.notEqual(tableRoot.get(key), value);
45         }
46
47     },
48     LIKE {
49
50         @Override
51         public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
52                 final String key, final String value) {
53             return criteriaBuilder.like(tableRoot.get(key), "%" + value + "%");
54         }
55     };
56
57     public static QueryOperationType getQueryOperationType(final String type) {
58         for (final QueryOperationType queryOperationType : QueryOperationType.values()) {
59             if (queryOperationType.name().equalsIgnoreCase(type)) {
60                 return queryOperationType;
61             }
62         }
63         return QueryOperationType.EQ;
64     }
65
66     public abstract <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
67             final String key, final String value);
68
69 }