Changeset 6746


Ignore:
Timestamp:
Feb 18, 2015, 11:48:38 AM (7 years ago)
Author:
Nicklas Nordborg
Message:

References #1325: Lists of items (similar funcion as biomaterial lists)

Adding annotations columns if the member items are annotatable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/views/itemlists/members/list_members.jsp

    r6745 r6746  
    4141  import="net.sf.basedb.core.Shareable"
    4242  import="net.sf.basedb.core.Ownable"
     43  import="net.sf.basedb.core.Annotatable"
    4344  import="net.sf.basedb.core.AnnotationSet"
    4445  import="net.sf.basedb.core.Annotation"
     
    101102
    102103ItemResultIterator<? extends Listable> members = null;
     104List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
    103105try
    104106{
     
    110112  final boolean shareable = Shareable.class.isAssignableFrom(memberClass);
    111113  final boolean removable = Removable.class.isAssignableFrom(memberClass);
     114  final boolean annotatable = Annotatable.class.isAssignableFrom(memberClass);
    112115 
    113116  final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST, "listmembers."+list.getId());
     
    116119  final boolean addPermission = list.hasPermission(Permission.WRITE);
    117120  final boolean removePermission = addPermission;
     121 
     122  SnapshotManager manager = null;
     123  if (annotatable)
     124  {
     125    manager = new SnapshotManager();
     126    ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
     127    for (AnnotationType at : annotationTypeQuery.list(dc))
     128    {
     129      annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
     130    }
     131    annotationTypeQuery = Base.getInheritedAnnotationColumns(cc.getSetting("columns"));
     132    for (AnnotationType at : annotationTypeQuery.list(dc))
     133    {
     134      annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at, false, true));
     135    }
     136  }
    118137
    119138  final Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
     
    169188      subcontext="<%="listmembers."+list.getId()%>"
    170189      subclass="fulltable"
     190      data-inherited-annotations="<%=annotatable%>"
    171191      >
    172192      <tbl:hidden
     
    222242        exportable="true"
    223243      />
     244      <%
     245      for (AnnotationLoaderUtil loader : annotationLoaders)
     246      {
     247        AnnotationType at = loader.getAnnotationType();
     248        Enumeration<String, String> annotationEnum = null;
     249        Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
     250        if (at.isEnumeration())
     251        {
     252          annotationEnum = new Enumeration<String, String>();
     253          List<?> values = at.getValues();
     254          for (Object value : values)
     255          {
     256            String encoded = formatter.format(value);
     257            annotationEnum.add(encoded, encoded);
     258          }
     259        }
     260        %>
     261        <tbl:columndef
     262          id="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+at.getId()%>"
     263          title="<%=HTML.encodeTags(at.getName())+(loader.isSearchingInheritedAnnotations() ? " [I]" : " [A]")%>"
     264          property="<%=(loader.isSearchingInheritedAnnotations() ? "##" : "#")+at.getId()%>"
     265          annotation="true"
     266          datatype="<%=at.getValueType().getStringValue()%>"
     267          enumeration="<%=annotationEnum%>"
     268          smartenum="<%=at.getDisplayAsList() %>"
     269          sortable="<%=at.getMultiplicity() == 1 && !loader.isSearchingInheritedAnnotations()%>"
     270          filterable="true"
     271          exportable="true"
     272          formatter="<%=formatter%>"
     273          unit="<%=at.getDefaultUnit()%>"
     274        />
     275        <%
     276      }
     277      %>
    224278      <tbl:columndef
    225279        id="permission"
     
    398452            SharedItem sharedItem = null;
    399453            Removable removableItem = null;
     454            AnnotationSet annotationSet = null;
    400455            while (members.hasNext())
    401456            {
     
    403458              sharedItem = shareable ? (SharedItem)item : null;
    404459              removableItem = removable ? (Removable)item : null;
     460              annotationSet = annotatable && ((Annotatable)item).isAnnotated() ? ((Annotatable)item).getAnnotationSet() : null;
    405461             
    406462              int itemId = item.getId();
     
    471527                  /></tbl:cell>
    472528                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
     529                <%
     530                if (annotationSet != null)
     531                {
     532                  AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, annotationSet.getId());
     533                  for (AnnotationLoaderUtil loader : annotationLoaders)
     534                  {
     535                    %>
     536                    <tbl:cell
     537                      column="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+loader.getId()%>"
     538                      ><%
     539                      if (loader.find(snapshot))
     540                      {
     541                        %><tbl:cellvalue
     542                          list="<%=loader.getValues()%>"
     543                          suffix="<%=loader.getUnitSymbol()%>"
     544                        /><%
     545                      }
     546                      %></tbl:cell>
     547                    <%
     548                  }
     549                }
     550                %>
     551               
    473552                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
    474553                <tbl:cell column="sharedTo">
Note: See TracChangeset for help on using the changeset viewer.