001/* 002 * Copyright 2011-2016 UnboundID Corp. 003 * 004 * This program is free software; you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License (GPLv2 only) 006 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 007 * as published by the Free Software Foundation. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program; if not, see <http://www.gnu.org/licenses>. 016 */ 017 018package com.unboundid.scim.data; 019 020import com.unboundid.scim.schema.AttributeDescriptor; 021import com.unboundid.scim.sdk.InvalidResourceException; 022import com.unboundid.scim.sdk.SCIMAttribute; 023import com.unboundid.scim.sdk.SCIMAttributeValue; 024 025import java.util.ArrayList; 026import java.util.List; 027 028 029 030/** 031 * A complex type that specifies FILTER configuration options. 032 */ 033public class FilterConfig 034{ 035 private final boolean supported; 036 private final long maxResults; 037 038 039 040 /** 041 * The <code>AttributeValueResolver</code> that resolves SCIM attribute values 042 * to/from <code>FilterConfig</code> instances. 043 */ 044 public static final AttributeValueResolver<FilterConfig> 045 FILTER_CONFIG_RESOLVER = 046 new AttributeValueResolver<FilterConfig>() 047 { 048 /** 049 * {@inheritDoc} 050 */ 051 @Override 052 public FilterConfig toInstance(final SCIMAttributeValue value) { 053 return new FilterConfig( 054 value.getSubAttributeValue("supported", 055 BOOLEAN_RESOLVER), 056 value.getSubAttributeValue("maxResults", 057 INTEGER_RESOLVER)); 058 } 059 060 /** 061 * {@inheritDoc} 062 */ 063 @Override 064 public SCIMAttributeValue fromInstance( 065 final AttributeDescriptor attributeDescriptor, 066 final FilterConfig value) 067 throws InvalidResourceException 068 { 069 final List<SCIMAttribute> subAttributes = 070 new ArrayList<SCIMAttribute>(2); 071 072 final AttributeDescriptor supportedDescriptor = 073 attributeDescriptor.getSubAttribute("supported"); 074 subAttributes.add( 075 SCIMAttribute.create( 076 supportedDescriptor, 077 BOOLEAN_RESOLVER.fromInstance(supportedDescriptor, 078 value.supported))); 079 080 final AttributeDescriptor maxResultsDescriptor = 081 attributeDescriptor.getSubAttribute("maxResults"); 082 subAttributes.add( 083 SCIMAttribute.create( 084 maxResultsDescriptor, 085 INTEGER_RESOLVER.fromInstance(maxResultsDescriptor, 086 value.maxResults))); 087 088 return SCIMAttributeValue.createComplexValue(subAttributes); 089 } 090 }; 091 092 093 094 /** 095 * Create a <code>FilterConfig</code> instance. 096 * 097 * @param supported Specifies whether the FILTER operation is supported. 098 * @param maxResults Specifies the maximum number of resources returned in 099 * a response. 100 */ 101 public FilterConfig(final boolean supported, 102 final long maxResults) 103 { 104 this.supported = supported; 105 this.maxResults = maxResults; 106 } 107 108 109 110 /** 111 * Indicates whether the FILTER operation is supported. 112 * @return {@code true} if the FILTER operation is supported. 113 */ 114 public boolean isSupported() 115 { 116 return supported; 117 } 118 119 120 121 /** 122 * Retrieves the maximum number of resources returned in a response. 123 * @return The maximum number of resources returned in a response. 124 */ 125 public long getMaxResults() 126 { 127 return maxResults; 128 } 129 130 131 132 @Override 133 public boolean equals(final Object o) 134 { 135 if (this == o) 136 { 137 return true; 138 } 139 if (o == null || getClass() != o.getClass()) 140 { 141 return false; 142 } 143 144 final FilterConfig that = (FilterConfig) o; 145 146 if (maxResults != that.maxResults) 147 { 148 return false; 149 } 150 if (supported != that.supported) 151 { 152 return false; 153 } 154 155 return true; 156 } 157 158 159 160 @Override 161 public int hashCode() 162 { 163 int result = (supported ? 1 : 0); 164 result = 31 * result + (int) (maxResults ^ (maxResults >>> 32)); 165 return result; 166 } 167 168 169 170 @Override 171 public String toString() 172 { 173 final StringBuilder sb = new StringBuilder(); 174 sb.append("FilterConfig"); 175 sb.append("{supported=").append(supported); 176 sb.append(", maxResults=").append(maxResults); 177 sb.append('}'); 178 return sb.toString(); 179 } 180}