Changeset 7302
- Timestamp:
- Mar 1, 2017, 2:22:26 PM (6 years ago)
- Location:
- trunk/src/core/net/sf/basedb/util/overview/loader
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/net/sf/basedb/util/overview/loader/DerivedBioAssayLoader.java
r7301 r7302 40 40 import net.sf.basedb.core.query.Hql; 41 41 import net.sf.basedb.core.query.Restrictions; 42 import net.sf.basedb.util.listable.ExtractToParentExtractTransformer; 43 import net.sf.basedb.util.listable.SourceItemTransformer; 44 import net.sf.basedb.util.listable.TransformContext; 42 45 import net.sf.basedb.util.overview.Fix; 43 46 import net.sf.basedb.util.overview.Node; … … 211 214 if (extractIds.size() > 0) 212 215 { 216 // Since we don't know exactly how far upstreams the given extracts are we 217 // must first find all parent items (recursively) 218 Set<Integer> allParents = getAllExtractParents(dc, extractIds); 219 213 220 query.restrict( 214 221 Restrictions.or( … … 216 223 Restrictions.in(Hql.property("extract"), Expressions.parameter("extracts")) 217 224 )); 218 query.setParameter("extracts", extractIds, Type.INT);225 query.setParameter("extracts", allParents, Type.INT); 219 226 } 220 227 … … 250 257 if (extractIds.size() > 0) 251 258 { 259 // Since we don't know exactly how far upstreams the given extracts are we 260 // must first find all parent items (recursively) 261 Set<Integer> allParents = getAllExtractParents(dc, extractIds); 262 252 263 query.restrict( 253 264 Restrictions.or( … … 255 266 Restrictions.in(Hql.property("extract"), Expressions.parameter("extracts")) 256 267 )); 257 query.setParameter("extracts", extractIds, Type.INT);268 query.setParameter("extracts", allParents, Type.INT); 258 269 } 259 270 … … 399 410 } 400 411 412 private Set<Integer> getAllExtractParents(DbControl dc, Set<Integer> extracts) 413 { 414 SourceItemTransformer transformer = new ExtractToParentExtractTransformer(true); 415 return transformer.transform(new TransformContext(dc), extracts); 416 } 417 418 401 419 } -
trunk/src/core/net/sf/basedb/util/overview/loader/RawBioAssayLoader.java
r6755 r7302 22 22 package net.sf.basedb.util.overview.loader; 23 23 24 25 import java.util.HashSet; 26 import java.util.List; 27 import java.util.Set; 24 28 25 29 import net.sf.basedb.core.DbControl; … … 32 36 import net.sf.basedb.core.ItemResultIterator; 33 37 import net.sf.basedb.core.RawBioAssay; 38 import net.sf.basedb.core.Type; 39 import net.sf.basedb.core.query.Expressions; 34 40 import net.sf.basedb.core.query.Hql; 35 41 import net.sf.basedb.core.query.Restrictions; 42 import net.sf.basedb.util.listable.ExtractToParentExtractTransformer; 43 import net.sf.basedb.util.listable.SourceItemTransformer; 44 import net.sf.basedb.util.listable.TransformContext; 36 45 import net.sf.basedb.util.overview.Node; 37 46 import net.sf.basedb.util.overview.NodeAttribute; … … 194 203 ItemQuery<RawBioAssay> query = context.initQuery(bioAssay.getRawBioAssays(), "name"); 195 204 196 // If there is an extract node in the parent chain we should only load 197 // raw bioassays with the same or a null extract 198 Node extractNode = bioAssayNode.getFirstNode(new ItemTypeFilter(Item.EXTRACT)); 199 Extract extract = null; 200 if (extractNode != null) 201 { 202 extract = (Extract)extractNode.getItem(); 203 query.restrict(Restrictions.or( 204 Restrictions.eq(Hql.property("parentExtract"), Hql.entity(extract)), 205 Restrictions.eq(Hql.property("parentExtract"), null)) 206 ); 207 } 208 205 // We should only load derived bioassays that has a null extract or an 206 // extract that is found in the parent chain 207 Set<Integer> extractIds = getExtractChain(bioAssayNode); 208 if (extractIds.size() > 0) 209 { 210 // Since we don't know exactly how far upstreams the given extracts are we 211 // must first find all parent items (recursively) 212 Set<Integer> allParents = getAllExtractParents(dc, extractIds); 213 214 query.restrict( 215 Restrictions.or( 216 Restrictions.eq(Hql.property("parentExtract"), null), 217 Restrictions.in(Hql.property("parentExtract"), Expressions.parameter("extracts")) 218 )); 219 query.setParameter("extracts", allParents, Type.INT); 220 } 221 209 222 ItemResultIterator<RawBioAssay> it = query.iterate(dc); 210 223 while (it.hasNext()) … … 243 256 } 244 257 258 private Set<Integer> getExtractChain(Node node) 259 { 260 List<Node> extractNodes = node.findAll(new ItemTypeFilter(Item.EXTRACT)); 261 Set<Integer> extractIds = new HashSet<Integer>(extractNodes.size()); 262 for (Node n : extractNodes) 263 { 264 extractIds.add(n.getItem().getId()); 265 } 266 return extractIds; 267 } 268 269 private Set<Integer> getAllExtractParents(DbControl dc, Set<Integer> extracts) 270 { 271 SourceItemTransformer transformer = new ExtractToParentExtractTransformer(true); 272 return transformer.transform(new TransformContext(dc), extracts); 273 } 274 245 275 }
Note: See TracChangeset
for help on using the changeset viewer.