Changeset 5963


Ignore:
Timestamp:
Feb 15, 2012, 2:30:42 PM (10 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #1657: 'Parent items' column should include used quantity in samples, extracts and physical bioassays list pages

Location:
trunk
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core/net/sf/basedb/core/BioMaterialEventSource.java

    r5662 r5963  
    2727import net.sf.basedb.core.data.BioMaterialEventSourceData;
    2828import net.sf.basedb.core.data.MeasuredBioMaterialData;
     29import net.sf.basedb.core.query.Expressions;
     30import net.sf.basedb.core.query.Hql;
     31import net.sf.basedb.core.query.Restrictions;
    2932import net.sf.basedb.util.transform.Transformer;
    3033
     
    4750  private final DbControl dc;
    4851  private final BioMaterialEventSourceData data;
     52 
     53  /**
     54    Get a query returning source information for a given (creation) event.
     55    The event parameter can be null, but the query will then contain a named
     56    parameter (event) that must be set before the query is executed.
     57    @param event An event or null
     58    @since 3.1
     59  */
     60  public static SpecialQuery<BioMaterialEventSource> getQuery(BioMaterialEvent event)
     61  {
     62    SpecialQuery<BioMaterialEventSource> query =
     63      new SpecialQuery<BioMaterialEventSource>(null, "BioMaterialEventSourceData", "es",
     64          new BioMaterialEventSource.BioMaterialEventSourceTransformer());
     65    query.restrictPermanent(Restrictions.eq(Hql.property("es", "event"), Hql.entityParameter("event", Item.BIOMATERIALEVENT)));
     66    if (event != null)
     67    {
     68      query.setPermanentEntityParameter("event", event);
     69    }
     70    return query;
     71  }
     72
     73  /**
     74    Get a query returning event information where a given biomaterial has been used as
     75    a source. The parent parameter can be null, but the query will then contain a named
     76    parameter (source) that must be set before the query is executed.
     77    @param source An biomaterial or null
     78    @since 3.1
     79  */
     80  public static SpecialQuery<BioMaterialEventSource> getQuery(BioMaterial source)
     81  {
     82    SpecialQuery<BioMaterialEventSource> query =
     83      new SpecialQuery<BioMaterialEventSource>(null, "BioMaterialEventSourceData", "es",
     84          new BioMaterialEventSource.BioMaterialEventSourceTransformer());
     85    query.restrictPermanent(Restrictions.eq(Hql.property("es", "bioMaterial"), Expressions.parameter("source")));
     86    if (source != null)
     87    {
     88      query.setPermanentEntityParameter("source", source);
     89    }
     90    return query;
     91  }
    4992 
    5093  BioMaterialEventSource(DbControl dc, BioMaterialEventSourceData data)
  • trunk/www/biomaterials/extracts/index.jsp

    r5687 r5963  
    6565  import="net.sf.basedb.clients.web.plugins.ItemQueryLoader"
    6666  import="net.sf.basedb.clients.web.plugins.ParentBioMaterialLoader"
     67  import="net.sf.basedb.clients.web.plugins.BioMaterialEventSourceFormatter"
     68  import="net.sf.basedb.clients.web.plugins.ParentBioMaterialEventSourceLoader"
    6769  import="net.sf.basedb.core.plugin.GuiContext"
    6870  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
     
    8991    cc.setObject("export.formatter.bioWell.column", new WellCoordinateFormatter(false));
    9092    cc.setObject("export.formatter.&children(name)", new NameableFormatter());
    91     cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new NameableFormatter());
     93    cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new BioMaterialEventSourceFormatter());
    9294    cc.setObject("export.formatter.&childCreationEvents(event.physicalBioAssay.name)", new NameableFormatter());
    9395    cc.setObject("export.formatter.&childCreationEvents(event.bioMaterial.name)", new NameableFormatter());
     
    115117   
    116118    // Parent items
    117     final ItemQuery<Extract> parentExtractsQuery = Extract.getQuery();
    118     parentExtractsQuery.join(Hql.innerJoin("childCreationEvents", "cce"));
    119     parentExtractsQuery.join(Hql.innerJoin("cce", "event", "evt"));
    120     parentExtractsQuery.restrict(Restrictions.eq(Hql.property("evt", "bioMaterial"),  Expressions.parameter(restrictionParameter)));
    121     parentExtractsQuery.order(Orders.asc(Hql.property("name")));
    122     parentExtractsQuery.include(cc.getInclude());
    123     cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ParentBioMaterialLoader(parentExtractsQuery, restrictionParameter));
     119    cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ParentBioMaterialEventSourceLoader());
    124120  }
    125121%>
  • trunk/www/biomaterials/extracts/list_extracts.jsp

    r5951 r5963  
    2424  @version 2.0
    2525--%>
     26<%@page import="net.sf.basedb.core.MeasuredBioMaterial"%>
    2627<%@ page pageEncoding="UTF-8" session="false"
    2728  import="net.sf.basedb.core.SessionControl"
     
    788789                <tbl:cell column="parents">
    789790                  <%
    790                   if (item.hasSingleParent() || item.getParentType() == null)
     791                  if (item.hasSingleParent() || parentType == null)
    791792                  {
     793                    Float usedQuantity = null;
     794                    if (parentType != null)
     795                    {
     796                      try
     797                      {
     798                        usedQuantity = creationEvent.getUsedQuantity((MeasuredBioMaterial)item.getParent());
     799                      }
     800                      catch (PermissionDeniedException ex)
     801                      {}
     802                    }
    792803                    %>
    793                     <base:propertyvalue item="<%=item%>" property="parent"/>
     804                    <base:propertyvalue item="<%=item%>" property="parent" />
     805                    <%=usedQuantity != null ? "(" + usedQuantity + "µg)" : ""%>
    794806                    <%
    795807                  }
     
    800812                    for (Extract e : parentExtractsQuery.list(dc))
    801813                    {
     814                      Float usedQuantity = creationEvent.getUsedQuantity(e);
    802815                      out.write(separator);
    803816                      if (mode.hasPropertyLink())
     
    808821                      {
    809822                        out.write(HTML.encodeTags(e.getName()));
     823                      }
     824                      if (usedQuantity != null)
     825                      {
     826                        out.write(" (" + usedQuantity + "µg)");
    810827                      }
    811828                      separator = ", ";
  • trunk/www/biomaterials/samples/index.jsp

    r5687 r5963  
    5656  import="net.sf.basedb.util.Values"
    5757  import="net.sf.basedb.clients.web.plugins.ParentBioMaterialLoader"
     58  import="net.sf.basedb.clients.web.plugins.BioMaterialEventSourceFormatter"
     59  import="net.sf.basedb.clients.web.plugins.ParentBioMaterialEventSourceLoader"
    5860  import="net.sf.basedb.clients.web.plugins.ItemQueryLoader"
    5961  import="net.sf.basedb.clients.web.util.HTML"
     
    8991    cc.setObject("export.formatter.bioWell.row", new WellCoordinateFormatter(true));
    9092    cc.setObject("export.formatter.bioWell.column", new WellCoordinateFormatter(false));
    91     cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new NameableFormatter());
     93    cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new BioMaterialEventSourceFormatter());
    9294    cc.setObject("export.formatter.&childCreationEvents(event.bioMaterial.name)", new NameableFormatter());
    9395    cc.setObject("export.formatter.&children(name)", new NameableFormatter());
     
    114116   
    115117    // Parent samples
    116     final ItemQuery<Sample> parentSamplesQuery = Sample.getQuery();
    117     parentSamplesQuery.join(Hql.innerJoin("childCreationEvents", "cce"));
    118     parentSamplesQuery.join(Hql.innerJoin("cce", "event", "evt"));
    119     parentSamplesQuery.restrict(Restrictions.eq(Hql.property("evt", "bioMaterial"),  Expressions.parameter(sampleParameter)));
    120     parentSamplesQuery.order(Orders.asc(Hql.property("name")));
    121     parentSamplesQuery.include(cc.getInclude());
    122     cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ParentBioMaterialLoader(parentSamplesQuery, sampleParameter));
     118    cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ParentBioMaterialEventSourceLoader());
    123119  }
    124120%>
  • trunk/www/biomaterials/samples/list_samples.jsp

    r5954 r5963  
    787787                  if (item.hasSingleParent() || parentType == null)
    788788                  {
     789                    Float usedQuantity = null;
     790                    if (parentType == Item.SAMPLE)
     791                    {
     792                      try
     793                      {
     794                        usedQuantity = creationEvent.getUsedQuantity((Sample)item.getParent());
     795                      }
     796                      catch (PermissionDeniedException ex)
     797                      {}
     798                    }
    789799                    %>
    790800                    <base:propertyvalue item="<%=item%>" property="parent"/>
     801                    <%=usedQuantity != null ? "(" + usedQuantity + "µg)" : ""%>
    791802                    <%
    792803                  }
     
    797808                    for (Sample s : parentSamplesQuery.list(dc))
    798809                    {
     810                      Float usedQuantity = creationEvent.getUsedQuantity(s);
    799811                      out.write(separator);
    800812                      if (mode.hasPropertyLink())
     
    805817                      {
    806818                        out.write(HTML.encodeTags(s.getName()));
     819                      }
     820                      if (usedQuantity != null)
     821                      {
     822                        out.write(" (" + usedQuantity + "µg)");
    807823                      }
    808824                      separator = ", ";
  • trunk/www/views/physicalbioassays/index.jsp

    r5687 r5963  
    6161  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
    6262  import="net.sf.basedb.clients.web.plugins.ItemQueryLoader"
     63  import="net.sf.basedb.clients.web.plugins.BioMaterialEventSourceFormatter"
     64  import="net.sf.basedb.clients.web.plugins.ParentBioMaterialEventSourceLoaderFromBioAssay"
    6365  import="net.sf.basedb.core.plugin.GuiContext"
    6466  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
     
    8385  {
    8486    // Register formatters
    85     cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new NameableFormatter());
     87    cc.setObject("export.formatter.&creationEvent.sources(bioMaterial.name)", new BioMaterialEventSourceFormatter());
    8688    cc.setObject("export.formatter.&rootDerivedBioAssays(name)", new NameableFormatter());
    8789   
    8890    // Register dataloaders
    8991    String bioassayParameter = "bioassay";
    90     ItemQuery<Extract> extractQuery = Extract.getQuery();   
    91     extractQuery.include(cc.getInclude());
    92     extractQuery.join(Hql.innerJoin("childCreationEvents", "cce"));
    93     extractQuery.join(Hql.innerJoin("cce", "event", "evt"));
    94     extractQuery.restrict(Restrictions.eq(Hql.property("evt", "physicalBioAssay"), Expressions.parameter(bioassayParameter)));
    95     extractQuery.order(Orders.asc(Hql.property("name")));
    96     cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ItemQueryLoader(extractQuery, bioassayParameter));
     92    cc.setObject("export.dataloader.&creationEvent.sources(bioMaterial.name)", new ParentBioMaterialEventSourceLoaderFromBioAssay());
    9793
    9894    ItemQuery<DerivedBioAssay> dbasQuery = DerivedBioAssay.getQuery();
  • trunk/www/views/physicalbioassays/list_bioassays.jsp

    r5952 r5963  
    602602                    for (Extract extract : extractQuery.list(dc))
    603603                    {
     604                      Float usedQuantity = creationEvent.getUsedQuantity(extract);
    604605                      Tag tag = null;
    605606                      boolean readTag = true;
     
    620621                      {
    621622                        out.write(Base.getLinkedName(ID, extract, false, mode.hasEditLink()));
    622                         out.write(" (" + Base.getLinkedName(ID, tag, !readTag, mode.hasEditLink()) + ")");
    623623                      }
    624624                      else
    625625                      {
    626626                        out.write(HTML.encodeTags(extract.getName()));
    627                         out.write(" (" + Base.getEncodedName(tag, !readTag) + ")");
     627                      }
     628                      if (tag != null || usedQuantity != null)
     629                      {
     630                        out.write(" (");
     631                        if (usedQuantity != null)
     632                        {
     633                          out.write(usedQuantity + "µg");
     634                          if (tag != null) out.write("; ");
     635                        }
     636                        if (tag != null)
     637                        {
     638                          if (mode.hasPropertyLink())
     639                          {
     640                            out.write(Base.getLinkedName(ID, tag, !readTag, mode.hasEditLink()));
     641                          }
     642                          else
     643                          {
     644                            out.write(" (" + Base.getEncodedName(tag, !readTag));
     645                          }
     646                        }
     647                        out.write(")");
    628648                      }
    629649                      separator = ", ";
Note: See TracChangeset for help on using the changeset viewer.