www/admin/protocols/index.jsp

Code
Comments
Other
Rev Date Author Line
706 01 Jun 05 nicklas 1 <%-- $Id$
706 01 Jun 05 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2005 Nicklas Nordborg
5425 23 Sep 10 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
706 01 Jun 05 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/
706 01 Jun 05 nicklas 8
706 01 Jun 05 nicklas 9   BASE is free software; you can redistribute it and/or
706 01 Jun 05 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
706 01 Jun 05 nicklas 12   of the License, or (at your option) any later version.
706 01 Jun 05 nicklas 13
706 01 Jun 05 nicklas 14   BASE is distributed in the hope that it will be useful,
706 01 Jun 05 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
706 01 Jun 05 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
706 01 Jun 05 nicklas 17   GNU General Public License for more details.
706 01 Jun 05 nicklas 18
706 01 Jun 05 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/>.
706 01 Jun 05 nicklas 21   ------------------------------------------------------------------
706 01 Jun 05 nicklas 22
706 01 Jun 05 nicklas 23   @author Nicklas
706 01 Jun 05 nicklas 24   @version 2.0
706 01 Jun 05 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
706 01 Jun 05 nicklas 27   import="net.sf.basedb.core.SessionControl"
706 01 Jun 05 nicklas 28   import="net.sf.basedb.core.DbControl"
706 01 Jun 05 nicklas 29   import="net.sf.basedb.core.Item"
1777 17 Jan 06 nicklas 30   import="net.sf.basedb.core.Include"
706 01 Jun 05 nicklas 31   import="net.sf.basedb.core.Protocol"
5964 15 Feb 12 nicklas 32   import="net.sf.basedb.core.Project"
5630 13 May 11 nicklas 33   import="net.sf.basedb.core.ItemSubtype"
2875 08 Nov 06 nicklas 34   import="net.sf.basedb.core.AnnotationType"
1777 17 Jan 06 nicklas 35   import="net.sf.basedb.core.File"
1418 07 Oct 05 nicklas 36   import="net.sf.basedb.core.ItemQuery"
706 01 Jun 05 nicklas 37   import="net.sf.basedb.core.Permission"
1777 17 Jan 06 nicklas 38   import="net.sf.basedb.core.ItemContext"
1777 17 Jan 06 nicklas 39   import="net.sf.basedb.core.MultiPermissions"
4587 15 Oct 08 martin 40   import="net.sf.basedb.core.OwnedItem"
1777 17 Jan 06 nicklas 41   import="net.sf.basedb.core.PermissionDeniedException"
1777 17 Jan 06 nicklas 42   import="net.sf.basedb.core.ItemAlreadyExistsException"
1777 17 Jan 06 nicklas 43   import="net.sf.basedb.util.RemovableUtil"
1777 17 Jan 06 nicklas 44   import="net.sf.basedb.util.ShareableUtil"
2921 15 Nov 06 nicklas 45   import="net.sf.basedb.util.OwnableUtil"
706 01 Jun 05 nicklas 46   import="net.sf.basedb.clients.web.Base"
1777 17 Jan 06 nicklas 47   import="net.sf.basedb.clients.web.WebException"
2753 20 Oct 06 nicklas 48   import="net.sf.basedb.util.Values"
706 01 Jun 05 nicklas 49   import="net.sf.basedb.clients.web.util.HTML"
5506 19 Nov 10 nicklas 50   import="net.sf.basedb.core.plugin.GuiContext"
5506 19 Nov 10 nicklas 51   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5506 19 Nov 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5506 19 Nov 10 nicklas 53   import="net.sf.basedb.clients.web.extensions.JspContext"
5506 19 Nov 10 nicklas 54   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 55   import="net.sf.basedb.clients.web.extensions.edit.OnSaveAction"
5506 19 Nov 10 nicklas 56   import="net.sf.basedb.clients.web.extensions.edit.OnSaveRenderer"
6045 03 Apr 12 nicklas 57   import="net.sf.basedb.clients.web.extensions.list.ListColumnExportRenderer"
7604 25 Feb 19 nicklas 58   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6045 03 Apr 12 nicklas 59   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
1777 17 Jan 06 nicklas 60   import="java.util.Enumeration"
1777 17 Jan 06 nicklas 61   import="java.util.Set"
1777 17 Jan 06 nicklas 62   import="java.util.HashSet"
1777 17 Jan 06 nicklas 63   import="java.util.List"
1777 17 Jan 06 nicklas 64   import="java.util.ArrayList"
1777 17 Jan 06 nicklas 65   import="java.util.Collections"
706 01 Jun 05 nicklas 66 %>
706 01 Jun 05 nicklas 67 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
706 01 Jun 05 nicklas 68 <%!
5630 13 May 11 nicklas 69   private static final ItemContext defaultContext = Base.createDefaultContext("name", "name,itemSubtype,description");
1777 17 Jan 06 nicklas 70   private static final Item itemType = Item.PROTOCOL;
706 01 Jun 05 nicklas 71 %>
706 01 Jun 05 nicklas 72 <%
1777 17 Jan 06 nicklas 73 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
706 01 Jun 05 nicklas 74 final String ID = sc.getId();
1777 17 Jan 06 nicklas 75 final String cmd = request.getParameter("cmd");
1777 17 Jan 06 nicklas 76 final String root = request.getContextPath()+"/";
1777 17 Jan 06 nicklas 77 final String mode = request.getParameter("mode");
1777 17 Jan 06 nicklas 78 final String callback = request.getParameter("callback");
1777 17 Jan 06 nicklas 79 final String itemId = request.getParameter("item_id");
1777 17 Jan 06 nicklas 80 final String listPage = "list_protocol.jsp?ID="+ID
1777 17 Jan 06 nicklas 81   +(mode == null ? "" : "&mode="+mode)
1777 17 Jan 06 nicklas 82   +(callback == null ? "" : "&callback="+callback)
1777 17 Jan 06 nicklas 83   +(itemId == null ? "" : "&item_id="+itemId);
1777 17 Jan 06 nicklas 84 final String viewPage = "view_protocol.jsp?ID="+ID;
1777 17 Jan 06 nicklas 85 final String editPage = "edit_protocol.jsp?ID="+ID;
706 01 Jun 05 nicklas 86
1777 17 Jan 06 nicklas 87 String forward = null;
1777 17 Jan 06 nicklas 88 String redirect = null;
1777 17 Jan 06 nicklas 89 String message = null;
1777 17 Jan 06 nicklas 90 DbControl dc = null;
1777 17 Jan 06 nicklas 91
706 01 Jun 05 nicklas 92 try
706 01 Jun 05 nicklas 93 {
1777 17 Jan 06 nicklas 94   if (cmd == null || "List".equals(cmd))
1777 17 Jan 06 nicklas 95   {
1777 17 Jan 06 nicklas 96     // Display the list page without updatinging the current context
2811 26 Oct 06 nicklas 97     Base.getAndSetCurrentContext(sc, itemType, null, defaultContext, true);
1777 17 Jan 06 nicklas 98     redirect = listPage;
1777 17 Jan 06 nicklas 99   }
1777 17 Jan 06 nicklas 100   else if ("UpdateContext".equals(cmd))
1777 17 Jan 06 nicklas 101   {
1777 17 Jan 06 nicklas 102     // Display the list page after updating the current context from the request parameters
1777 17 Jan 06 nicklas 103     Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 104     redirect = listPage;
1777 17 Jan 06 nicklas 105   }
1777 17 Jan 06 nicklas 106   else if ("LoadContext".equals(cmd))
1777 17 Jan 06 nicklas 107   {
1777 17 Jan 06 nicklas 108     // Display the list page after loading a saved context
1777 17 Jan 06 nicklas 109     int contextId = Values.getInt(request.getParameter("context"));
1777 17 Jan 06 nicklas 110     Base.loadContext(sc, contextId, defaultContext);
1777 17 Jan 06 nicklas 111     redirect = listPage;
1777 17 Jan 06 nicklas 112   }
1777 17 Jan 06 nicklas 113
1777 17 Jan 06 nicklas 114   else if ("ViewItem".equals(cmd))
1777 17 Jan 06 nicklas 115   {
1777 17 Jan 06 nicklas 116     // Display the view page for a single item 
1777 17 Jan 06 nicklas 117     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 118     forward = viewPage;
1777 17 Jan 06 nicklas 119   }
1777 17 Jan 06 nicklas 120   else if ("EditItem".equals(cmd))
1777 17 Jan 06 nicklas 121   {
1777 17 Jan 06 nicklas 122     // Display the edit page for a single item (should be opened in a popup)
1777 17 Jan 06 nicklas 123     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 124     redirect = editPage;
1777 17 Jan 06 nicklas 125   }
1777 17 Jan 06 nicklas 126   else if ("NewItem".equals(cmd))
1777 17 Jan 06 nicklas 127   {
1777 17 Jan 06 nicklas 128     // Display the edit page for a new item (should be opened in a popup)
1777 17 Jan 06 nicklas 129     if (!sc.hasPermission(Permission.CREATE, itemType))
706 01 Jun 05 nicklas 130     {
1777 17 Jan 06 nicklas 131       throw new PermissionDeniedException(Permission.CREATE, itemType.toString());
706 01 Jun 05 nicklas 132     }
1777 17 Jan 06 nicklas 133     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 134     cc.setId(0);
2441 28 Jun 06 nicklas 135     forward = editPage;
1777 17 Jan 06 nicklas 136   }
1777 17 Jan 06 nicklas 137   else if ("UpdateItem".equals(cmd))
1777 17 Jan 06 nicklas 138   {
1777 17 Jan 06 nicklas 139     // Update the properties on an item (will close the popup)
1777 17 Jan 06 nicklas 140     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, defaultContext);
2598 28 Aug 06 nicklas 141     final int maxRecent = Base.getMaxRecent(sc);
7954 12 May 21 nicklas 142     dc = sc.newDbControl(":Edit "+itemType);
7605 26 Feb 19 nicklas 143     Protocol protocol = cc.getObject("item");
1777 17 Jan 06 nicklas 144     if (protocol == null)
706 01 Jun 05 nicklas 145     {
5630 13 May 11 nicklas 146       protocol = Protocol.getNew(dc);
1777 17 Jan 06 nicklas 147       message = "Protocol created";
1777 17 Jan 06 nicklas 148       dc.saveItem(protocol);
706 01 Jun 05 nicklas 149     }
1777 17 Jan 06 nicklas 150     else
706 01 Jun 05 nicklas 151     {
5060 19 Aug 09 nicklas 152       dc.reattachItem(protocol, false);
1777 17 Jan 06 nicklas 153       message = "Protocol updated";
706 01 Jun 05 nicklas 154     }
5506 19 Nov 10 nicklas 155     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(Item.PROTOCOL), protocol);
7604 25 Feb 19 nicklas 156     ExtensionsInvoker<OnSaveAction> invoker = EditUtil.useOnSaveExtensions(jspContext);
5506 19 Nov 10 nicklas 157     try
706 01 Jun 05 nicklas 158     {
5506 19 Nov 10 nicklas 159       protocol.setName(Values.getStringOrNull(request.getParameter("name")));
5506 19 Nov 10 nicklas 160       protocol.setDescription(Values.getStringOrNull(request.getParameter("description")));
5506 19 Nov 10 nicklas 161       protocol.setExternalId(Values.getStringOrNull(request.getParameter("external_id")));
5643 26 May 11 nicklas 162       int subtypeId = Values.getInt(request.getParameter("subtype_id"), -1);
5643 26 May 11 nicklas 163       if (subtypeId >= 0) // < 0 = denied or unchanged
5506 19 Nov 10 nicklas 164       {
5643 26 May 11 nicklas 165         ItemSubtype subtype = subtypeId == 0 ? null : ItemSubtype.getById(dc, subtypeId);
5643 26 May 11 nicklas 166         protocol.setItemSubtype(subtype);
7703 11 Apr 19 nicklas 167         cc.setRecent(Item.ITEMSUBTYPE, subtype, maxRecent);
5506 19 Nov 10 nicklas 168       }
5506 19 Nov 10 nicklas 169       int fileId = Values.getInt(request.getParameter("file_id"), -1);
5506 19 Nov 10 nicklas 170       if (fileId >= 0) // < 0 = denied or unchanged
5506 19 Nov 10 nicklas 171       {
5506 19 Nov 10 nicklas 172         File f = fileId == 0 ? null : File.getById(dc, fileId);
5506 19 Nov 10 nicklas 173         protocol.setFile(f);
7703 11 Apr 19 nicklas 174         cc.setRecent(Item.FILE, f, maxRecent);
5506 19 Nov 10 nicklas 175       }
5506 19 Nov 10 nicklas 176   
5506 19 Nov 10 nicklas 177       // Protocol parameters
6305 09 Aug 13 nicklas 178       String[] removeAnnotationTypes = Values.getString(request.getParameter("-ANNOTATIONTYPE")).split(",");
5506 19 Nov 10 nicklas 179       for (int i = 0; i < removeAnnotationTypes.length; ++i)
5506 19 Nov 10 nicklas 180       {
5506 19 Nov 10 nicklas 181         int annotationTypeId = Values.getInt(removeAnnotationTypes[i], -1);
5506 19 Nov 10 nicklas 182         if (annotationTypeId != -1) protocol.removeParameter(AnnotationType.getById(dc, annotationTypeId));
5506 19 Nov 10 nicklas 183       }
6305 09 Aug 13 nicklas 184       String[] addAnnotationTypes = Values.getString(request.getParameter("+ANNOTATIONTYPE")).split(",");
5506 19 Nov 10 nicklas 185       for (int i = 0; i < addAnnotationTypes.length; ++i)
5506 19 Nov 10 nicklas 186       {
5506 19 Nov 10 nicklas 187         int annotationTypeId = Values.getInt(addAnnotationTypes[i], -1);
5506 19 Nov 10 nicklas 188         if (annotationTypeId != -1) protocol.addParameter(AnnotationType.getById(dc, annotationTypeId));
5506 19 Nov 10 nicklas 189       }
5506 19 Nov 10 nicklas 190       
6058 13 Jun 12 nicklas 191       // Project default
6058 13 Jun 12 nicklas 192       if (Values.getBoolean(request.getParameter("setAsProjectDefault")))
6058 13 Jun 12 nicklas 193       {
6058 13 Jun 12 nicklas 194         Project p = Project.getById(dc, sc.getActiveProjectId());
6058 13 Jun 12 nicklas 195         if (Values.getBoolean(request.getParameter("replaceExistingDefault")))
6058 13 Jun 12 nicklas 196         {
6058 13 Jun 12 nicklas 197           p.replaceDefaultItem(protocol);
6058 13 Jun 12 nicklas 198         }
6058 13 Jun 12 nicklas 199         else
6058 13 Jun 12 nicklas 200         {
6058 13 Jun 12 nicklas 201           p.addDefaultItem(protocol);
6058 13 Jun 12 nicklas 202         }
6058 13 Jun 12 nicklas 203       }
6058 13 Jun 12 nicklas 204
6058 13 Jun 12 nicklas 205       
5506 19 Nov 10 nicklas 206       // Annotations tab
5506 19 Nov 10 nicklas 207       Base.updateAnnotations(dc, protocol, protocol, request);
5506 19 Nov 10 nicklas 208       // OnSave extensions
5506 19 Nov 10 nicklas 209       invoker.render(OnSaveRenderer.ON_SAVE);
5506 19 Nov 10 nicklas 210       dc.commit();
5506 19 Nov 10 nicklas 211       invoker.render(OnSaveRenderer.ON_COMMIT);
706 01 Jun 05 nicklas 212     }
5506 19 Nov 10 nicklas 213     catch (Exception ex)
706 01 Jun 05 nicklas 214     {
5506 19 Nov 10 nicklas 215       invoker.render(OnSaveRenderer.onRollback(ex));
5506 19 Nov 10 nicklas 216       throw ex;
706 01 Jun 05 nicklas 217     }
5506 19 Nov 10 nicklas 218     finally
2875 08 Nov 06 nicklas 219     {
5506 19 Nov 10 nicklas 220       cc.removeObject("item");
2875 08 Nov 06 nicklas 221     }
5506 19 Nov 10 nicklas 222
1777 17 Jan 06 nicklas 223   }
1777 17 Jan 06 nicklas 224   else if ("DeleteItem".equals(cmd))
1777 17 Jan 06 nicklas 225   {
1777 17 Jan 06 nicklas 226     // Delete a single item and then return to the view page
7954 12 May 21 nicklas 227     dc = sc.newDbControl(":Delete "+itemType);
1777 17 Jan 06 nicklas 228     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 229     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), true);
1777 17 Jan 06 nicklas 230     dc.commit();
1777 17 Jan 06 nicklas 231     redirect = viewPage;
1777 17 Jan 06 nicklas 232   }
1777 17 Jan 06 nicklas 233   else if ("DeleteItems".equals(cmd))
1777 17 Jan 06 nicklas 234   {
1777 17 Jan 06 nicklas 235     // Delete all selected items on the list page
7954 12 May 21 nicklas 236     dc = sc.newDbControl(":Delete "+itemType);
1777 17 Jan 06 nicklas 237     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 238     int numTotal = cc.getSelected().size();
1777 17 Jan 06 nicklas 239     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), true);
1777 17 Jan 06 nicklas 240     dc.commit();
1777 17 Jan 06 nicklas 241     if (numTotal != numRemoved)
706 01 Jun 05 nicklas 242     {
1777 17 Jan 06 nicklas 243       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be deleted, because you have no DELETE permission";
706 01 Jun 05 nicklas 244     }
6192 31 Oct 12 nicklas 245     redirect = listPage;
1777 17 Jan 06 nicklas 246   }
1777 17 Jan 06 nicklas 247   else if ("RestoreItem".equals(cmd))
1777 17 Jan 06 nicklas 248   {
1777 17 Jan 06 nicklas 249     // Restore a single item and then return to the view page
7954 12 May 21 nicklas 250     dc = sc.newDbControl(":Restore "+itemType);
1777 17 Jan 06 nicklas 251     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 252     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), false);
1777 17 Jan 06 nicklas 253     dc.commit();
1777 17 Jan 06 nicklas 254     redirect = viewPage;
1777 17 Jan 06 nicklas 255   }
1777 17 Jan 06 nicklas 256   else if ("RestoreItems".equals(cmd))
1777 17 Jan 06 nicklas 257   {
1777 17 Jan 06 nicklas 258     // Restore all selected items on the list page
7954 12 May 21 nicklas 259     dc = sc.newDbControl(":Restore "+itemType);
1777 17 Jan 06 nicklas 260     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 261     int numTotal = cc.getSelected().size();
1777 17 Jan 06 nicklas 262     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), false);
1777 17 Jan 06 nicklas 263     dc.commit();
1777 17 Jan 06 nicklas 264     if (numTotal != numRemoved)
706 01 Jun 05 nicklas 265     {
2528 15 Aug 06 martin 266       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be restored, because you have no WRITE permission";
706 01 Jun 05 nicklas 267     }
6192 31 Oct 12 nicklas 268     redirect = listPage;
1777 17 Jan 06 nicklas 269   }
1777 17 Jan 06 nicklas 270   else if ("ShareItem".equals(cmd))
1777 17 Jan 06 nicklas 271   {
1777 17 Jan 06 nicklas 272     // Display a popup window for sharing a single item
7954 12 May 21 nicklas 273     dc = sc.newDbControl(":Share "+itemType);
1777 17 Jan 06 nicklas 274     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 275     MultiPermissions permissions = ShareableUtil.getMultiPermissions(dc, itemType, Collections.singleton(cc.getId()));
1777 17 Jan 06 nicklas 276     dc.close();
1777 17 Jan 06 nicklas 277     cc.setObject("MultiPermissions", permissions);
1777 17 Jan 06 nicklas 278     redirect = "../../common/share/share.jsp?ID="+ID+"&item_type="+itemType.name();
1777 17 Jan 06 nicklas 279   }
1777 17 Jan 06 nicklas 280   else if ("ShareItems".equals(cmd))
1777 17 Jan 06 nicklas 281   {
1777 17 Jan 06 nicklas 282     // Display a popup window for sharing all selected items on the list page
7954 12 May 21 nicklas 283     dc = sc.newDbControl(":Share "+itemType);
1777 17 Jan 06 nicklas 284     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 285     MultiPermissions permissions = ShareableUtil.getMultiPermissions(dc, itemType, cc.getSelected());
1777 17 Jan 06 nicklas 286     dc.close();
1777 17 Jan 06 nicklas 287     cc.setObject("MultiPermissions", permissions);
1777 17 Jan 06 nicklas 288     redirect = "../../common/share/share.jsp?ID="+ID+"&item_type="+itemType.name();
1777 17 Jan 06 nicklas 289   }
4578 13 Oct 08 martin 290   else if ("SetOwnerOfItem".equals(cmd))
2921 15 Nov 06 nicklas 291   {
4578 13 Oct 08 martin 292     // Change owner of items selected on a list page
7954 12 May 21 nicklas 293     dc = sc.newDbControl(":Set owner of "+itemType);
2921 15 Nov 06 nicklas 294     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
4587 15 Oct 08 martin 295     OwnedItem item = (OwnedItem)itemType.getById(dc, cc.getId());
4587 15 Oct 08 martin 296     cc.setObject("OwnedItems", Collections.singleton(item));
4578 13 Oct 08 martin 297     redirect = "../../common/ownership/ownership.jsp?ID="+ID+"&item_type="+itemType.name();
2921 15 Nov 06 nicklas 298   }
4578 13 Oct 08 martin 299   else if ("SetOwnerOfItems".equals(cmd))
2921 15 Nov 06 nicklas 300   {
4578 13 Oct 08 martin 301     // Change owner of items selected on a list page
7954 12 May 21 nicklas 302     dc = sc.newDbControl(":Set owner of "+itemType);
2921 15 Nov 06 nicklas 303     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
4587 15 Oct 08 martin 304     Set<OwnedItem> items = new HashSet<OwnedItem>();
4587 15 Oct 08 martin 305     for (Integer id : cc.getSelected())
4587 15 Oct 08 martin 306     {
4587 15 Oct 08 martin 307       if (id != null) items.add((OwnedItem)itemType.getById(dc, id));
4587 15 Oct 08 martin 308     }
4587 15 Oct 08 martin 309     dc.close();
4587 15 Oct 08 martin 310     cc.setObject("OwnedItems", items);
4578 13 Oct 08 martin 311     redirect = "../../common/ownership/ownership.jsp?ID="+ID+"&item_type="+itemType.name();
2921 15 Nov 06 nicklas 312   }
1777 17 Jan 06 nicklas 313   else if ("ExportItems".equals(cmd))
1777 17 Jan 06 nicklas 314   {
1777 17 Jan 06 nicklas 315     // Run an export plugin in a list context
1777 17 Jan 06 nicklas 316     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 317     final ItemQuery<Protocol> query = Protocol.getQuery();
7954 12 May 21 nicklas 318     dc = sc.newDbControl(":Export "+itemType);
7914 23 Feb 21 nicklas 319     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 320     cc.configureQuery(dc, query, jspContext, true);
6045 03 Apr 12 nicklas 321     cc.setQuery(query);
7604 25 Feb 19 nicklas 322     ExtensionsInvoker<ListColumnAction<Protocol,?>> listInvoker = ListColumnUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 323     listInvoker.render(new ListColumnExportRenderer<Protocol>(cc));
5590 16 Mar 11 nicklas 324     dc.close();
6305 09 Aug 13 nicklas 325     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Export+protocols";
1777 17 Jan 06 nicklas 326   }
1777 17 Jan 06 nicklas 327   else if ("ExportItem".equals(cmd))
1777 17 Jan 06 nicklas 328   {
1777 17 Jan 06 nicklas 329     // Run an export plugin in single-item context
1777 17 Jan 06 nicklas 330     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6305 09 Aug 13 nicklas 331     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Export+protocol";
1777 17 Jan 06 nicklas 332   }
1777 17 Jan 06 nicklas 333   else if ("ImportItems".equals(cmd))
1777 17 Jan 06 nicklas 334   {
1777 17 Jan 06 nicklas 335     // Run an import plugin in a list context
1777 17 Jan 06 nicklas 336     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 337     final ItemQuery<Protocol> query = Protocol.getQuery();
7954 12 May 21 nicklas 338     dc = sc.newDbControl(":Import "+itemType);
7914 23 Feb 21 nicklas 339     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 340     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 341     dc.close();
1777 17 Jan 06 nicklas 342     cc.setQuery(query);
6305 09 Aug 13 nicklas 343     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Import+protocols";
1777 17 Jan 06 nicklas 344   }
1777 17 Jan 06 nicklas 345   else if ("ImportItem".equals(cmd))
1777 17 Jan 06 nicklas 346   {
1777 17 Jan 06 nicklas 347     // Run an import plugin in single-item context
1777 17 Jan 06 nicklas 348     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6305 09 Aug 13 nicklas 349     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Import+protocol";
1777 17 Jan 06 nicklas 350   }
1777 17 Jan 06 nicklas 351   else if ("RunListPlugin".equals(cmd))
1777 17 Jan 06 nicklas 352   {
1777 17 Jan 06 nicklas 353     // Run another plugin in a list context
1777 17 Jan 06 nicklas 354     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 355     final ItemQuery<Protocol> query = Protocol.getQuery();
7954 12 May 21 nicklas 356     dc = sc.newDbControl(":Run plugin "+itemType);
7914 23 Feb 21 nicklas 357     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 358     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 359     dc.close();
1777 17 Jan 06 nicklas 360     cc.setQuery(query);
1789 18 Jan 06 nicklas 361     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&main_type=OTHER&title=Run+plugin";
1777 17 Jan 06 nicklas 362   }
1777 17 Jan 06 nicklas 363   else if ("RunPlugin".equals(cmd))
1777 17 Jan 06 nicklas 364   {
1777 17 Jan 06 nicklas 365     // Run another plugin in single-item context
1777 17 Jan 06 nicklas 366     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1789 18 Jan 06 nicklas 367     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&main_type=OTHER&title=Run+plugin";
1777 17 Jan 06 nicklas 368   }
1777 17 Jan 06 nicklas 369   else
1777 17 Jan 06 nicklas 370   {
1777 17 Jan 06 nicklas 371     throw new WebException("popup", "Invalid command", "The command {1} is not recognised as a valid command.", cmd);
1777 17 Jan 06 nicklas 372   }
706 01 Jun 05 nicklas 373 }
706 01 Jun 05 nicklas 374 finally
706 01 Jun 05 nicklas 375 {
706 01 Jun 05 nicklas 376   if (dc != null) dc.close();
706 01 Jun 05 nicklas 377 }
1777 17 Jan 06 nicklas 378
1777 17 Jan 06 nicklas 379 if (forward != null)
1777 17 Jan 06 nicklas 380 {
6192 31 Oct 12 nicklas 381   sc.setSessionSetting("alert-message", message);
1777 17 Jan 06 nicklas 382   pageContext.forward(forward);
1777 17 Jan 06 nicklas 383 }
1777 17 Jan 06 nicklas 384 else if (redirect != null)
1777 17 Jan 06 nicklas 385 {
6192 31 Oct 12 nicklas 386   sc.setSessionSetting("alert-message", message);
1777 17 Jan 06 nicklas 387   response.sendRedirect(redirect);
1777 17 Jan 06 nicklas 388 }
1777 17 Jan 06 nicklas 389 else if (message == null)
1777 17 Jan 06 nicklas 390 {
1777 17 Jan 06 nicklas 391   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&wait=0");
1777 17 Jan 06 nicklas 392 }
1777 17 Jan 06 nicklas 393 else
1777 17 Jan 06 nicklas 394 {
1777 17 Jan 06 nicklas 395   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&message="+HTML.urlEncode(message));
1777 17 Jan 06 nicklas 396 }
1777 17 Jan 06 nicklas 397 %>
1777 17 Jan 06 nicklas 398