Java tutorial
/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.teradata.tempto.fulfillment.ldap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.Map; import static java.util.Objects.requireNonNull; public class LdapObjectDefinition { private final String id; private final String distinguishedName; private final Map<String, String> attributes; private final List<String> objectClasses; private final Map<String, List<String>> modificationAttributes; private LdapObjectDefinition(String id, String distinguishedName, Map<String, String> attributes, Map<String, List<String>> modificationAttributes, List<String> objectClasses) { this.id = requireNonNull(id, "id is null"); this.distinguishedName = requireNonNull(distinguishedName, "distinguishedName is null"); this.attributes = ImmutableMap.copyOf(requireNonNull(attributes, "attributes is null")); this.modificationAttributes = ImmutableMap .copyOf(requireNonNull(modificationAttributes, "modificationAttributes is null")); this.objectClasses = ImmutableList.copyOf(requireNonNull(objectClasses, "objectClasses is null")); } public static LdapObjectDefinitionBuilder builder(String id) { return new LdapObjectDefinitionBuilder(id); } public List<String> getObjectClasses() { return objectClasses; } public Map<String, String> getAttributes() { return attributes; } public String getId() { return id; } public String getDistinguishedName() { return distinguishedName; } public Map<String, List<String>> getModificationAttributes() { return modificationAttributes; } public static class LdapObjectDefinitionBuilder { private String id; private String distinguishedName; private List<String> objectClasses; private Map<String, String> attributes; private Map<String, List<String>> modificationAttributes; private LdapObjectDefinitionBuilder(String id) { this.id = requireNonNull(id, "id is null"); } public LdapObjectDefinition build() { return new LdapObjectDefinition(id, distinguishedName, attributes, modificationAttributes == null ? ImmutableMap.of() : modificationAttributes, objectClasses); } public LdapObjectDefinitionBuilder setDistinguishedName(String distinguishedName) { this.distinguishedName = distinguishedName; return this; } public LdapObjectDefinitionBuilder setAttributes(Map<String, String> attributes) { this.attributes = ImmutableMap.copyOf(attributes); return this; } public LdapObjectDefinitionBuilder setModificationAttributes( Map<String, List<String>> modificationAttributes) { this.modificationAttributes = ImmutableMap.copyOf(modificationAttributes); return this; } public LdapObjectDefinitionBuilder setObjectClasses(List<String> objectClasses) { this.objectClasses = ImmutableList.copyOf(objectClasses); return this; } } }