Changeset 7490
- Timestamp:
- May 28, 2018, 2:47:24 PM (5 years ago)
- Location:
- branches/3.12-stable/src/core/net/sf/basedb/util/overview/loader
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.12-stable/src/core/net/sf/basedb/util/overview/loader/DerivedBioAssayLoader.java
r7303 r7490 50 50 import net.sf.basedb.util.overview.OverviewUtil; 51 51 import net.sf.basedb.util.overview.Validator; 52 import net.sf.basedb.util.overview.filter.BasicItemFilter; 52 53 import net.sf.basedb.util.overview.filter.ItemTypeFilter; 53 54 import net.sf.basedb.util.overview.node.ChildNodeDirection; … … 157 158 protected void loadPropertyChildNodes(DbControl dc, OverviewContext context, Node bioAssayNode) 158 159 { 159 getNodeLoader(context, Item.EXTRACT).createReverseNode(dc, context, bioAssayNode); 160 Extract e = getExtract((DerivedBioAssay)bioAssayNode.getItem()); 161 if (e == null || bioAssayNode.getFirstParent(new BasicItemFilter(e)) == null) 162 { 163 // Only load the extract if it is not already a parent node 164 getNodeLoader(context, Item.EXTRACT).createReverseNode(dc, context, bioAssayNode); 165 } 160 166 getNodeLoader(context, Item.ANNOTATION).createPropertyNode(dc, context, bioAssayNode); 161 167 getNodeLoader(context, Item.FILESETMEMBER).createPropertyNode(dc, context, bioAssayNode); … … 281 287 NodeFactory<DerivedBioAssay> nf = getNodeFactory(dc, context); 282 288 Node folderNode = null; 289 // Load derived bioassays linked to the 'extract' if: 290 // they have no parent bioassay OR 291 // the parent bioassay has no parent extract OR 292 // the parent bioassay has a different parent extract 283 293 ItemQuery<DerivedBioAssay> query = DerivedBioAssay.getQuery(); 284 294 query.restrict(Restrictions.eq(Hql.property("extract"), Hql.entity(extract))); 285 295 query.join(Hql.leftJoin("parents", "parent")); 286 query.restrict(Restrictions.eq(Hql.alias("parent"), null)); 296 query.join(Hql.leftJoin("parent", "extract", "parentExtract", null, false)); 297 query.restrict( 298 Restrictions.or( 299 Restrictions.eq(Hql.alias("parent"), null), 300 Restrictions.eq(Hql.alias("parentExtract"), null), 301 Restrictions.neq(Hql.alias("parentExtract"), Hql.entity(extract)) 302 )); 303 query.setDistinct(true); // left joins may create multiple hits for items with more than one parent 287 304 context.initQuery(query, "name"); 288 305 ItemResultIterator<DerivedBioAssay> it = query.iterate(dc); -
branches/3.12-stable/src/core/net/sf/basedb/util/overview/loader/RawBioAssayLoader.java
r7303 r7490 47 47 import net.sf.basedb.util.overview.NodeAttribute; 48 48 import net.sf.basedb.util.overview.OverviewContext; 49 import net.sf.basedb.util.overview.filter.BasicItemFilter; 49 50 import net.sf.basedb.util.overview.filter.ItemTypeFilter; 50 51 import net.sf.basedb.util.overview.node.ChildNodeDirection; … … 169 170 protected void loadPropertyChildNodes(DbControl dc, OverviewContext context, Node rawBioAssayNode) 170 171 { 171 getNodeLoader(context, Item.EXTRACT).createReverseNode(dc, context, rawBioAssayNode); 172 Extract e = getExtract((RawBioAssay)rawBioAssayNode.getItem()); 173 if (e == null || rawBioAssayNode.getFirstParent(new BasicItemFilter(e)) == null) 174 { 175 // Only load the extract if it is not already a parent node 176 getNodeLoader(context, Item.EXTRACT).createReverseNode(dc, context, rawBioAssayNode); 177 } 172 178 getNodeLoader(context, Item.ANNOTATION).createPropertyNode(dc, context, rawBioAssayNode); 173 179 getNodeLoader(context, Item.FILESETMEMBER).createPropertyNode(dc, context, rawBioAssayNode); … … 235 241 NodeFactory<RawBioAssay> nf = getNodeFactory(dc, context); 236 242 Node folderNode = null; 243 // Load raw bioassays linked to the 'extract' if: 244 // they have no parent bioassay OR 245 // the parent bioassay has no parent extract OR 246 // the parent bioassay has a different parent extract 237 247 ItemQuery<RawBioAssay> query = RawBioAssay.getQuery(); 238 248 query.restrict(Restrictions.eq(Hql.property("parentExtract"), Hql.entity(extract))); 239 query.restrict(Restrictions.eq(Hql.property("parentBioAssay"), null)); 249 query.join(Hql.leftJoin("parentBioAssay", "parent")); 250 query.join(Hql.leftJoin("parent", "extract", "parentExtract", null, false)); 251 query.restrict( 252 Restrictions.or( 253 Restrictions.eq(Hql.alias("parent"), null), 254 Restrictions.eq(Hql.alias("parentExtract"), null), 255 Restrictions.neq(Hql.alias("parentExtract"), Hql.entity(extract)) 256 )); 240 257 context.initQuery(query, "name"); 241 258 ItemResultIterator<RawBioAssay> it = query.iterate(dc); … … 253 270 } 254 271 272 /** 273 Get the extract that is associated with the current raw bioassay 274 @return The extract or null if none was found 275 */ 276 private Extract getExtract(RawBioAssay bioAssay) 277 { 278 Extract extract = null; 279 try 280 { 281 extract = bioAssay.getParentExtract(); 282 } 283 catch (PermissionDeniedException ex) 284 {} 285 return extract; 286 } 287 255 288 private Set<Integer> getExtractChain(DbControl dc, Node node) 256 289 {
Note: See TracChangeset
for help on using the changeset viewer.