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.rest.api.beans;
20  
21  import java.util.HashSet;
22  import java.util.Set;
23  import java.util.stream.Collectors;
24  import java.util.stream.Stream;
25  import javax.validation.constraints.NotNull;
26  import javax.ws.rs.DefaultValue;
27  import javax.ws.rs.QueryParam;
28  import org.apache.syncope.common.lib.SyncopeConstants;
29  import org.apache.syncope.common.lib.types.ConflictResolutionAction;
30  
31  public class CSVPullSpec extends AbstractCSVSpec {
32  
33      private static final long serialVersionUID = -5079876176017613587L;
34  
35      public static class Builder extends AbstractCSVSpec.Builder<CSVPullSpec, Builder> {
36  
37          @Override
38          protected CSVPullSpec newInstance() {
39              return new CSVPullSpec();
40          }
41  
42          public Builder(final String anyTypeKey, final String keyColumn) {
43              getInstance().setAnyTypeKey(anyTypeKey);
44              getInstance().setKeyColumn(keyColumn);
45          }
46  
47          public Builder remediation(final boolean remediation) {
48              instance.setRemediation(remediation);
49              return this;
50          }
51  
52          public Builder ignoreColumns(final String... ignoreColumns) {
53              instance.getIgnoreColumns().addAll(Stream.of(ignoreColumns).collect(Collectors.toList()));
54              return this;
55          }
56  
57          public Builder destinationRealm(final String destinationRealm) {
58              instance.setDestinationRealm(destinationRealm);
59              return this;
60          }
61  
62          public Builder conflictResolutionAction(final ConflictResolutionAction conflictResolutionAction) {
63              instance.setConflictResolutionAction(conflictResolutionAction);
64              return this;
65          }
66  
67          public Builder pullCorrelationRule(final String pullCorrelationRule) {
68              instance.setPullCorrelationRule(pullCorrelationRule);
69              return this;
70          }
71      }
72  
73      private String destinationRealm = SyncopeConstants.ROOT_REALM;
74  
75      private String keyColumn;
76  
77      private Set<String> ignoreColumns = new HashSet<>();
78  
79      private Boolean remediation;
80  
81      private ConflictResolutionAction conflictResolutionAction = ConflictResolutionAction.IGNORE;
82  
83      private String pullCorrelationRule;
84  
85      public String getDestinationRealm() {
86          return destinationRealm;
87      }
88  
89      @QueryParam("destinationRealm")
90      public void setDestinationRealm(final String destinationRealm) {
91          this.destinationRealm = destinationRealm;
92      }
93  
94      public String getKeyColumn() {
95          return keyColumn;
96      }
97  
98      @NotNull
99      @QueryParam("keyColumn")
100     public void setKeyColumn(final String keyColumn) {
101         this.keyColumn = keyColumn;
102     }
103 
104     public Set<String> getIgnoreColumns() {
105         return ignoreColumns;
106     }
107 
108     @QueryParam("ignoreColumns")
109     public void setIgnoreColumns(final Set<String> ignoreColumns) {
110         this.ignoreColumns = ignoreColumns;
111     }
112 
113     public Boolean getRemediation() {
114         return remediation == null ? Boolean.FALSE : remediation;
115     }
116 
117     @QueryParam("remediation")
118     @DefaultValue("false")
119     public void setRemediation(final boolean remediation) {
120         this.remediation = remediation;
121     }
122 
123     public ConflictResolutionAction getConflictResolutionAction() {
124         return conflictResolutionAction;
125     }
126 
127     @QueryParam("conflictResolutionAction")
128     public void setConflictResolutionAction(final ConflictResolutionAction conflictResolutionAction) {
129         this.conflictResolutionAction = conflictResolutionAction;
130     }
131 
132     public String getPullCorrelationRule() {
133         return pullCorrelationRule;
134     }
135 
136     @QueryParam("pullCorrelationRule")
137     public void setPullCorrelationRule(final String pullCorrelationRule) {
138         this.pullCorrelationRule = pullCorrelationRule;
139     }
140 }