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.core.persistence.jpa.entity.task;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  import javax.persistence.CascadeType;
24  import javax.persistence.Entity;
25  import javax.persistence.EnumType;
26  import javax.persistence.Enumerated;
27  import javax.persistence.Lob;
28  import javax.persistence.ManyToOne;
29  import javax.persistence.OneToMany;
30  import javax.persistence.Table;
31  import org.apache.commons.lang3.StringUtils;
32  import org.apache.syncope.common.lib.types.AnyTypeKind;
33  import org.apache.syncope.common.lib.types.ResourceOperation;
34  import org.apache.syncope.core.persistence.api.entity.ExternalResource;
35  import org.apache.syncope.core.persistence.api.entity.task.PropagationData;
36  import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
37  import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
38  import org.apache.syncope.core.persistence.jpa.entity.JPAExternalResource;
39  import org.apache.syncope.core.persistence.jpa.validation.entity.PropagationTaskCheck;
40  import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
41  
42  /**
43   * Encapsulate all information about a propagation task.
44   */
45  @Entity
46  @Table(name = JPAPropagationTask.TABLE)
47  @PropagationTaskCheck
48  public class JPAPropagationTask extends AbstractTask<PropagationTask> implements PropagationTask {
49  
50      private static final long serialVersionUID = 7086054884614511210L;
51  
52      public static final String TABLE = "PropagationTask";
53  
54      /**
55       * @see ResourceOperation
56       */
57      @Enumerated(EnumType.STRING)
58      private ResourceOperation operation;
59  
60      /**
61       * The connObjectKey on the external resource.
62       */
63      private String connObjectKey;
64  
65      /**
66       * The (optional) former connObjectKey on the external resource.
67       */
68      private String oldConnObjectKey;
69  
70      /**
71       * Data to be propagated.
72       */
73      @Lob
74      private String propagationData;
75  
76      private String objectClassName;
77  
78      @Enumerated(EnumType.STRING)
79      private AnyTypeKind anyTypeKind;
80  
81      private String anyType;
82  
83      private String entityKey;
84  
85      /**
86       * ExternalResource to which the propagation happens.
87       */
88      @ManyToOne
89      private JPAExternalResource resource;
90  
91      @OneToMany(targetEntity = JPAPropagationTaskExec.class,
92              cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "task")
93      private List<TaskExec<PropagationTask>> executions = new ArrayList<>();
94  
95      @Override
96      public String getConnObjectKey() {
97          return connObjectKey;
98      }
99  
100     @Override
101     public void setConnObjectKey(final String connObjectKey) {
102         this.connObjectKey = connObjectKey;
103     }
104 
105     @Override
106     public String getOldConnObjectKey() {
107         return oldConnObjectKey;
108     }
109 
110     @Override
111     public void setOldConnObjectKey(final String oldConnObjectKey) {
112         this.oldConnObjectKey = oldConnObjectKey;
113     }
114 
115     @Override
116     public String getSerializedPropagationData() {
117         return propagationData;
118     }
119 
120     @Override
121     public PropagationData getPropagationData() {
122         PropagationData result = null;
123         if (StringUtils.isNotBlank(propagationData)) {
124             result = POJOHelper.deserialize(propagationData, PropagationData.class);
125         }
126         return result;
127     }
128 
129     @Override
130     public void setPropagationData(final PropagationData propagationData) {
131         this.propagationData = POJOHelper.serialize(propagationData);
132     }
133 
134     @Override
135     public ResourceOperation getOperation() {
136         return operation;
137     }
138 
139     @Override
140 
141     public void setOperation(final ResourceOperation operation) {
142         this.operation = operation;
143     }
144 
145     @Override
146     public String getObjectClassName() {
147         return objectClassName;
148     }
149 
150     @Override
151     public void setObjectClassName(final String objectClassName) {
152         this.objectClassName = objectClassName;
153     }
154 
155     @Override
156     public AnyTypeKind getAnyTypeKind() {
157         return anyTypeKind;
158     }
159 
160     @Override
161     public void setAnyTypeKind(final AnyTypeKind anyTypeKind) {
162         this.anyTypeKind = anyTypeKind;
163     }
164 
165     @Override
166     public String getAnyType() {
167         return anyType;
168     }
169 
170     @Override
171     public void setAnyType(final String anyType) {
172         this.anyType = anyType;
173     }
174 
175     @Override
176     public String getEntityKey() {
177         return entityKey;
178     }
179 
180     @Override
181     public void setEntityKey(final String entityKey) {
182         this.entityKey = entityKey;
183     }
184 
185     @Override
186     public ExternalResource getResource() {
187         return resource;
188     }
189 
190     @Override
191     public void setResource(final ExternalResource resource) {
192         checkType(resource, JPAExternalResource.class);
193         this.resource = (JPAExternalResource) resource;
194     }
195 
196     @Override
197     protected Class<? extends TaskExec<PropagationTask>> executionClass() {
198         return JPAPropagationTaskExec.class;
199     }
200 
201     @Override
202     protected List<TaskExec<PropagationTask>> executions() {
203         return executions;
204     }
205 }