001/*
002 *   Copyright 2024 Vonage
003 *
004 *   Licensed under the Apache License, Version 2.0 (the "License");
005 *   you may not use this file except in compliance with the License.
006 *   You may obtain a copy of the License at
007 *
008 *        http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *   Unless required by applicable law or agreed to in writing, software
011 *   distributed under the License is distributed on an "AS IS" BASIS,
012 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *   See the License for the specific language governing permissions and
014 *   limitations under the License.
015 */
016package com.vonage.client.meetings;
017
018import com.fasterxml.jackson.annotation.JsonProperty;
019import com.vonage.client.JsonableBaseObject;
020
021public class AvailableFeatures extends JsonableBaseObject {
022        private Boolean isRecordingAvailable, isChatAvailable, isWhiteboardAvailable, isLocaleSwitcherAvailable;
023
024        protected AvailableFeatures() {
025        }
026
027        AvailableFeatures(Builder builder) {
028                isRecordingAvailable = builder.isRecordingAvailable;
029                isChatAvailable = builder.isChatAvailable;
030                isWhiteboardAvailable = builder.isWhiteboardAvailable;
031                isLocaleSwitcherAvailable = builder.isLocaleSwitcherAvailable;
032        }
033
034        /**
035         * Determine if recording feature is available in the UI.
036         *
037         * @return {@code true} if the feature is available.
038         */
039        @JsonProperty("is_recording_available")
040        public Boolean getIsRecordingAvailable() {
041                return isRecordingAvailable;
042        }
043
044        /**
045         * Determine if chat feature is available in the UI.
046         *
047         * @return {@code true} if the feature is available.
048         */
049        @JsonProperty("is_chat_available")
050        public Boolean getIsChatAvailable() {
051                return isChatAvailable;
052        }
053
054        /**
055         * Determine if whiteboard feature is available in the UI.
056         *
057         * @return {@code true} if the feature is available.
058         */
059        @JsonProperty("is_whiteboard_available")
060        public Boolean getIsWhiteboardAvailable() {
061                return isWhiteboardAvailable;
062        }
063
064        /**
065         * Determine if locale switcher feature is available in the UI.
066         *
067         * @return {@code true} if the feature is available.
068         */
069        @JsonProperty("is_locale_switcher_available")
070        public Boolean getIsLocaleSwitcherAvailable() {
071                return isLocaleSwitcherAvailable;
072        }
073        
074        /**
075         * Entry point for constructing an instance of this class.
076         * 
077         * @return A new Builder.
078         */
079        public static Builder builder() {
080                return new Builder();
081        }
082        
083        public static class Builder {
084                private Boolean isRecordingAvailable, isChatAvailable, isWhiteboardAvailable, isLocaleSwitcherAvailable;
085        
086                Builder() {}
087        
088                /**
089                 *
090                 * @param isRecordingAvailable Determine if recording feature is available in the UI.
091                 *
092                 * @return This builder.
093                 */
094                public Builder isRecordingAvailable(boolean isRecordingAvailable) {
095                        this.isRecordingAvailable = isRecordingAvailable;
096                        return this;
097                }
098
099                /**
100                 *
101                 * @param isChatAvailable Determine if chat feature is available in the UI.
102                 *
103                 * @return This builder.
104                 */
105                public Builder isChatAvailable(boolean isChatAvailable) {
106                        this.isChatAvailable = isChatAvailable;
107                        return this;
108                }
109
110                /**
111                 *
112                 * @param isWhiteboardAvailable Determine if whiteboard feature is available in the UI.
113                 *
114                 * @return This builder.
115                 */
116                public Builder isWhiteboardAvailable(boolean isWhiteboardAvailable) {
117                        this.isWhiteboardAvailable = isWhiteboardAvailable;
118                        return this;
119                }
120
121                /**
122                 *
123                 * @param isLocaleSwitcherAvailable Determine if locale switcher feature is available in the UI.
124                 *
125                 * @return This builder.
126                 */
127                public Builder isLocaleSwitcherAvailable(boolean isLocaleSwitcherAvailable) {
128                        this.isLocaleSwitcherAvailable = isLocaleSwitcherAvailable;
129                        return this;
130                }
131        
132                /**
133                 * Builds the {@linkplain AvailableFeatures}.
134                 *
135                 * @return An instance of AvailableFeatures, populated with all fields from this builder.
136                 */
137                public AvailableFeatures build() {
138                        return new AvailableFeatures(this);
139                }
140        }
141}