228ca7a40bc5315406b0f6279c15907f53e27762
[policy/apex-pdp.git] /
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
21 package org.onap.policy.apex.context.test.lock.modifier;
22
23 import org.onap.policy.apex.context.ContextRuntimeException;
24
25 public enum LockType {
26
27     NO_LOCK(0) {
28         @Override
29         public AlbumModifier getAlbumModifier() {
30             return NO_LOCK_MODIFER;
31         }
32     },
33     READ_LOCK(1) {
34         @Override
35         public AlbumModifier getAlbumModifier() {
36             return READ_LOCK_MODIFER;
37         }
38     },
39     WRITE_LOCK(2) {
40         @Override
41         public AlbumModifier getAlbumModifier() {
42             return WRITE_LOCK_MODIFER;
43         }
44     },
45     WRITE_LOCK_SINGLE_VALUE_UPDATE(3) {
46         @Override
47         public AlbumModifier getAlbumModifier() {
48             return WRITE_LOCK_SINGLE_VALUE_MODIFER;
49         }
50     };
51
52     private static final AlbumModifier NO_LOCK_MODIFER = new NoLockAlbumModifier();
53     private static final AlbumModifier READ_LOCK_MODIFER = new ReadLockAlbumModifier();
54     private static final AlbumModifier WRITE_LOCK_MODIFER = new WriteLockAlbumModifier();
55     private static final AlbumModifier WRITE_LOCK_SINGLE_VALUE_MODIFER = new SingleValueWriteLockAlbumModifier();
56
57     private final int value;
58
59     private LockType(final int value) {
60         this.value = value;
61     }
62
63     public int getValue() {
64         return value;
65     }
66
67     /**
68      * Get the lock type given an int value.
69      * @param value the value of lock type
70      * @return the lock type
71      */
72     public static LockType getLockType(final int value) {
73         for (final LockType lockType : LockType.values()) {
74             if (lockType.getValue() == value) {
75                 return lockType;
76             }
77         }
78         throw new ContextRuntimeException("Invalid Lock type value: " + value);
79     }
80
81     public abstract AlbumModifier getAlbumModifier();
82
83 }