www/lims/platetypes/index.jsp

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