www/biomaterials/events/list_events.jsp

Code
Comments
Other
Rev Date Author Line
1872 31 Jan 06 nicklas 1 <%-- $Id$
1872 31 Jan 06 nicklas 2   ------------------------------------------------------------------
4889 06 Apr 09 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell
1872 31 Jan 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
1872 31 Jan 06 nicklas 8
1872 31 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1872 31 Jan 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
1872 31 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1872 31 Jan 06 nicklas 13
1872 31 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1872 31 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1872 31 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1872 31 Jan 06 nicklas 17   GNU General Public License for more details.
1872 31 Jan 06 nicklas 18
1872 31 Jan 06 nicklas 19   You should have received a copy of the GNU General Public License
4510 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1872 31 Jan 06 nicklas 21   ------------------------------------------------------------------
1872 31 Jan 06 nicklas 22
1872 31 Jan 06 nicklas 23   @author Nicklas
1872 31 Jan 06 nicklas 24   @version 2.0
1872 31 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1872 31 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1872 31 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1872 31 Jan 06 nicklas 29   import="net.sf.basedb.core.Item"
1872 31 Jan 06 nicklas 30   import="net.sf.basedb.core.ItemContext"
1872 31 Jan 06 nicklas 31   import="net.sf.basedb.core.BioMaterialEvent"
5525 06 Dec 10 nicklas 32   import="net.sf.basedb.core.BioPlateEvent"
5525 06 Dec 10 nicklas 33   import="net.sf.basedb.core.BioPlateEventParticipant"
5525 06 Dec 10 nicklas 34   import="net.sf.basedb.core.BioPlate"
1872 31 Jan 06 nicklas 35   import="net.sf.basedb.core.MeasuredBioMaterial"
4560 06 Oct 08 nicklas 36   import="net.sf.basedb.core.Quantity"
4560 06 Oct 08 nicklas 37   import="net.sf.basedb.core.Unit"
1872 31 Jan 06 nicklas 38   import="net.sf.basedb.core.ItemQuery"
1872 31 Jan 06 nicklas 39   import="net.sf.basedb.core.ItemResultIterator"
1872 31 Jan 06 nicklas 40   import="net.sf.basedb.core.Permission"
1872 31 Jan 06 nicklas 41   import="net.sf.basedb.core.PluginDefinition"
1872 31 Jan 06 nicklas 42   import="net.sf.basedb.core.PermissionDeniedException"
1872 31 Jan 06 nicklas 43   import="net.sf.basedb.core.query.Restrictions"
1872 31 Jan 06 nicklas 44   import="net.sf.basedb.core.query.Expressions"
1872 31 Jan 06 nicklas 45   import="net.sf.basedb.core.query.Orders"
1872 31 Jan 06 nicklas 46   import="net.sf.basedb.core.query.Hql"
1872 31 Jan 06 nicklas 47   import="net.sf.basedb.core.plugin.GuiContext"
1872 31 Jan 06 nicklas 48   import="net.sf.basedb.core.plugin.Plugin"
1872 31 Jan 06 nicklas 49   import="net.sf.basedb.util.Enumeration"
4560 06 Oct 08 nicklas 50   import="net.sf.basedb.util.units.UnitUtil"
1872 31 Jan 06 nicklas 51   import="net.sf.basedb.clients.web.Base"
5050 17 Aug 09 nicklas 52   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
1872 31 Jan 06 nicklas 53   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 54   import="net.sf.basedb.clients.web.PermissionUtil"
1872 31 Jan 06 nicklas 55   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 56   import="net.sf.basedb.util.Values"
2942 22 Nov 06 nicklas 57   import="net.sf.basedb.util.formatter.Formatter"
2942 22 Nov 06 nicklas 58   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4882 03 Apr 09 nicklas 59   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4882 03 Apr 09 nicklas 60   import="net.sf.basedb.clients.web.extensions.JspContext"
4882 03 Apr 09 nicklas 61   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 62   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4882 03 Apr 09 nicklas 63   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 64   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6038 29 Mar 12 nicklas 65   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
4882 03 Apr 09 nicklas 66   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1872 31 Jan 06 nicklas 67   import="java.util.List"
1872 31 Jan 06 nicklas 68   import="java.util.Map"
2942 22 Nov 06 nicklas 69   import="java.util.Date"
1872 31 Jan 06 nicklas 70 %>
1872 31 Jan 06 nicklas 71 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1872 31 Jan 06 nicklas 72 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
1872 31 Jan 06 nicklas 73 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1872 31 Jan 06 nicklas 74 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4882 03 Apr 09 nicklas 75 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1872 31 Jan 06 nicklas 76 <%!
1872 31 Jan 06 nicklas 77   private static final Item itemType = Item.BIOMATERIALEVENT;
1872 31 Jan 06 nicklas 78   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
1872 31 Jan 06 nicklas 79 %>
1872 31 Jan 06 nicklas 80 <%
1872 31 Jan 06 nicklas 81 final Item bioMaterialType = Item.valueOf(request.getParameter("biomaterial_type"));
1872 31 Jan 06 nicklas 82 final int bioMaterialId = Values.getInt(request.getParameter("biomaterial_id"));
1872 31 Jan 06 nicklas 83 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1872 31 Jan 06 nicklas 84 final String ID = sc.getId();
1872 31 Jan 06 nicklas 85 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1872 31 Jan 06 nicklas 86
1872 31 Jan 06 nicklas 87 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
1872 31 Jan 06 nicklas 88 final String callback = request.getParameter("callback");
1872 31 Jan 06 nicklas 89 final String title = mode.generateTitle("event", "events");
7954 12 May 21 nicklas 90 final DbControl dc = sc.newDbControl(":List "+itemType);
1872 31 Jan 06 nicklas 91 ItemResultIterator<BioMaterialEvent> events = null;
1872 31 Jan 06 nicklas 92 try
1872 31 Jan 06 nicklas 93 {
5525 06 Dec 10 nicklas 94   final MeasuredBioMaterial bioMaterial = (MeasuredBioMaterial)bioMaterialType.getById(dc, bioMaterialId);
5525 06 Dec 10 nicklas 95   final BioMaterialEvent creationEvent = bioMaterial.getCreationEvent();
1872 31 Jan 06 nicklas 96   final boolean createPermission = bioMaterial.hasPermission(Permission.WRITE);
1872 31 Jan 06 nicklas 97   final boolean deletePermission = createPermission;
1872 31 Jan 06 nicklas 98
1872 31 Jan 06 nicklas 99   String viewPage = null;
1872 31 Jan 06 nicklas 100   String listName = null;
1872 31 Jan 06 nicklas 101   if (bioMaterialType == Item.SAMPLE)
1872 31 Jan 06 nicklas 102   {
1872 31 Jan 06 nicklas 103     listName = "Samples";
1872 31 Jan 06 nicklas 104     viewPage = "../samples/index.jsp";
1872 31 Jan 06 nicklas 105   }
1872 31 Jan 06 nicklas 106   else if (bioMaterialType == Item.EXTRACT)
1872 31 Jan 06 nicklas 107   {
1872 31 Jan 06 nicklas 108     listName = "Extracts";
1872 31 Jan 06 nicklas 109     viewPage = "../extracts/index.jsp";
1872 31 Jan 06 nicklas 110   }
1872 31 Jan 06 nicklas 111   
4888 06 Apr 09 nicklas 112   Unit microGram = UnitUtil.getUnit(dc, Quantity.MASS, "µg");
1872 31 Jan 06 nicklas 113   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 114   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioMaterial);
2029 20 Feb 06 nicklas 115   try
2029 20 Feb 06 nicklas 116   {
7914 23 Feb 21 nicklas 117     final ItemQuery<BioMaterialEvent> query = Base.getConfiguredQuery(dc, cc, jspContext, true, bioMaterial.getEvents(), mode);
2029 20 Feb 06 nicklas 118     events = query.iterate(dc);
2029 20 Feb 06 nicklas 119   }
2029 20 Feb 06 nicklas 120   catch (Throwable t)
2029 20 Feb 06 nicklas 121   {
2029 20 Feb 06 nicklas 122     cc.setMessage(t.getMessage());
4560 06 Oct 08 nicklas 123     t.printStackTrace();
2029 20 Feb 06 nicklas 124   }
1872 31 Jan 06 nicklas 125   int numListed = 0;
2942 22 Nov 06 nicklas 126   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
6268 11 Apr 13 nicklas 127   Formatter<Number> numericFormatter = FormatterFactory.getNumberFormatter(sc);
7604 25 Feb 19 nicklas 128   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 129   ExtensionsInvoker<ListColumnAction<BioMaterialEvent,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1872 31 Jan 06 nicklas 130   %>
6260 27 Mar 13 nicklas 131   <base:page title="<%=title%>" type="<%=mode.getPageType()%>" id="list-page">
6260 27 Mar 13 nicklas 132   <base:head scripts="table.js,tabcontrol-2.js,~events.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
4882 03 Apr 09 nicklas 133     <ext:scripts context="<%=jspContext%>" />
4882 03 Apr 09 nicklas 134     <ext:stylesheets context="<%=jspContext%>" />
1872 31 Jan 06 nicklas 135   </base:head>
1872 31 Jan 06 nicklas 136   
1872 31 Jan 06 nicklas 137   <base:body>
5951 09 Feb 12 nicklas 138     <p:path><p:pathelement 
5951 09 Feb 12 nicklas 139       title="<%=listName%>" href="<%=viewPage+"?ID="+ID%>" 
5951 09 Feb 12 nicklas 140       /><p:pathelement title="<%=HTML.encodeTags(bioMaterial.getName())%>"
5951 09 Feb 12 nicklas 141       /></p:path>
1872 31 Jan 06 nicklas 142
5951 09 Feb 12 nicklas 143     <t:tabcontrol 
5951 09 Feb 12 nicklas 144       id="main" 
5951 09 Feb 12 nicklas 145       subclass="mastertabcontrol content"
6260 27 Mar 13 nicklas 146       active="events">
1872 31 Jan 06 nicklas 147     <t:tab id="properties" title="Properties" />
2875 08 Nov 06 nicklas 148     <t:tab id="annotations" title="Annotations &amp; parameters"
2875 08 Nov 06 nicklas 149       tooltip="View annotation values and protocol parameters" />
1872 31 Jan 06 nicklas 150     
1872 31 Jan 06 nicklas 151     <t:tab id="events" title="Events">
1872 31 Jan 06 nicklas 152     <tbl:table 
1872 31 Jan 06 nicklas 153       id="events" 
1872 31 Jan 06 nicklas 154       columns="<%=cc.getSetting("columns")%>"
1872 31 Jan 06 nicklas 155       sortby="<%=cc.getSortProperty()%>" 
1872 31 Jan 06 nicklas 156       direction="<%=cc.getSortDirection()%>"
1872 31 Jan 06 nicklas 157       action="index.jsp"
1872 31 Jan 06 nicklas 158       sc="<%=sc%>"
1872 31 Jan 06 nicklas 159       item="<%=itemType%>"
6701 30 Jan 15 nicklas 160       filterrows="<%=cc.getFilterRows()%>"
5951 09 Feb 12 nicklas 161       subclass="fulltable"
7982 14 Jun 21 nicklas 162       stickyheaders="<%=cc.getSetting("columns.sticky", null)%>"
1872 31 Jan 06 nicklas 163       >
1872 31 Jan 06 nicklas 164       <tbl:hidden 
1872 31 Jan 06 nicklas 165         name="mode" 
1872 31 Jan 06 nicklas 166         value="<%=mode.getName()%>" 
1872 31 Jan 06 nicklas 167       />
1872 31 Jan 06 nicklas 168       <tbl:hidden 
1872 31 Jan 06 nicklas 169         name="biomaterial_id"
1872 31 Jan 06 nicklas 170         value="<%=String.valueOf(bioMaterialId)%>" 
1872 31 Jan 06 nicklas 171       />
1872 31 Jan 06 nicklas 172       <tbl:hidden 
1872 31 Jan 06 nicklas 173         name="biomaterial_type" 
1872 31 Jan 06 nicklas 174         value="<%=bioMaterialType.name()%>" 
1872 31 Jan 06 nicklas 175       />
1872 31 Jan 06 nicklas 176       <tbl:hidden 
1872 31 Jan 06 nicklas 177         name="callback" 
1872 31 Jan 06 nicklas 178         value="<%=callback%>" 
1872 31 Jan 06 nicklas 179         skip="<%=callback == null%>" 
1872 31 Jan 06 nicklas 180       />
1872 31 Jan 06 nicklas 181       <%
1872 31 Jan 06 nicklas 182       Enumeration<String, String> eventTypes = new Enumeration<String, String>();
1872 31 Jan 06 nicklas 183       for (BioMaterialEvent.Type et : BioMaterialEvent.Type.values())
1872 31 Jan 06 nicklas 184       {
1872 31 Jan 06 nicklas 185         eventTypes.add(Integer.toString(et.getValue()), HTML.encodeTags(et.toString()));
1872 31 Jan 06 nicklas 186       }
1872 31 Jan 06 nicklas 187       %>
1872 31 Jan 06 nicklas 188       <tbl:columndef 
1872 31 Jan 06 nicklas 189         id="type"
1872 31 Jan 06 nicklas 190         property="eventType"
1872 31 Jan 06 nicklas 191         datatype="int"
1872 31 Jan 06 nicklas 192         title="Type"
1872 31 Jan 06 nicklas 193         enumeration="<%=eventTypes%>"
1872 31 Jan 06 nicklas 194         sortable="true" 
1872 31 Jan 06 nicklas 195         filterable="true"
1872 31 Jan 06 nicklas 196         exportable="true"
1872 31 Jan 06 nicklas 197         show="always" 
1872 31 Jan 06 nicklas 198       />
1872 31 Jan 06 nicklas 199       <tbl:columndef 
4332 12 Jun 08 martin 200         id="id"
4387 11 Aug 08 nicklas 201         clazz="uniquecol"
4332 12 Jun 08 martin 202         property="id"
4332 12 Jun 08 martin 203         datatype="int"
4332 12 Jun 08 martin 204         title="ID"
4332 12 Jun 08 martin 205         sortable="true"
4332 12 Jun 08 martin 206         filterable="true"
4332 12 Jun 08 martin 207         exportable="true"
4332 12 Jun 08 martin 208       />
4332 12 Jun 08 martin 209       <tbl:columndef 
1872 31 Jan 06 nicklas 210         id="entryDate"
1872 31 Jan 06 nicklas 211         property="entryDate"
1872 31 Jan 06 nicklas 212         datatype="date"
1872 31 Jan 06 nicklas 213         title="Entry date"
1872 31 Jan 06 nicklas 214         sortable="true" 
1872 31 Jan 06 nicklas 215         filterable="true"
1872 31 Jan 06 nicklas 216         exportable="true"
2942 22 Nov 06 nicklas 217         formatter="<%=dateFormatter%>"
1872 31 Jan 06 nicklas 218       />
1872 31 Jan 06 nicklas 219       <tbl:columndef 
1872 31 Jan 06 nicklas 220         id="eventDate"
1872 31 Jan 06 nicklas 221         property="eventDate"
1872 31 Jan 06 nicklas 222         datatype="date"
1872 31 Jan 06 nicklas 223         title="Event date"
1872 31 Jan 06 nicklas 224         sortable="true" 
1872 31 Jan 06 nicklas 225         filterable="true"
1872 31 Jan 06 nicklas 226         exportable="true"
2942 22 Nov 06 nicklas 227         formatter="<%=dateFormatter%>"
1872 31 Jan 06 nicklas 228       />
1872 31 Jan 06 nicklas 229       <tbl:columndef 
1872 31 Jan 06 nicklas 230         id="quantity"
1872 31 Jan 06 nicklas 231         datatype="float"
4888 06 Apr 09 nicklas 232         title="Used quantity (µg)"
1872 31 Jan 06 nicklas 233         sortable="false" 
1872 31 Jan 06 nicklas 234         filterable="false"
1872 31 Jan 06 nicklas 235         exportable="false"
4560 06 Oct 08 nicklas 236         unit="<%=microGram%>"
6268 11 Apr 13 nicklas 237         formatter="<%=numericFormatter %>"
1872 31 Jan 06 nicklas 238       />
5525 06 Dec 10 nicklas 239       <tbl:columndef
5525 06 Dec 10 nicklas 240         id="bioPlateEvent"
5525 06 Dec 10 nicklas 241         property="bioPlateEventParticipant.event.name"
5525 06 Dec 10 nicklas 242         datatype="string"
5525 06 Dec 10 nicklas 243         title="Plate event"
5525 06 Dec 10 nicklas 244         sortable="true" 
5525 06 Dec 10 nicklas 245         filterable="true"
5525 06 Dec 10 nicklas 246         exportable="true"
5525 06 Dec 10 nicklas 247       />
1872 31 Jan 06 nicklas 248       <tbl:columndef 
1872 31 Jan 06 nicklas 249         id="protocol"
1872 31 Jan 06 nicklas 250         property="protocol.name"
1872 31 Jan 06 nicklas 251         datatype="string"
1872 31 Jan 06 nicklas 252         title="Protocol"
1872 31 Jan 06 nicklas 253         sortable="true" 
1872 31 Jan 06 nicklas 254         filterable="true"
1872 31 Jan 06 nicklas 255         exportable="true"
1872 31 Jan 06 nicklas 256       />
1872 31 Jan 06 nicklas 257       <tbl:columndef 
6993 03 Nov 15 nicklas 258         id="kit"
6993 03 Nov 15 nicklas 259         property="kit.name"
6993 03 Nov 15 nicklas 260         datatype="string"
6993 03 Nov 15 nicklas 261         title="Kit"
6993 03 Nov 15 nicklas 262         sortable="true" 
6993 03 Nov 15 nicklas 263         filterable="true"
6993 03 Nov 15 nicklas 264         exportable="true"
6993 03 Nov 15 nicklas 265       />
6993 03 Nov 15 nicklas 266       <tbl:columndef 
1872 31 Jan 06 nicklas 267         id="user"
1872 31 Jan 06 nicklas 268         property="user.name"
1872 31 Jan 06 nicklas 269         datatype="string"
1872 31 Jan 06 nicklas 270         title="User"
1872 31 Jan 06 nicklas 271         sortable="true" 
1872 31 Jan 06 nicklas 272         filterable="true"
1872 31 Jan 06 nicklas 273         exportable="true"
1872 31 Jan 06 nicklas 274       />
1872 31 Jan 06 nicklas 275       <tbl:columndef 
1872 31 Jan 06 nicklas 276         id="comment"
1872 31 Jan 06 nicklas 277         property="comment"
1872 31 Jan 06 nicklas 278         datatype="string"
1872 31 Jan 06 nicklas 279         title="Comment" 
1872 31 Jan 06 nicklas 280         sortable="true" 
1872 31 Jan 06 nicklas 281         filterable="true" 
1872 31 Jan 06 nicklas 282         exportable="true"
1872 31 Jan 06 nicklas 283       />
2401 21 Jun 06 martin 284       <tbl:columndef
2401 21 Jun 06 martin 285         id="permission"
2401 21 Jun 06 martin 286         title="Permission"
2401 21 Jun 06 martin 287       />
6038 29 Mar 12 nicklas 288       <tbl:columndef 
6038 29 Mar 12 nicklas 289         id="xt-columns" 
6038 29 Mar 12 nicklas 290         extensions="<%=columnsInvoker%>" 
6038 29 Mar 12 nicklas 291         jspcontext="<%=jspContext%>" 
6038 29 Mar 12 nicklas 292       />
6604 18 Nov 14 nicklas 293       <div class="panelgroup bg-filled-50 bottomborder">
5951 09 Feb 12 nicklas 294         <tbl:toolbar
5951 09 Feb 12 nicklas 295           visible="<%=mode.hasToolbar()%>"
5951 09 Feb 12 nicklas 296           subclass="bottomborder"
5951 09 Feb 12 nicklas 297           >
5951 09 Feb 12 nicklas 298           <tbl:button 
6260 27 Mar 13 nicklas 299             id="btnNewItem"
6260 27 Mar 13 nicklas 300             data-extra-url="<%="&biomaterial_type="+bioMaterialType.name()+"&biomaterial_id="+bioMaterialId%>"
5951 09 Feb 12 nicklas 301             disabled="<%=!createPermission%>" 
5951 09 Feb 12 nicklas 302             image="new.png" 
5951 09 Feb 12 nicklas 303             title="New&hellip;" 
5951 09 Feb 12 nicklas 304             tooltip="<%=createPermission ? "Create new event" : "You do not have permission to create events"%>" 
5951 09 Feb 12 nicklas 305           />
5951 09 Feb 12 nicklas 306           <tbl:button 
6260 27 Mar 13 nicklas 307             id="btnDeleteItems"
5951 09 Feb 12 nicklas 308             disabled="<%=!deletePermission%>" 
5951 09 Feb 12 nicklas 309             image="delete.png" 
5951 09 Feb 12 nicklas 310             title="Delete&hellip;"
6260 27 Mar 13 nicklas 311             data-confirm="1"
5951 09 Feb 12 nicklas 312             tooltip="<%=deletePermission ? "Delete the selected events" : "You do not have permission to delete events"%>" 
5951 09 Feb 12 nicklas 313           />
5951 09 Feb 12 nicklas 314           <tbl:button 
6260 27 Mar 13 nicklas 315             id="btnColumns"
5951 09 Feb 12 nicklas 316             image="columns.png" 
5951 09 Feb 12 nicklas 317             title="Columns&hellip;" 
5951 09 Feb 12 nicklas 318             tooltip="Show, hide and re-order columns" 
5951 09 Feb 12 nicklas 319           />
5951 09 Feb 12 nicklas 320           <tbl:button 
6260 27 Mar 13 nicklas 321             id="btnImport"
6260 27 Mar 13 nicklas 322             data-plugin-type="IMPORT"
5951 09 Feb 12 nicklas 323             image="import.png" 
5951 09 Feb 12 nicklas 324             title="Import&hellip;" 
5951 09 Feb 12 nicklas 325             tooltip="Import data" 
5951 09 Feb 12 nicklas 326             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5951 09 Feb 12 nicklas 327           />
5951 09 Feb 12 nicklas 328           <tbl:button 
6260 27 Mar 13 nicklas 329             id="btnExport"
6260 27 Mar 13 nicklas 330             data-plugin-type="EXPORT"
5951 09 Feb 12 nicklas 331             image="export.png" 
5951 09 Feb 12 nicklas 332             title="Export&hellip;" 
5951 09 Feb 12 nicklas 333             tooltip="Export data" 
5951 09 Feb 12 nicklas 334             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5951 09 Feb 12 nicklas 335           />
5951 09 Feb 12 nicklas 336           <tbl:button 
6260 27 Mar 13 nicklas 337             id="btnRunPlugin"
6260 27 Mar 13 nicklas 338             data-plugin-type="OTHER"
5951 09 Feb 12 nicklas 339             image="runplugin.png" 
5951 09 Feb 12 nicklas 340             title="Run plugin&hellip;" 
5951 09 Feb 12 nicklas 341             tooltip="Run a plugin" 
5951 09 Feb 12 nicklas 342             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5951 09 Feb 12 nicklas 343           />
5951 09 Feb 12 nicklas 344           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 345             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5951 09 Feb 12 nicklas 346         </tbl:toolbar>
5951 09 Feb 12 nicklas 347         <tbl:panel>
6182 23 Oct 12 nicklas 348           <tbl:presetselector />
5951 09 Feb 12 nicklas 349           <tbl:navigator
5951 09 Feb 12 nicklas 350             page="<%=cc.getPage()%>" 
5951 09 Feb 12 nicklas 351             rowsperpage="<%=cc.getRowsPerPage()%>" 
5951 09 Feb 12 nicklas 352             totalrows="<%=events == null ? 0 : events.getTotalCount()%>" 
5951 09 Feb 12 nicklas 353             visible="<%=mode.hasNavigator()%>"
5951 09 Feb 12 nicklas 354           />
5951 09 Feb 12 nicklas 355         </tbl:panel>
5951 09 Feb 12 nicklas 356       </div>
1872 31 Jan 06 nicklas 357       <tbl:data>
5948 08 Feb 12 nicklas 358         <tbl:headers>
5948 08 Feb 12 nicklas 359           <tbl:headerrow>
7943 04 May 21 nicklas 360             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 361             <tbl:columnheaders />
5948 08 Feb 12 nicklas 362           </tbl:headerrow>
6701 30 Jan 15 nicklas 363           <%
6701 30 Jan 15 nicklas 364           int numFilters = cc.getNumPropertyFilters();
6701 30 Jan 15 nicklas 365           int numRows = cc.getFilterRows();
6701 30 Jan 15 nicklas 366           for (int filterNo = 0; filterNo < numRows; filterNo++)
6701 30 Jan 15 nicklas 367           {
6701 30 Jan 15 nicklas 368             boolean lastRow = filterNo == numRows-1;
6701 30 Jan 15 nicklas 369             %>
6701 30 Jan 15 nicklas 370             <tbl:headerrow>
7943 04 May 21 nicklas 371               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 372                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 373                   <div class="index"></div>
7943 04 May 21 nicklas 374                   <div class="check">
7943 04 May 21 nicklas 375                     <base:icon 
7943 04 May 21 nicklas 376                       subclass="link table-check"
7943 04 May 21 nicklas 377                       image="check_uncheck.png" 
7943 04 May 21 nicklas 378                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 379                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 380                     />
7943 04 May 21 nicklas 381                   </div>
7943 04 May 21 nicklas 382                   <div class="icons">
7943 04 May 21 nicklas 383                     <base:icon
7943 04 May 21 nicklas 384                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 385                       image="add.png"
7943 04 May 21 nicklas 386                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 387                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 388                     /><base:icon
7943 04 May 21 nicklas 389                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 390                       image="remove.png"
7943 04 May 21 nicklas 391                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 392                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 393                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 394                     />
7943 04 May 21 nicklas 395                   </div>
7943 04 May 21 nicklas 396                 </div>
6701 30 Jan 15 nicklas 397               </tbl:header>
6701 30 Jan 15 nicklas 398               <tbl:propertyfilter row="<%=filterNo%>" />
6701 30 Jan 15 nicklas 399             </tbl:headerrow>
6701 30 Jan 15 nicklas 400             <%
6701 30 Jan 15 nicklas 401           }
6701 30 Jan 15 nicklas 402           %>
7913 22 Feb 21 nicklas 403           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 404         </tbl:headers>
5948 08 Feb 12 nicklas 405         <tbl:rows>
1872 31 Jan 06 nicklas 406           <%
5951 09 Feb 12 nicklas 407           if (cc.getMessage() != null)
5951 09 Feb 12 nicklas 408           {
5951 09 Feb 12 nicklas 409             %>
6604 18 Nov 14 nicklas 410             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 411               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5951 09 Feb 12 nicklas 412             </tbl:panel>
5951 09 Feb 12 nicklas 413             <%
5951 09 Feb 12 nicklas 414             cc.setMessage(null);
5951 09 Feb 12 nicklas 415           }
1872 31 Jan 06 nicklas 416           int index = cc.getPage()*cc.getRowsPerPage();
1872 31 Jan 06 nicklas 417           int selectedItemId = cc.getId();
2029 20 Feb 06 nicklas 418           if (events != null)
1872 31 Jan 06 nicklas 419           {
2029 20 Feb 06 nicklas 420             while (events.hasNext())
2029 20 Feb 06 nicklas 421             {
2029 20 Feb 06 nicklas 422               BioMaterialEvent item = events.next();
2029 20 Feb 06 nicklas 423               BioMaterialEvent.Type eventType = item.getEventType();
2029 20 Feb 06 nicklas 424               int itemId = item.getId();
6260 27 Mar 13 nicklas 425               boolean writePermission = item.hasPermission(Permission.WRITE);
6260 27 Mar 13 nicklas 426               String tooltip = mode.isSelectionMode() ? 
6260 27 Mar 13 nicklas 427                 "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2029 20 Feb 06 nicklas 428               String name = "TODO";
2029 20 Feb 06 nicklas 429               index++;
2029 20 Feb 06 nicklas 430               numListed++;
2029 20 Feb 06 nicklas 431               %>
2029 20 Feb 06 nicklas 432               <tbl:row>
7943 04 May 21 nicklas 433                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 434                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 435                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 436                     <div class="check">
7943 04 May 21 nicklas 437                       <base:input
7943 04 May 21 nicklas 438                         type="checkbox" 
7943 04 May 21 nicklas 439                         name="<%=itemId%>" 
7943 04 May 21 nicklas 440                         value="<%=itemId%>" 
7943 04 May 21 nicklas 441                         title="<%=name%>" 
7943 04 May 21 nicklas 442                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 443                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 444                       />
7943 04 May 21 nicklas 445                       <base:input 
7943 04 May 21 nicklas 446                         type="radio" 
7943 04 May 21 nicklas 447                         name="item_id" 
7943 04 May 21 nicklas 448                         value="<%=itemId%>" 
7943 04 May 21 nicklas 449                         title="<%=name%>" 
7943 04 May 21 nicklas 450                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 451                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 452                       />
7943 04 May 21 nicklas 453                     </div>
7943 04 May 21 nicklas 454                     <div class="icons">
7943 04 May 21 nicklas 455                     </div>
7943 04 May 21 nicklas 456                   </div>
7943 04 May 21 nicklas 457                 </tbl:header>
2029 20 Feb 06 nicklas 458                 <tbl:cell column="type">
1872 31 Jan 06 nicklas 459                   <%
2029 20 Feb 06 nicklas 460                   if (eventType == BioMaterialEvent.Type.OTHER)
2029 20 Feb 06 nicklas 461                   {
6260 27 Mar 13 nicklas 462                     %>
6260 27 Mar 13 nicklas 463                     <div
6260 27 Mar 13 nicklas 464                       class="link table-item"
6260 27 Mar 13 nicklas 465                       data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 466                       data-no-edit="<%=writePermission ? 0 : 1 %>" 
6260 27 Mar 13 nicklas 467                       data-extra-url="&biomaterial_type=<%=bioMaterialType.name()%>&biomaterial_id=<%=bioMaterialId%>"
6260 27 Mar 13 nicklas 468                       tabindex="0"
6260 27 Mar 13 nicklas 469                       title="<%=tooltip%>"><%=eventType%></div>
6260 27 Mar 13 nicklas 470                     <%
2029 20 Feb 06 nicklas 471                   }
2029 20 Feb 06 nicklas 472                   else if (eventType == BioMaterialEvent.Type.CREATION)
2029 20 Feb 06 nicklas 473                   {
5525 06 Dec 10 nicklas 474                     if (item.equals(creationEvent))
5525 06 Dec 10 nicklas 475                     {
5525 06 Dec 10 nicklas 476                       %>
6260 27 Mar 13 nicklas 477                       <div
6260 27 Mar 13 nicklas 478                         class="link table-item"
6260 27 Mar 13 nicklas 479                         data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 480                         data-no-edit="1" 
6260 27 Mar 13 nicklas 481                         data-extra-url="&biomaterial_type=<%=bioMaterialType.name()%>&biomaterial_id=<%=bioMaterialId%>"
6260 27 Mar 13 nicklas 482                         tabindex="0"
6260 27 Mar 13 nicklas 483                         title="View this item">Created</div>
5525 06 Dec 10 nicklas 484                       <%
5525 06 Dec 10 nicklas 485                     }
5525 06 Dec 10 nicklas 486                     else
5525 06 Dec 10 nicklas 487                     {
5525 06 Dec 10 nicklas 488                       MeasuredBioMaterial child = null;
5525 06 Dec 10 nicklas 489                       try
5525 06 Dec 10 nicklas 490                       {
5525 06 Dec 10 nicklas 491                         child = item.getBioMaterial();
5525 06 Dec 10 nicklas 492                       }
5525 06 Dec 10 nicklas 493                       catch (PermissionDeniedException ex)
5525 06 Dec 10 nicklas 494                       {}
5525 06 Dec 10 nicklas 495                       %>
6260 27 Mar 13 nicklas 496                       <div
6260 27 Mar 13 nicklas 497                         class="link table-item"
6260 27 Mar 13 nicklas 498                         data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 499                         data-no-edit="1" 
6260 27 Mar 13 nicklas 500                         data-extra-url="&biomaterial_type=<%=bioMaterialType.name()%>&biomaterial_id=<%=bioMaterialId%>"
6260 27 Mar 13 nicklas 501                         tabindex="0"
6260 27 Mar 13 nicklas 502                         title="View this item">
6260 27 Mar 13 nicklas 503                         Created <%=child == null ? "child" : child.getType().toString().toLowerCase() %>: <base:propertyvalue 
5525 06 Dec 10 nicklas 504                             item="<%=item%>" 
5525 06 Dec 10 nicklas 505                             property="bioMaterial"
5525 06 Dec 10 nicklas 506                             enableEditLink="<%=false%>" 
5525 06 Dec 10 nicklas 507                             enablePropertyLink="<%=false%>"
5525 06 Dec 10 nicklas 508                           />
6260 27 Mar 13 nicklas 509                         </div>
5525 06 Dec 10 nicklas 510                       <%
5525 06 Dec 10 nicklas 511                     }
2029 20 Feb 06 nicklas 512                   }
5642 26 May 11 nicklas 513                   else if (eventType == BioMaterialEvent.Type.BIOASSAY)
2029 20 Feb 06 nicklas 514                   {
2029 20 Feb 06 nicklas 515                     %>
6260 27 Mar 13 nicklas 516                     <div
6260 27 Mar 13 nicklas 517                       class="link table-item"
6260 27 Mar 13 nicklas 518                       data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 519                       data-no-edit="1" 
6260 27 Mar 13 nicklas 520                       data-extra-url="&biomaterial_type=<%=bioMaterialType.name()%>&biomaterial_id=<%=bioMaterialId%>"
6260 27 Mar 13 nicklas 521                       tabindex="0"
6260 27 Mar 13 nicklas 522                       title="View this item">
6260 27 Mar 13 nicklas 523                         Bioassay: <base:propertyvalue 
6260 27 Mar 13 nicklas 524                             item="<%=item%>" 
6260 27 Mar 13 nicklas 525                             property="physicalBioAssay"
6260 27 Mar 13 nicklas 526                             enableEditLink="<%=false%>" 
6260 27 Mar 13 nicklas 527                             enablePropertyLink="<%=false%>"
6260 27 Mar 13 nicklas 528                           />
2029 20 Feb 06 nicklas 529                     </div>
2029 20 Feb 06 nicklas 530                     <%
2029 20 Feb 06 nicklas 531                   }
1872 31 Jan 06 nicklas 532                   %>
2029 20 Feb 06 nicklas 533                 </tbl:cell>
4332 12 Jun 08 martin 534                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
2942 22 Nov 06 nicklas 535                 <tbl:cell column="eventDate" value="<%=item.getEventDate()%>" />
2942 22 Nov 06 nicklas 536                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
6268 11 Apr 13 nicklas 537                 <tbl:cell column="quantity" value="<%=item.getUsedQuantity(bioMaterial)%>" />
5525 06 Dec 10 nicklas 538                 <tbl:cell column="bioPlateEvent">
5525 06 Dec 10 nicklas 539                   <%
5525 06 Dec 10 nicklas 540                   try
5525 06 Dec 10 nicklas 541                   {
5525 06 Dec 10 nicklas 542                     BioPlateEventParticipant participant = item.getBioPlateEventParticipant();
5525 06 Dec 10 nicklas 543                     if (participant != null)
5525 06 Dec 10 nicklas 544                     {
5525 06 Dec 10 nicklas 545                       BioPlateEvent event = participant.getEvent();
5525 06 Dec 10 nicklas 546                       String extraUrl = "";
5525 06 Dec 10 nicklas 547                       try
5525 06 Dec 10 nicklas 548                       {
5525 06 Dec 10 nicklas 549                         extraUrl = "&bioplate_id=" + participant.getBioPlate().getId();
5525 06 Dec 10 nicklas 550                       }
5525 06 Dec 10 nicklas 551                       catch (PermissionDeniedException ex)
5525 06 Dec 10 nicklas 552                       {}
5525 06 Dec 10 nicklas 553                       boolean editLink = event.hasPermission(Permission.WRITE);
5525 06 Dec 10 nicklas 554                       if (mode.hasPropertyLink())
5525 06 Dec 10 nicklas 555                       {
5525 06 Dec 10 nicklas 556                         %>
6311 23 Aug 13 nicklas 557                         <span class="link auto-init"
6311 23 Aug 13 nicklas 558                           data-auto-init="item-link" 
6311 23 Aug 13 nicklas 559                           data-item-type="BIOPLATEEVENT"
6311 23 Aug 13 nicklas 560                           data-item-id="<%=event.getId()%>"
6311 23 Aug 13 nicklas 561                           data-no-edit="<%=editLink ? 0 : 1 %>"
6311 23 Aug 13 nicklas 562                           data-extra-url="<%=extraUrl %>"
5525 06 Dec 10 nicklas 563                           title="View this bioplate event <%=editLink? "(use CTRL, ALT or SHIFT to edit)" : ""%>"
5525 06 Dec 10 nicklas 564                         >
5525 06 Dec 10 nicklas 565                         <%=HTML.encodeTags(event.getName()) %>
5525 06 Dec 10 nicklas 566                         </span>
5525 06 Dec 10 nicklas 567                         <%
5525 06 Dec 10 nicklas 568                       }
5525 06 Dec 10 nicklas 569                       else
5525 06 Dec 10 nicklas 570                       {
5525 06 Dec 10 nicklas 571                         %>
5525 06 Dec 10 nicklas 572                         <%=HTML.encodeTags(event.getName()) %>
5525 06 Dec 10 nicklas 573                         <%
5525 06 Dec 10 nicklas 574                       }
5525 06 Dec 10 nicklas 575                     }
5525 06 Dec 10 nicklas 576                     else
5525 06 Dec 10 nicklas 577                     {
5525 06 Dec 10 nicklas 578                       %>
5525 06 Dec 10 nicklas 579                       <i>- none -</i>
5525 06 Dec 10 nicklas 580                       <%
5525 06 Dec 10 nicklas 581                     }
5525 06 Dec 10 nicklas 582                   }
5525 06 Dec 10 nicklas 583                   catch (PermissionDeniedException ex)
5525 06 Dec 10 nicklas 584                   {
5525 06 Dec 10 nicklas 585                     %>
5525 06 Dec 10 nicklas 586                     <i>- denied -</i>
5525 06 Dec 10 nicklas 587                     <%
5525 06 Dec 10 nicklas 588                   }
5525 06 Dec 10 nicklas 589                   %>
5525 06 Dec 10 nicklas 590                 </tbl:cell>
2354 07 Jun 06 martin 591                 <tbl:cell column="protocol"
2354 07 Jun 06 martin 592                   ><base:propertyvalue 
2354 07 Jun 06 martin 593                     item="<%=item%>" 
2354 07 Jun 06 martin 594                     property="protocol"
2354 07 Jun 06 martin 595                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 596                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 597                   /></tbl:cell>
6993 03 Nov 15 nicklas 598                 <tbl:cell column="kit"
6993 03 Nov 15 nicklas 599                   ><base:propertyvalue 
6993 03 Nov 15 nicklas 600                     item="<%=item%>" 
6993 03 Nov 15 nicklas 601                     property="kit"
6993 03 Nov 15 nicklas 602                     enableEditLink="<%=mode.hasEditLink()%>" 
6993 03 Nov 15 nicklas 603                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
6993 03 Nov 15 nicklas 604                   /></tbl:cell>
2354 07 Jun 06 martin 605                 <tbl:cell column="user"
2354 07 Jun 06 martin 606                   ><base:propertyvalue 
2354 07 Jun 06 martin 607                     item="<%=item%>" 
2354 07 Jun 06 martin 608                     property="user"
2354 07 Jun 06 martin 609                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 610                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 611                   /></tbl:cell>
2029 20 Feb 06 nicklas 612                 <tbl:cell column="comment"><%=HTML.encodeTags(item.getComment())%></tbl:cell>
2401 21 Jun 06 martin 613                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
6038 29 Mar 12 nicklas 614                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6038 29 Mar 12 nicklas 615                   <tbl:cell column="xt-columns" />
6038 29 Mar 12 nicklas 616                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 617               </tbl:row>
2029 20 Feb 06 nicklas 618               <%
2029 20 Feb 06 nicklas 619             }
1872 31 Jan 06 nicklas 620           }
5951 09 Feb 12 nicklas 621           if (numListed == 0)
5951 09 Feb 12 nicklas 622           {
5951 09 Feb 12 nicklas 623             %>
6604 18 Nov 14 nicklas 624             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 625               <div class="messagecontainer note">
5951 09 Feb 12 nicklas 626               <%=events == null || events.getTotalCount() == 0 ? "No events were found" : "No events on this page. Please select another page!" %>
5951 09 Feb 12 nicklas 627               </div>
5951 09 Feb 12 nicklas 628             </tbl:panel>
5951 09 Feb 12 nicklas 629             <%
5951 09 Feb 12 nicklas 630           }
1872 31 Jan 06 nicklas 631           %>
1872 31 Jan 06 nicklas 632           </tbl:rows>
1872 31 Jan 06 nicklas 633         </tbl:data>
1872 31 Jan 06 nicklas 634     </tbl:table>
5951 09 Feb 12 nicklas 635     <base:buttongroup subclass="dialogbuttons">
6311 23 Aug 13 nicklas 636       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6311 23 Aug 13 nicklas 637       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6311 23 Aug 13 nicklas 638       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
1872 31 Jan 06 nicklas 639     </base:buttongroup>
1872 31 Jan 06 nicklas 640     </t:tab>
1872 31 Jan 06 nicklas 641     
4746 10 Feb 09 nicklas 642     <t:tab id="overview" title="Overview" 
4746 10 Feb 09 nicklas 643       tooltip="Display a tree overview of related items" />
7166 07 Jun 16 nicklas 644     <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 645       tooltip="Displays a log with the history of this item"
7166 07 Jun 16 nicklas 646       visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>" />
1872 31 Jan 06 nicklas 647     </t:tabcontrol>
1872 31 Jan 06 nicklas 648
1872 31 Jan 06 nicklas 649   </base:body>
1872 31 Jan 06 nicklas 650   </base:page>
1872 31 Jan 06 nicklas 651   <%
1872 31 Jan 06 nicklas 652 }
1872 31 Jan 06 nicklas 653 finally
1872 31 Jan 06 nicklas 654 {
1872 31 Jan 06 nicklas 655   if (events != null) events.close();
1872 31 Jan 06 nicklas 656   if (dc != null) dc.close();
1872 31 Jan 06 nicklas 657 }
3675 16 Aug 07 jari 658 %>