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}