6791 |
23 Mar 15 |
nicklas |
1 |
/** |
6791 |
23 Mar 15 |
nicklas |
$Id$ |
6791 |
23 Mar 15 |
nicklas |
3 |
|
6791 |
23 Mar 15 |
nicklas |
Copyright (C) 2015 Nicklas Nordborg |
6791 |
23 Mar 15 |
nicklas |
5 |
|
6791 |
23 Mar 15 |
nicklas |
This file is part of BASE - BioArray Software Environment. |
6791 |
23 Mar 15 |
nicklas |
Available at http://base.thep.lu.se/ |
6791 |
23 Mar 15 |
nicklas |
8 |
|
6791 |
23 Mar 15 |
nicklas |
BASE is free software; you can redistribute it and/or |
6791 |
23 Mar 15 |
nicklas |
modify it under the terms of the GNU General Public License |
6791 |
23 Mar 15 |
nicklas |
as published by the Free Software Foundation; either version 3 |
6791 |
23 Mar 15 |
nicklas |
of the License, or (at your option) any later version. |
6791 |
23 Mar 15 |
nicklas |
13 |
|
6791 |
23 Mar 15 |
nicklas |
BASE is distributed in the hope that it will be useful, |
6791 |
23 Mar 15 |
nicklas |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
6791 |
23 Mar 15 |
nicklas |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6791 |
23 Mar 15 |
nicklas |
GNU General Public License for more details. |
6791 |
23 Mar 15 |
nicklas |
18 |
|
6791 |
23 Mar 15 |
nicklas |
You should have received a copy of the GNU General Public License |
6791 |
23 Mar 15 |
nicklas |
along with BASE. If not, see <http://www.gnu.org/licenses/>. |
6791 |
23 Mar 15 |
nicklas |
21 |
*/ |
6791 |
23 Mar 15 |
nicklas |
22 |
package net.sf.basedb.util.listable; |
6791 |
23 Mar 15 |
nicklas |
23 |
|
6791 |
23 Mar 15 |
nicklas |
24 |
import java.util.HashSet; |
6791 |
23 Mar 15 |
nicklas |
25 |
import java.util.Set; |
6791 |
23 Mar 15 |
nicklas |
26 |
|
6791 |
23 Mar 15 |
nicklas |
27 |
import net.sf.basedb.core.DbControl; |
6791 |
23 Mar 15 |
nicklas |
28 |
import net.sf.basedb.core.Extract; |
6791 |
23 Mar 15 |
nicklas |
29 |
import net.sf.basedb.core.Item; |
6791 |
23 Mar 15 |
nicklas |
30 |
import net.sf.basedb.core.ItemQuery; |
6791 |
23 Mar 15 |
nicklas |
31 |
import net.sf.basedb.core.query.Expressions; |
6791 |
23 Mar 15 |
nicklas |
32 |
import net.sf.basedb.core.query.Hql; |
6791 |
23 Mar 15 |
nicklas |
33 |
import net.sf.basedb.core.query.Restrictions; |
6791 |
23 Mar 15 |
nicklas |
34 |
|
6791 |
23 Mar 15 |
nicklas |
35 |
/** |
6791 |
23 Mar 15 |
nicklas |
Collect extracts seen on derived bioassays and raw bioassays that |
6791 |
23 Mar 15 |
nicklas |
has been loaded by other transformers. Use the {@link #collectFromDerivedBioAssays(boolean)} |
6791 |
23 Mar 15 |
nicklas |
and {@link #collectFromRawBioAssays()} methods to create transformers that can be inserted |
6791 |
23 Mar 15 |
nicklas |
into the chain of {@link SourceItemTransformerChain}. |
6791 |
23 Mar 15 |
nicklas |
40 |
|
6791 |
23 Mar 15 |
nicklas |
@author Nicklas |
6791 |
23 Mar 15 |
nicklas |
@since 3.5 |
6791 |
23 Mar 15 |
nicklas |
43 |
*/ |
6791 |
23 Mar 15 |
nicklas |
44 |
public class CollectExtracts |
6791 |
23 Mar 15 |
nicklas |
45 |
{ |
6791 |
23 Mar 15 |
nicklas |
46 |
|
6791 |
23 Mar 15 |
nicklas |
47 |
private final Set<Integer> collected; |
6801 |
25 Mar 15 |
nicklas |
48 |
private final Set<Integer> parents; |
6801 |
25 Mar 15 |
nicklas |
49 |
private final Set<Integer> children; |
7838 |
28 Aug 20 |
nicklas |
50 |
private boolean needWrapper = true; |
6791 |
23 Mar 15 |
nicklas |
51 |
|
6791 |
23 Mar 15 |
nicklas |
52 |
/** |
6791 |
23 Mar 15 |
nicklas |
Create a new derived bioassay to physical bioassay transformer. |
6791 |
23 Mar 15 |
nicklas |
54 |
*/ |
6791 |
23 Mar 15 |
nicklas |
55 |
public CollectExtracts() |
6791 |
23 Mar 15 |
nicklas |
56 |
{ |
6791 |
23 Mar 15 |
nicklas |
57 |
collected = new HashSet<Integer>(); |
6801 |
25 Mar 15 |
nicklas |
58 |
parents = new HashSet<Integer>(); |
6801 |
25 Mar 15 |
nicklas |
59 |
children = new HashSet<Integer>(); |
6791 |
23 Mar 15 |
nicklas |
60 |
} |
6791 |
23 Mar 15 |
nicklas |
61 |
|
7838 |
28 Aug 20 |
nicklas |
62 |
/** |
7838 |
28 Aug 20 |
nicklas |
Clear all collected extracts in order to prepare for a new |
7838 |
28 Aug 20 |
nicklas |
collection. |
7838 |
28 Aug 20 |
nicklas |
@since 3.17 |
7838 |
28 Aug 20 |
nicklas |
66 |
*/ |
7838 |
28 Aug 20 |
nicklas |
67 |
void resetCollected() |
7838 |
28 Aug 20 |
nicklas |
68 |
{ |
7838 |
28 Aug 20 |
nicklas |
69 |
collected.clear(); |
7838 |
28 Aug 20 |
nicklas |
70 |
parents.clear(); |
7838 |
28 Aug 20 |
nicklas |
71 |
children.clear(); |
7838 |
28 Aug 20 |
nicklas |
72 |
} |
6791 |
23 Mar 15 |
nicklas |
73 |
|
6791 |
23 Mar 15 |
nicklas |
74 |
/** |
7838 |
28 Aug 20 |
nicklas |
Wraps the parent transformer with a ResetCollected transformer the |
7838 |
28 Aug 20 |
nicklas |
first time this method is called. If called more than once, the |
7838 |
28 Aug 20 |
nicklas |
parent is return unwrapped. |
7838 |
28 Aug 20 |
nicklas |
@since 3.17 |
7838 |
28 Aug 20 |
nicklas |
79 |
*/ |
7838 |
28 Aug 20 |
nicklas |
80 |
private SourceItemTransformer wrapForReset(SourceItemTransformer transformer) |
7838 |
28 Aug 20 |
nicklas |
81 |
{ |
7838 |
28 Aug 20 |
nicklas |
82 |
if (needWrapper) |
7838 |
28 Aug 20 |
nicklas |
83 |
{ |
7838 |
28 Aug 20 |
nicklas |
84 |
needWrapper = false; |
7838 |
28 Aug 20 |
nicklas |
85 |
transformer = new ResetCollected(transformer); |
7838 |
28 Aug 20 |
nicklas |
86 |
} |
7838 |
28 Aug 20 |
nicklas |
87 |
return transformer; |
7838 |
28 Aug 20 |
nicklas |
88 |
} |
7838 |
28 Aug 20 |
nicklas |
89 |
|
7838 |
28 Aug 20 |
nicklas |
90 |
/** |
6791 |
23 Mar 15 |
nicklas |
The created transformer collect the ID:s of all extracts linked from |
6791 |
23 Mar 15 |
nicklas |
the source derived bioassays and then return the same set of derived |
6791 |
23 Mar 15 |
nicklas |
bioassays again. If loadParents is set, extract ID:s will also |
6791 |
23 Mar 15 |
nicklas |
be collected from all parent derived bioassays (as loaded by |
6791 |
23 Mar 15 |
nicklas |
{@link DerivedBioAssayToParentDerivedBioAssayTransformer}). |
6791 |
23 Mar 15 |
nicklas |
96 |
*/ |
6791 |
23 Mar 15 |
nicklas |
97 |
public SourceItemTransformer collectFromDerivedBioAssays(boolean loadParents) |
6791 |
23 Mar 15 |
nicklas |
98 |
{ |
7838 |
28 Aug 20 |
nicklas |
99 |
return wrapForReset(new CollectFromDerivedBioAssays(loadParents)); |
6791 |
23 Mar 15 |
nicklas |
100 |
} |
6791 |
23 Mar 15 |
nicklas |
101 |
|
6791 |
23 Mar 15 |
nicklas |
102 |
/** |
6791 |
23 Mar 15 |
nicklas |
The created transformer collect the ID:s of all extracts linked from |
6791 |
23 Mar 15 |
nicklas |
the source raw bioassays and then return the same set of raw bioassays |
6791 |
23 Mar 15 |
nicklas |
again. |
6791 |
23 Mar 15 |
nicklas |
106 |
*/ |
6791 |
23 Mar 15 |
nicklas |
107 |
public SourceItemTransformer collectFromRawBioAssays() |
6791 |
23 Mar 15 |
nicklas |
108 |
{ |
7838 |
28 Aug 20 |
nicklas |
109 |
return wrapForReset(new CollectFromRawBioAssays()); |
6791 |
23 Mar 15 |
nicklas |
110 |
} |
6791 |
23 Mar 15 |
nicklas |
111 |
|
6791 |
23 Mar 15 |
nicklas |
112 |
/** |
6792 |
23 Mar 15 |
nicklas |
The created transformer collect the ID:s of all extracts in the |
6801 |
25 Mar 15 |
nicklas |
source collection and return same set of extracts again. |
6792 |
23 Mar 15 |
nicklas |
115 |
*/ |
6801 |
25 Mar 15 |
nicklas |
116 |
public SourceItemTransformer collectFromExtracts() |
6792 |
23 Mar 15 |
nicklas |
117 |
{ |
7838 |
28 Aug 20 |
nicklas |
118 |
return wrapForReset(new CollectFromExtracts()); |
6792 |
23 Mar 15 |
nicklas |
119 |
} |
6792 |
23 Mar 15 |
nicklas |
120 |
|
6792 |
23 Mar 15 |
nicklas |
121 |
/** |
6801 |
25 Mar 15 |
nicklas |
The created transformer collect the ID:s of all parent |
6801 |
25 Mar 15 |
nicklas |
extracts to the already collected extracts and store them in the |
6801 |
25 Mar 15 |
nicklas |
{@link #getCollectedParents()}. If the 'includeCollected' flag |
6801 |
25 Mar 15 |
nicklas |
is set, the collected extracts are included among the parents. |
6801 |
25 Mar 15 |
nicklas |
126 |
*/ |
6801 |
25 Mar 15 |
nicklas |
127 |
public SourceItemTransformer collectParentsOfCollected(boolean includeCollected) |
6801 |
25 Mar 15 |
nicklas |
128 |
{ |
7838 |
28 Aug 20 |
nicklas |
129 |
return wrapForReset(new CollectParents(true, includeCollected)); |
6801 |
25 Mar 15 |
nicklas |
130 |
} |
6801 |
25 Mar 15 |
nicklas |
131 |
|
6801 |
25 Mar 15 |
nicklas |
132 |
/** |
6801 |
25 Mar 15 |
nicklas |
The created transformer collect the ID:s of all parent |
6801 |
25 Mar 15 |
nicklas |
extracts to the source extracts and store them in the |
6801 |
25 Mar 15 |
nicklas |
{@link #getCollectedParents()}. If the 'includeSource' flag |
6801 |
25 Mar 15 |
nicklas |
is set, the source extracts are included among the parents. |
6801 |
25 Mar 15 |
nicklas |
137 |
*/ |
6801 |
25 Mar 15 |
nicklas |
138 |
public SourceItemTransformer collectParentsOfSource(boolean includeSource) |
6801 |
25 Mar 15 |
nicklas |
139 |
{ |
7838 |
28 Aug 20 |
nicklas |
140 |
return wrapForReset(new CollectParents(false, includeSource)); |
6801 |
25 Mar 15 |
nicklas |
141 |
} |
6801 |
25 Mar 15 |
nicklas |
142 |
|
6801 |
25 Mar 15 |
nicklas |
143 |
|
6801 |
25 Mar 15 |
nicklas |
144 |
/** |
6801 |
25 Mar 15 |
nicklas |
The created transformer collect the ID:s of all child |
6801 |
25 Mar 15 |
nicklas |
extracts to the already collected extracts and store them in the |
6801 |
25 Mar 15 |
nicklas |
{@link #getCollectedChildren()}. If the 'includeCollected' flag |
6801 |
25 Mar 15 |
nicklas |
is set, the collected extracts are included among the children. |
6801 |
25 Mar 15 |
nicklas |
149 |
*/ |
6801 |
25 Mar 15 |
nicklas |
150 |
public SourceItemTransformer collectChildrenOfCollected(boolean includeCollected) |
6801 |
25 Mar 15 |
nicklas |
151 |
{ |
7838 |
28 Aug 20 |
nicklas |
152 |
return wrapForReset(new CollectChildren(true, includeCollected)); |
6801 |
25 Mar 15 |
nicklas |
153 |
} |
6801 |
25 Mar 15 |
nicklas |
154 |
|
6801 |
25 Mar 15 |
nicklas |
155 |
/** |
6801 |
25 Mar 15 |
nicklas |
The created transformer collect the ID:s of all child |
6801 |
25 Mar 15 |
nicklas |
extracts to the source extracts and store them in the |
6801 |
25 Mar 15 |
nicklas |
{@link #getCollectedChildren()}. If the 'includeSource' flag |
6801 |
25 Mar 15 |
nicklas |
is set, the source extracts are included among the parents. |
6801 |
25 Mar 15 |
nicklas |
160 |
*/ |
6801 |
25 Mar 15 |
nicklas |
161 |
public SourceItemTransformer collectChildrenOfSource(boolean includeSource) |
6801 |
25 Mar 15 |
nicklas |
162 |
{ |
7838 |
28 Aug 20 |
nicklas |
163 |
return wrapForReset(new CollectChildren(false, includeSource)); |
6801 |
25 Mar 15 |
nicklas |
164 |
} |
6801 |
25 Mar 15 |
nicklas |
165 |
|
6801 |
25 Mar 15 |
nicklas |
166 |
/** |
6792 |
23 Mar 15 |
nicklas |
Get all extracts that has been collected. |
6792 |
23 Mar 15 |
nicklas |
168 |
*/ |
6792 |
23 Mar 15 |
nicklas |
169 |
public Set<Integer> getCollected() |
6792 |
23 Mar 15 |
nicklas |
170 |
{ |
6792 |
23 Mar 15 |
nicklas |
171 |
return collected; |
6792 |
23 Mar 15 |
nicklas |
172 |
} |
6792 |
23 Mar 15 |
nicklas |
173 |
|
6792 |
23 Mar 15 |
nicklas |
174 |
/** |
6801 |
25 Mar 15 |
nicklas |
Get parent extracts that was collected by the |
6880 |
21 Apr 15 |
nicklas |
{@link #collectParentsOfSource(boolean)} or |
6880 |
21 Apr 15 |
nicklas |
{@link #collectParentsOfCollected(boolean)} collector. |
6791 |
23 Mar 15 |
nicklas |
178 |
*/ |
6801 |
25 Mar 15 |
nicklas |
179 |
public Set<Integer> getCollectedParents() |
6791 |
23 Mar 15 |
nicklas |
180 |
{ |
6801 |
25 Mar 15 |
nicklas |
181 |
return parents; |
6791 |
23 Mar 15 |
nicklas |
182 |
} |
6791 |
23 Mar 15 |
nicklas |
183 |
|
6791 |
23 Mar 15 |
nicklas |
184 |
/** |
6801 |
25 Mar 15 |
nicklas |
Get child extracts that was collected by the |
6801 |
25 Mar 15 |
nicklas |
{@link #collectChildrenOfCollected(boolean)} and/or |
6801 |
25 Mar 15 |
nicklas |
{@link #collectChildrenOfSource(boolean)} collectors. |
6791 |
23 Mar 15 |
nicklas |
188 |
*/ |
6801 |
25 Mar 15 |
nicklas |
189 |
public Set<Integer> getCollectedChildren() |
6791 |
23 Mar 15 |
nicklas |
190 |
{ |
6801 |
25 Mar 15 |
nicklas |
191 |
return children; |
6791 |
23 Mar 15 |
nicklas |
192 |
} |
6791 |
23 Mar 15 |
nicklas |
193 |
|
6801 |
25 Mar 15 |
nicklas |
194 |
|
6791 |
23 Mar 15 |
nicklas |
195 |
/** |
6791 |
23 Mar 15 |
nicklas |
Transformer implementation that given a set of derived bioassays |
6791 |
23 Mar 15 |
nicklas |
load their linked extracts and store that in the parent class. The |
6791 |
23 Mar 15 |
nicklas |
original source of derived bioassays is returned unmodifed. |
6791 |
23 Mar 15 |
nicklas |
199 |
*/ |
6791 |
23 Mar 15 |
nicklas |
200 |
class CollectFromDerivedBioAssays |
6791 |
23 Mar 15 |
nicklas |
201 |
extends AbstractSourceItemTransformer |
6791 |
23 Mar 15 |
nicklas |
202 |
{ |
6791 |
23 Mar 15 |
nicklas |
203 |
|
6791 |
23 Mar 15 |
nicklas |
204 |
private final boolean loadParents; |
6791 |
23 Mar 15 |
nicklas |
205 |
|
6801 |
25 Mar 15 |
nicklas |
206 |
CollectFromDerivedBioAssays(boolean loadParents) |
6791 |
23 Mar 15 |
nicklas |
207 |
{ |
6791 |
23 Mar 15 |
nicklas |
208 |
super(Item.DERIVEDBIOASSAY, Item.DERIVEDBIOASSAY); |
6791 |
23 Mar 15 |
nicklas |
209 |
this.loadParents = loadParents; |
6791 |
23 Mar 15 |
nicklas |
210 |
} |
6791 |
23 Mar 15 |
nicklas |
211 |
|
6791 |
23 Mar 15 |
nicklas |
212 |
|
6791 |
23 Mar 15 |
nicklas |
213 |
@Override |
7836 |
28 Aug 20 |
nicklas |
214 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
6791 |
23 Mar 15 |
nicklas |
215 |
{ |
6791 |
23 Mar 15 |
nicklas |
216 |
DbControl dc = context.getDbControl(); |
6791 |
23 Mar 15 |
nicklas |
217 |
|
6791 |
23 Mar 15 |
nicklas |
218 |
Set<Integer> derviedBioAssays = source; |
6791 |
23 Mar 15 |
nicklas |
219 |
if (loadParents) |
6791 |
23 Mar 15 |
nicklas |
220 |
{ |
6791 |
23 Mar 15 |
nicklas |
221 |
derviedBioAssays = new DerivedBioAssayToParentDerivedBioAssayTransformer(true).transform(context, source); |
6791 |
23 Mar 15 |
nicklas |
222 |
} |
6791 |
23 Mar 15 |
nicklas |
223 |
|
6791 |
23 Mar 15 |
nicklas |
224 |
ItemQuery<Extract> query = Extract.getQuery(); |
6848 |
13 Apr 15 |
nicklas |
225 |
query.setIncludes(context.getInclude()); |
6791 |
23 Mar 15 |
nicklas |
226 |
query.joinPermanent(Hql.innerJoin("derivedBioAssays", "dba")); |
6791 |
23 Mar 15 |
nicklas |
227 |
query.restrictPermanent( |
6791 |
23 Mar 15 |
nicklas |
228 |
Restrictions.in( |
6791 |
23 Mar 15 |
nicklas |
229 |
Hql.alias("dba"), |
6791 |
23 Mar 15 |
nicklas |
230 |
Expressions.parameter("derivedBioAssays") |
6791 |
23 Mar 15 |
nicklas |
231 |
) |
6791 |
23 Mar 15 |
nicklas |
232 |
); |
6801 |
25 Mar 15 |
nicklas |
233 |
|
6796 |
24 Mar 15 |
nicklas |
234 |
collected.addAll(safeIdList(dc, query, "derivedBioAssays", derviedBioAssays)); |
6801 |
25 Mar 15 |
nicklas |
//System.out.println("Collected extracts: " + collected); |
6791 |
23 Mar 15 |
nicklas |
236 |
return source; |
6791 |
23 Mar 15 |
nicklas |
237 |
} |
6791 |
23 Mar 15 |
nicklas |
238 |
|
6791 |
23 Mar 15 |
nicklas |
239 |
} |
6791 |
23 Mar 15 |
nicklas |
240 |
|
6791 |
23 Mar 15 |
nicklas |
241 |
/** |
6791 |
23 Mar 15 |
nicklas |
Transformer implementation that given a set of raw bioassays |
6791 |
23 Mar 15 |
nicklas |
load their linked extracts and store that in the parent class. The |
6791 |
23 Mar 15 |
nicklas |
original source of raw bioassays is returned unmodifed. |
6791 |
23 Mar 15 |
nicklas |
245 |
*/ |
6791 |
23 Mar 15 |
nicklas |
246 |
class CollectFromRawBioAssays |
6791 |
23 Mar 15 |
nicklas |
247 |
extends AbstractSourceItemTransformer |
6791 |
23 Mar 15 |
nicklas |
248 |
{ |
6791 |
23 Mar 15 |
nicklas |
249 |
|
6801 |
25 Mar 15 |
nicklas |
250 |
CollectFromRawBioAssays() |
6791 |
23 Mar 15 |
nicklas |
251 |
{ |
6791 |
23 Mar 15 |
nicklas |
252 |
super(Item.RAWBIOASSAY, Item.RAWBIOASSAY); |
6791 |
23 Mar 15 |
nicklas |
253 |
} |
6791 |
23 Mar 15 |
nicklas |
254 |
|
6791 |
23 Mar 15 |
nicklas |
255 |
|
6791 |
23 Mar 15 |
nicklas |
256 |
@Override |
7836 |
28 Aug 20 |
nicklas |
257 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
6791 |
23 Mar 15 |
nicklas |
258 |
{ |
6791 |
23 Mar 15 |
nicklas |
259 |
DbControl dc = context.getDbControl(); |
6791 |
23 Mar 15 |
nicklas |
260 |
|
6791 |
23 Mar 15 |
nicklas |
261 |
ItemQuery<Extract> query = Extract.getQuery(); |
6848 |
13 Apr 15 |
nicklas |
262 |
query.setIncludes(context.getInclude()); |
6791 |
23 Mar 15 |
nicklas |
263 |
query.joinPermanent(Hql.innerJoin("rawBioAssays", "rba")); |
6791 |
23 Mar 15 |
nicklas |
264 |
query.restrictPermanent( |
6791 |
23 Mar 15 |
nicklas |
265 |
Restrictions.in( |
6791 |
23 Mar 15 |
nicklas |
266 |
Hql.alias("rba"), |
6791 |
23 Mar 15 |
nicklas |
267 |
Expressions.parameter("rawBioAssays") |
6791 |
23 Mar 15 |
nicklas |
268 |
) |
6791 |
23 Mar 15 |
nicklas |
269 |
); |
6791 |
23 Mar 15 |
nicklas |
270 |
|
6796 |
24 Mar 15 |
nicklas |
271 |
collected.addAll(safeIdList(dc, query, "rawBioAssays", source)); |
6801 |
25 Mar 15 |
nicklas |
//System.out.println("Collected extracts: " + collected); |
6791 |
23 Mar 15 |
nicklas |
273 |
return source; |
6791 |
23 Mar 15 |
nicklas |
274 |
} |
6791 |
23 Mar 15 |
nicklas |
275 |
} |
6791 |
23 Mar 15 |
nicklas |
276 |
|
6792 |
23 Mar 15 |
nicklas |
277 |
/** |
6792 |
23 Mar 15 |
nicklas |
Transformer implementation that store the given set of |
6792 |
23 Mar 15 |
nicklas |
extracts in the parent class. The original source of extracts |
6792 |
23 Mar 15 |
nicklas |
is returned unmodifed. |
6792 |
23 Mar 15 |
nicklas |
281 |
*/ |
6792 |
23 Mar 15 |
nicklas |
282 |
class CollectFromExtracts |
6792 |
23 Mar 15 |
nicklas |
283 |
extends AbstractSourceItemTransformer |
6792 |
23 Mar 15 |
nicklas |
284 |
{ |
6792 |
23 Mar 15 |
nicklas |
285 |
|
6801 |
25 Mar 15 |
nicklas |
286 |
CollectFromExtracts() |
6801 |
25 Mar 15 |
nicklas |
287 |
{ |
6801 |
25 Mar 15 |
nicklas |
288 |
super(Item.EXTRACT, Item.EXTRACT); |
6801 |
25 Mar 15 |
nicklas |
289 |
} |
6801 |
25 Mar 15 |
nicklas |
290 |
|
6801 |
25 Mar 15 |
nicklas |
291 |
@Override |
7836 |
28 Aug 20 |
nicklas |
292 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
6801 |
25 Mar 15 |
nicklas |
293 |
{ |
6801 |
25 Mar 15 |
nicklas |
294 |
collected.addAll(source); |
6801 |
25 Mar 15 |
nicklas |
//System.out.println("Collected extracts: " + collected); |
6801 |
25 Mar 15 |
nicklas |
296 |
return source; |
6801 |
25 Mar 15 |
nicklas |
297 |
} |
6801 |
25 Mar 15 |
nicklas |
298 |
} |
6801 |
25 Mar 15 |
nicklas |
299 |
|
6801 |
25 Mar 15 |
nicklas |
300 |
/** |
6801 |
25 Mar 15 |
nicklas |
Transformer implementation that collect the parent extracts from |
6801 |
25 Mar 15 |
nicklas |
the source or collected extracts. The original source of extracts is |
6801 |
25 Mar 15 |
nicklas |
returned unmodifed. |
6801 |
25 Mar 15 |
nicklas |
304 |
*/ |
6801 |
25 Mar 15 |
nicklas |
305 |
class CollectParents |
6801 |
25 Mar 15 |
nicklas |
306 |
extends AbstractSourceItemTransformer |
6801 |
25 Mar 15 |
nicklas |
307 |
{ |
6792 |
23 Mar 15 |
nicklas |
308 |
|
6801 |
25 Mar 15 |
nicklas |
309 |
private final boolean useCollectedAsSource; |
6801 |
25 Mar 15 |
nicklas |
310 |
private final boolean includeSource; |
6801 |
25 Mar 15 |
nicklas |
311 |
|
6801 |
25 Mar 15 |
nicklas |
312 |
|
6801 |
25 Mar 15 |
nicklas |
313 |
CollectParents(boolean useCollectedAsSource, boolean includeSource) |
6792 |
23 Mar 15 |
nicklas |
314 |
{ |
6792 |
23 Mar 15 |
nicklas |
315 |
super(Item.EXTRACT, Item.EXTRACT); |
6801 |
25 Mar 15 |
nicklas |
316 |
this.useCollectedAsSource = useCollectedAsSource; |
6801 |
25 Mar 15 |
nicklas |
317 |
this.includeSource = includeSource; |
6792 |
23 Mar 15 |
nicklas |
318 |
} |
6792 |
23 Mar 15 |
nicklas |
319 |
|
6792 |
23 Mar 15 |
nicklas |
320 |
@Override |
7836 |
28 Aug 20 |
nicklas |
321 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
6792 |
23 Mar 15 |
nicklas |
322 |
{ |
7836 |
28 Aug 20 |
nicklas |
323 |
Set<Integer> sourceToUse = useCollectedAsSource ? collected : source; |
7836 |
28 Aug 20 |
nicklas |
324 |
parents.addAll(new ExtractToParentExtractTransformer(includeSource).transform(context, sourceToUse)); |
6792 |
23 Mar 15 |
nicklas |
325 |
return source; |
6792 |
23 Mar 15 |
nicklas |
326 |
} |
6792 |
23 Mar 15 |
nicklas |
327 |
} |
6792 |
23 Mar 15 |
nicklas |
328 |
|
6801 |
25 Mar 15 |
nicklas |
329 |
/** |
6801 |
25 Mar 15 |
nicklas |
Transformer implementation that collect the child extracts from |
6801 |
25 Mar 15 |
nicklas |
the source or collected extracts. The original source of extracts is |
6801 |
25 Mar 15 |
nicklas |
returned unmodifed. |
6801 |
25 Mar 15 |
nicklas |
333 |
*/ |
6801 |
25 Mar 15 |
nicklas |
334 |
class CollectChildren |
6801 |
25 Mar 15 |
nicklas |
335 |
extends AbstractSourceItemTransformer |
6801 |
25 Mar 15 |
nicklas |
336 |
{ |
6801 |
25 Mar 15 |
nicklas |
337 |
|
6801 |
25 Mar 15 |
nicklas |
338 |
private final boolean useCollectedAsSource; |
6801 |
25 Mar 15 |
nicklas |
339 |
private final boolean includeSource; |
6801 |
25 Mar 15 |
nicklas |
340 |
|
6801 |
25 Mar 15 |
nicklas |
341 |
|
6801 |
25 Mar 15 |
nicklas |
342 |
CollectChildren(boolean useCollectedAsSource, boolean includeSource) |
6801 |
25 Mar 15 |
nicklas |
343 |
{ |
6801 |
25 Mar 15 |
nicklas |
344 |
super(Item.EXTRACT, Item.EXTRACT); |
6801 |
25 Mar 15 |
nicklas |
345 |
this.useCollectedAsSource = useCollectedAsSource; |
6801 |
25 Mar 15 |
nicklas |
346 |
this.includeSource = includeSource; |
6801 |
25 Mar 15 |
nicklas |
347 |
} |
6801 |
25 Mar 15 |
nicklas |
348 |
|
6801 |
25 Mar 15 |
nicklas |
349 |
@Override |
7836 |
28 Aug 20 |
nicklas |
350 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
6801 |
25 Mar 15 |
nicklas |
351 |
{ |
7836 |
28 Aug 20 |
nicklas |
352 |
Set<Integer> sourceToUse = useCollectedAsSource ? collected : source; |
7836 |
28 Aug 20 |
nicklas |
353 |
children.addAll(new ExtractToChildExtractTransformer(includeSource).transform(context, sourceToUse)); |
6801 |
25 Mar 15 |
nicklas |
354 |
return source; |
6801 |
25 Mar 15 |
nicklas |
355 |
} |
6801 |
25 Mar 15 |
nicklas |
356 |
} |
6801 |
25 Mar 15 |
nicklas |
357 |
|
7838 |
28 Aug 20 |
nicklas |
358 |
/** |
7838 |
28 Aug 20 |
nicklas |
Transformer implementation that reset the collected extracts before forwarding the call |
7838 |
28 Aug 20 |
nicklas |
to the parent transformer. This should wrap the first created transformer that |
7838 |
28 Aug 20 |
nicklas |
collect extracts to the same CollectedExtract instance. |
7838 |
28 Aug 20 |
nicklas |
@since 3.17 |
7838 |
28 Aug 20 |
nicklas |
363 |
*/ |
7838 |
28 Aug 20 |
nicklas |
364 |
class ResetCollected |
7838 |
28 Aug 20 |
nicklas |
365 |
extends AbstractSourceItemTransformer |
7838 |
28 Aug 20 |
nicklas |
366 |
{ |
7838 |
28 Aug 20 |
nicklas |
367 |
private final SourceItemTransformer parent; |
7838 |
28 Aug 20 |
nicklas |
368 |
|
7838 |
28 Aug 20 |
nicklas |
369 |
ResetCollected(SourceItemTransformer parent) |
7838 |
28 Aug 20 |
nicklas |
370 |
{ |
7838 |
28 Aug 20 |
nicklas |
371 |
super(parent.getSourceItemType(), parent.getTargetItemType()); |
7838 |
28 Aug 20 |
nicklas |
372 |
this.parent = parent; |
7838 |
28 Aug 20 |
nicklas |
373 |
} |
7838 |
28 Aug 20 |
nicklas |
374 |
|
7838 |
28 Aug 20 |
nicklas |
375 |
@Override |
7838 |
28 Aug 20 |
nicklas |
376 |
public Set<Integer> transform(TransformContext context, final Set<Integer> source) |
7838 |
28 Aug 20 |
nicklas |
377 |
{ |
7838 |
28 Aug 20 |
nicklas |
378 |
resetCollected(); |
7838 |
28 Aug 20 |
nicklas |
379 |
return parent.transform(context, source); |
7838 |
28 Aug 20 |
nicklas |
380 |
} |
7838 |
28 Aug 20 |
nicklas |
381 |
} |
7838 |
28 Aug 20 |
nicklas |
382 |
|
6791 |
23 Mar 15 |
nicklas |
383 |
} |