b6e3e5252bf6766f19a1e632567df3e8ec4ea960
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / listener / UserPreferences.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.netconf.sal.connect.netconf.listener;
9
10 import org.eclipse.jdt.annotation.NonNull;
11
12 /**
13  * DTO with user capabilities to override or merge with device specific capabilities.
14  */
15 public class UserPreferences {
16
17     private final NetconfSessionPreferences sessionPreferences;
18     private final boolean overrideModuleCapabilities;
19     private final boolean overrideNonModuleCapabilities;
20
21     public UserPreferences(final @NonNull NetconfSessionPreferences sessionPreferences,
22             final boolean overrideModuleCapabilities, final boolean overrideNonModuleCapabilities) {
23
24         if (overrideModuleCapabilities && sessionPreferences.moduleBasedCaps().isEmpty()) {
25             throw new IllegalStateException(
26                     "Override module based capabilities flag set true but module based capabilities list is empty.");
27         }
28         if (overrideNonModuleCapabilities && sessionPreferences.nonModuleCaps().isEmpty()) {
29             throw new IllegalStateException(
30                     "Override non-module based capabilities set true but non-module based capabilities list is empty.");
31         }
32
33         this.sessionPreferences = sessionPreferences;
34         this.overrideModuleCapabilities = overrideModuleCapabilities;
35         this.overrideNonModuleCapabilities = overrideNonModuleCapabilities;
36     }
37
38     public NetconfSessionPreferences getSessionPreferences() {
39         return sessionPreferences;
40     }
41
42     public boolean moduleBasedCapsOverrided() {
43         return overrideModuleCapabilities;
44     }
45
46     public boolean nonModuleBasedCapsOverrided() {
47         return overrideNonModuleCapabilities;
48     }
49
50     @Override
51     public String toString() {
52         final StringBuilder sb = new StringBuilder("UserPreferences{");
53         sb.append("sessionPreferences=").append(sessionPreferences);
54         sb.append(", overrideModuleCapabilities=").append(overrideModuleCapabilities);
55         sb.append(", overrideNonModuleCapabilities=").append(overrideNonModuleCapabilities);
56         sb.append('}');
57         return sb.toString();
58     }
59 }