View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.common.lib.request;
20  
21  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
22  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
23  import java.util.Collection;
24  import java.util.HashSet;
25  import java.util.List;
26  import java.util.Set;
27  import org.apache.commons.lang3.builder.EqualsBuilder;
28  import org.apache.commons.lang3.builder.HashCodeBuilder;
29  import org.apache.syncope.common.lib.Attr;
30  
31  public class MembershipUR extends AbstractPatch {
32  
33      private static final long serialVersionUID = -6783121761221554433L;
34  
35      public static class Builder extends AbstractPatch.Builder<MembershipUR, Builder> {
36  
37          public Builder(final String group) {
38              super();
39              getInstance().setGroup(group);
40          }
41  
42          @Override
43          protected MembershipUR newInstance() {
44              return new MembershipUR();
45          }
46  
47          public Builder plainAttr(final Attr plainAttr) {
48              getInstance().getPlainAttrs().add(plainAttr);
49              return this;
50          }
51  
52          public Builder plainAttrs(final Attr... plainAttrs) {
53              getInstance().getPlainAttrs().addAll(List.of(plainAttrs));
54              return this;
55          }
56  
57          public Builder plainAttrs(final Collection<Attr> plainAttrs) {
58              getInstance().getPlainAttrs().addAll(plainAttrs);
59              return this;
60          }
61  
62          public Builder virAttr(final Attr virAttr) {
63              getInstance().getVirAttrs().add(virAttr);
64              return this;
65          }
66  
67          public Builder virAttrs(final Attr... virAttrs) {
68              getInstance().getVirAttrs().addAll(List.of(virAttrs));
69              return this;
70          }
71  
72          public Builder virAttrs(final Collection<Attr> virAttrs) {
73              getInstance().getVirAttrs().addAll(virAttrs);
74              return this;
75          }
76      }
77  
78      private String group;
79  
80      private final Set<Attr> plainAttrs = new HashSet<>();
81  
82      private final Set<Attr> virAttrs = new HashSet<>();
83  
84      public String getGroup() {
85          return group;
86      }
87  
88      public void setGroup(final String group) {
89          this.group = group;
90      }
91  
92      @JacksonXmlElementWrapper(localName = "plainAttrs")
93      @JacksonXmlProperty(localName = "plainAttr")
94      public Set<Attr> getPlainAttrs() {
95          return plainAttrs;
96      }
97  
98      @JacksonXmlElementWrapper(localName = "virAttrs")
99      @JacksonXmlProperty(localName = "virAttr")
100     public Set<Attr> getVirAttrs() {
101         return virAttrs;
102     }
103 
104     @Override
105     public int hashCode() {
106         return new HashCodeBuilder().
107                 appendSuper(super.hashCode()).
108                 append(group).
109                 append(plainAttrs).
110                 append(virAttrs).
111                 build();
112     }
113 
114     @Override
115     public boolean equals(final Object obj) {
116         if (this == obj) {
117             return true;
118         }
119         if (obj == null) {
120             return false;
121         }
122         if (getClass() != obj.getClass()) {
123             return false;
124         }
125         final MembershipUR other = (MembershipUR) obj;
126         return new EqualsBuilder().
127                 appendSuper(super.equals(obj)).
128                 append(group, other.group).
129                 append(plainAttrs, other.plainAttrs).
130                 append(virAttrs, other.virAttrs).
131                 build();
132     }
133 }