www/admin/annotationtypecategories/index.jsp

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