c4e6ac43aaeeccb8c50800bef428dc211a02318d
[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 /**
26  * The Enum LockType defines the type of lock on a test context album.
27  */
28 public enum LockType {
29
30     NO_LOCK(0) {
31         @Override
32         public AlbumModifier getAlbumModifier() {
33             return NO_LOCK_MODIFER;
34         }
35     },
36     READ_LOCK(1) {
37         @Override
38         public AlbumModifier getAlbumModifier() {
39             return READ_LOCK_MODIFER;
40         }
41     },
42     WRITE_LOCK(2) {
43         @Override
44         public AlbumModifier getAlbumModifier() {
45             return WRITE_LOCK_MODIFER;
46         }
47     },
48     WRITE_LOCK_SINGLE_VALUE_UPDATE(3) {
49         @Override
50         public AlbumModifier getAlbumModifier() {
51             return WRITE_LOCK_SINGLE_VALUE_MODIFER;
52         }
53     };
54
55     private static final AlbumModifier NO_LOCK_MODIFER = new NoLockAlbumModifier();
56     private static final AlbumModifier READ_LOCK_MODIFER = new ReadLockAlbumModifier();
57     private static final AlbumModifier WRITE_LOCK_MODIFER = new WriteLockAlbumModifier();
58     private static final AlbumModifier WRITE_LOCK_SINGLE_VALUE_MODIFER = new SingleValueWriteLockAlbumModifier();
59
60     private final int value;
61
62     /**
63      * Instantiates a new lock type.
64      *
65      * @param value the value
66      */
67     LockType(final int value) {
68         this.value = value;
69     }
70
71     /**
72      * Gets the value.
73      *
74      * @return the value
75      */
76     public int getValue() {
77         return value;
78     }
79
80     /**
81      * Get the lock type given an int value.
82      * @param value the value of lock type
83      * @return the lock type
84      */
85     public static LockType getLockType(final int value) {
86         for (final LockType lockType : LockType.values()) {
87             if (lockType.getValue() == value) {
88                 return lockType;
89             }
90         }
91         throw new ContextRuntimeException("Invalid Lock type value: " + value);
92     }
93
94     /**
95      * Gets the album modifier.
96      *
97      * @return the album modifier
98      */
99     public abstract AlbumModifier getAlbumModifier();
100
101 }