www/views/itemlists/syncfilter/index.jsp

Code
Comments
Other
Rev Date Author Line
6770 13 Mar 15 nicklas 1 <%-- $Id: index.jsp 6414 2014-02-05 09:57:05Z nicklas $
6770 13 Mar 15 nicklas 2   ------------------------------------------------------------------
6770 13 Mar 15 nicklas 3   Copyright (C) 2006 Nicklas Nordborg
6770 13 Mar 15 nicklas 4
6770 13 Mar 15 nicklas 5   This file is part of BASE - BioArray Software Environment.
6770 13 Mar 15 nicklas 6   Available at http://base.thep.lu.se/
6770 13 Mar 15 nicklas 7
6770 13 Mar 15 nicklas 8   BASE is free software; you can redistribute it and/or
6770 13 Mar 15 nicklas 9   modify it under the terms of the GNU General Public License
6770 13 Mar 15 nicklas 10   as published by the Free Software Foundation; either version 3
6770 13 Mar 15 nicklas 11   of the License, or (at your option) any later version.
6770 13 Mar 15 nicklas 12
6770 13 Mar 15 nicklas 13   BASE is distributed in the hope that it will be useful,
6770 13 Mar 15 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
6770 13 Mar 15 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6770 13 Mar 15 nicklas 16   GNU General Public License for more details.
6770 13 Mar 15 nicklas 17
6770 13 Mar 15 nicklas 18   You should have received a copy of the GNU General Public License
6770 13 Mar 15 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
6770 13 Mar 15 nicklas 20   ------------------------------------------------------------------
6770 13 Mar 15 nicklas 21
6770 13 Mar 15 nicklas 22   @author Nicklas
6770 13 Mar 15 nicklas 23   @version 2.0
6770 13 Mar 15 nicklas 24 --%>
6770 13 Mar 15 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
6770 13 Mar 15 nicklas 26   import="net.sf.basedb.core.SessionControl"
6770 13 Mar 15 nicklas 27   import="net.sf.basedb.core.DbControl"
6770 13 Mar 15 nicklas 28   import="net.sf.basedb.core.Item"
6770 13 Mar 15 nicklas 29   import="net.sf.basedb.core.Include"
6770 13 Mar 15 nicklas 30   import="net.sf.basedb.core.BasicItem"
6770 13 Mar 15 nicklas 31   import="net.sf.basedb.core.ItemList"
6770 13 Mar 15 nicklas 32   import="net.sf.basedb.core.SyncFilter"
6770 13 Mar 15 nicklas 33   import="net.sf.basedb.core.Permission"
6770 13 Mar 15 nicklas 34   import="net.sf.basedb.core.ItemContext"
6770 13 Mar 15 nicklas 35   import="net.sf.basedb.core.MultiPermissions"
6770 13 Mar 15 nicklas 36   import="net.sf.basedb.core.PermissionDeniedException"
6770 13 Mar 15 nicklas 37   import="net.sf.basedb.core.ItemAlreadyExistsException"
6770 13 Mar 15 nicklas 38   import="net.sf.basedb.core.plugin.GuiContext"
6770 13 Mar 15 nicklas 39   import="net.sf.basedb.util.Values"
6770 13 Mar 15 nicklas 40   import="net.sf.basedb.util.RemovableUtil"
6770 13 Mar 15 nicklas 41   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
6770 13 Mar 15 nicklas 42   import="net.sf.basedb.clients.web.Base"
6770 13 Mar 15 nicklas 43   import="net.sf.basedb.clients.web.WebException"
6770 13 Mar 15 nicklas 44   import="net.sf.basedb.clients.web.util.HTML"
6770 13 Mar 15 nicklas 45   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
6770 13 Mar 15 nicklas 46   import="net.sf.basedb.clients.web.extensions.JspContext"
6770 13 Mar 15 nicklas 47   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 48   import="net.sf.basedb.clients.web.extensions.edit.OnSaveAction"
6770 13 Mar 15 nicklas 49   import="net.sf.basedb.clients.web.extensions.edit.OnSaveRenderer"
6770 13 Mar 15 nicklas 50   import="java.util.Enumeration"
6770 13 Mar 15 nicklas 51   import="java.util.Set"
6770 13 Mar 15 nicklas 52   import="java.util.HashSet"
6770 13 Mar 15 nicklas 53   import="java.util.List"
6770 13 Mar 15 nicklas 54   import="java.util.ArrayList"
6770 13 Mar 15 nicklas 55   import="java.util.Collections"
6770 13 Mar 15 nicklas 56 %>
6770 13 Mar 15 nicklas 57 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
6770 13 Mar 15 nicklas 58 <%!
6770 13 Mar 15 nicklas 59   private static final ItemContext defaultContext = Base.createDefaultContext("name", "name,description");
6770 13 Mar 15 nicklas 60   private static final Item itemType = Item.SYNCFILTER;
6770 13 Mar 15 nicklas 61 %>
6770 13 Mar 15 nicklas 62 <%
6770 13 Mar 15 nicklas 63 final int listId = Values.getInt(request.getParameter("list_id"));
6770 13 Mar 15 nicklas 64
6770 13 Mar 15 nicklas 65 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
6770 13 Mar 15 nicklas 66 final String ID = sc.getId();
6770 13 Mar 15 nicklas 67 final String cmd = request.getParameter("cmd");
6770 13 Mar 15 nicklas 68 final String root = request.getContextPath()+"/";
6770 13 Mar 15 nicklas 69 final String mode = request.getParameter("mode");
6770 13 Mar 15 nicklas 70 final String callback = request.getParameter("callback");
6770 13 Mar 15 nicklas 71 final String itemId = request.getParameter("item_id");
6770 13 Mar 15 nicklas 72 final String editPage = "edit_syncfilter.jsp?ID="+ID+"&list_id="+listId;
6770 13 Mar 15 nicklas 73
6770 13 Mar 15 nicklas 74 String forward = null;
6770 13 Mar 15 nicklas 75 String redirect = null;
6770 13 Mar 15 nicklas 76 String message = null;
6770 13 Mar 15 nicklas 77 DbControl dc = null;
6770 13 Mar 15 nicklas 78
6770 13 Mar 15 nicklas 79 try
6770 13 Mar 15 nicklas 80 {
6770 13 Mar 15 nicklas 81   if ("ViewItem".equals(cmd))
6770 13 Mar 15 nicklas 82   {
6770 13 Mar 15 nicklas 83     // Display the view page for a single item 
6770 13 Mar 15 nicklas 84     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6770 13 Mar 15 nicklas 85     forward = editPage;
6770 13 Mar 15 nicklas 86   }
6770 13 Mar 15 nicklas 87   else if ("EditItem".equals(cmd))
6770 13 Mar 15 nicklas 88   {
6770 13 Mar 15 nicklas 89     // Display the edit page for a single item (should be opened in a popup)
6770 13 Mar 15 nicklas 90     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6770 13 Mar 15 nicklas 91     redirect = editPage;
6770 13 Mar 15 nicklas 92   }
6770 13 Mar 15 nicklas 93   else if ("NewItem".equals(cmd))
6770 13 Mar 15 nicklas 94   {
6770 13 Mar 15 nicklas 95     // Display the edit page for a new item (should be opened in a popup)
6770 13 Mar 15 nicklas 96     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6770 13 Mar 15 nicklas 97     cc.setId(0);
6770 13 Mar 15 nicklas 98     forward = editPage;
6770 13 Mar 15 nicklas 99   }
6770 13 Mar 15 nicklas 100   else if ("UpdateItem".equals(cmd))
6770 13 Mar 15 nicklas 101   {
6770 13 Mar 15 nicklas 102     // Update the properties on an item (will close the popup)
6770 13 Mar 15 nicklas 103     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, defaultContext);
6770 13 Mar 15 nicklas 104     final int maxRecent = Base.getMaxRecent(sc);
7954 12 May 21 nicklas 105     dc = sc.newDbControl(":Edit "+itemType);
6770 13 Mar 15 nicklas 106     
7605 26 Feb 19 nicklas 107     SyncFilter syncFilter = cc.getObject("item");
6770 13 Mar 15 nicklas 108     if (syncFilter.isInDatabase())
6770 13 Mar 15 nicklas 109     {
6770 13 Mar 15 nicklas 110       dc.reattachItem(syncFilter, true);
6770 13 Mar 15 nicklas 111       message = "Synchronization filter updated";
6770 13 Mar 15 nicklas 112     }
6770 13 Mar 15 nicklas 113     else
6770 13 Mar 15 nicklas 114     {
6770 13 Mar 15 nicklas 115       dc.saveItem(syncFilter);
6770 13 Mar 15 nicklas 116       message = "Synchronization filter created";
6770 13 Mar 15 nicklas 117     }
6770 13 Mar 15 nicklas 118     
6770 13 Mar 15 nicklas 119     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(Item.SYNCFILTER), syncFilter);
7604 25 Feb 19 nicklas 120     ExtensionsInvoker<OnSaveAction> invoker = EditUtil.useOnSaveExtensions(jspContext);
6770 13 Mar 15 nicklas 121     try
6770 13 Mar 15 nicklas 122     {
6770 13 Mar 15 nicklas 123       syncFilter.setName(Values.getStringOrNull(request.getParameter("name")));
7881 01 Dec 20 nicklas 124       syncFilter.setFilterGroup(Values.getStringOrNull(request.getParameter("filterGroup")));
6770 13 Mar 15 nicklas 125       syncFilter.setDescription(Values.getStringOrNull(request.getParameter("description")));
6787 19 Mar 15 nicklas 126       syncFilter.setSourceItemMustExist(Values.getBoolean(request.getParameter("sourceMustExist"), true));
6794 24 Mar 15 nicklas 127       syncFilter.setDisabled(Values.getBoolean(request.getParameter("disabled")));
6770 13 Mar 15 nicklas 128       
6770 13 Mar 15 nicklas 129       // OnSave extensions
6770 13 Mar 15 nicklas 130       invoker.render(OnSaveRenderer.ON_SAVE);
6770 13 Mar 15 nicklas 131       dc.commit();
6770 13 Mar 15 nicklas 132       invoker.render(OnSaveRenderer.ON_COMMIT);
6770 13 Mar 15 nicklas 133     }
6770 13 Mar 15 nicklas 134     catch (Exception ex)
6770 13 Mar 15 nicklas 135     {
6770 13 Mar 15 nicklas 136       invoker.render(OnSaveRenderer.onRollback(ex));
6770 13 Mar 15 nicklas 137       throw ex;
6770 13 Mar 15 nicklas 138     }
6770 13 Mar 15 nicklas 139     finally
6770 13 Mar 15 nicklas 140     {
6770 13 Mar 15 nicklas 141       cc.removeObject("item");
6770 13 Mar 15 nicklas 142     }
6770 13 Mar 15 nicklas 143   }
6770 13 Mar 15 nicklas 144   else if ("DeleteItems".equals(cmd))
6770 13 Mar 15 nicklas 145   {
6770 13 Mar 15 nicklas 146     // Delete all selected items on the list page
7954 12 May 21 nicklas 147     dc = sc.newDbControl(":Delete "+itemType);
6770 13 Mar 15 nicklas 148     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6770 13 Mar 15 nicklas 149     int numTotal = cc.getSelected().size();
6770 13 Mar 15 nicklas 150     int numDeleted = RemovableUtil.delete(dc, itemType, cc.getSelected());
6770 13 Mar 15 nicklas 151     dc.commit();
6770 13 Mar 15 nicklas 152     if (numTotal != numDeleted)
6770 13 Mar 15 nicklas 153     {
6770 13 Mar 15 nicklas 154       message = (numDeleted == 0 ? "No" : "Only "+numDeleted+" of "+numTotal) + " items could be deleted, because you have no DELETE permission";
6770 13 Mar 15 nicklas 155     }
6770 13 Mar 15 nicklas 156   }
6794 24 Mar 15 nicklas 157   else if ("EnableFilters".equals(cmd) || "DisableFilters".equals(cmd))
6794 24 Mar 15 nicklas 158   {
6794 24 Mar 15 nicklas 159     // Delete all selected items on the list page
7954 12 May 21 nicklas 160     boolean disable = "DisableFilters".equals(cmd);
7954 12 May 21 nicklas 161     dc = sc.newDbControl(": "+(disable?"Disable":"Enable")+" sync filters");
6794 24 Mar 15 nicklas 162     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
6794 24 Mar 15 nicklas 163     int numModified = 0;
6794 24 Mar 15 nicklas 164     for (int id : cc.getSelected())
6794 24 Mar 15 nicklas 165     {
6794 24 Mar 15 nicklas 166       SyncFilter sf = SyncFilter.getById(dc, id);
6794 24 Mar 15 nicklas 167       if (sf.isDisabled() != disable)
6794 24 Mar 15 nicklas 168       {
6794 24 Mar 15 nicklas 169         sf.setDisabled(disable);
6794 24 Mar 15 nicklas 170         numModified++;
6794 24 Mar 15 nicklas 171       }
6794 24 Mar 15 nicklas 172     }
6794 24 Mar 15 nicklas 173     
6794 24 Mar 15 nicklas 174     dc.commit();
6794 24 Mar 15 nicklas 175     message = numModified + " filter(s) has been " + (disable ? "disabled" : "enabled");
6794 24 Mar 15 nicklas 176   }
6770 13 Mar 15 nicklas 177   else
6770 13 Mar 15 nicklas 178   {
6770 13 Mar 15 nicklas 179     throw new WebException("popup", "Invalid command", "The command {1} is not recognised as a valid command.", cmd);
6770 13 Mar 15 nicklas 180   }
6770 13 Mar 15 nicklas 181 }
6770 13 Mar 15 nicklas 182 finally
6770 13 Mar 15 nicklas 183 {
6770 13 Mar 15 nicklas 184   if (dc != null) dc.close();
6770 13 Mar 15 nicklas 185 }
6770 13 Mar 15 nicklas 186
6770 13 Mar 15 nicklas 187 if (forward != null)
6770 13 Mar 15 nicklas 188 {
6770 13 Mar 15 nicklas 189   sc.setSessionSetting("alert-message", message);
6770 13 Mar 15 nicklas 190   pageContext.forward(forward);
6770 13 Mar 15 nicklas 191 }
6770 13 Mar 15 nicklas 192 else if (redirect != null)
6770 13 Mar 15 nicklas 193 {
6770 13 Mar 15 nicklas 194   sc.setSessionSetting("alert-message", message);
6770 13 Mar 15 nicklas 195   response.sendRedirect(redirect);
6770 13 Mar 15 nicklas 196 }
6770 13 Mar 15 nicklas 197 else if (message == null)
6770 13 Mar 15 nicklas 198 {
6770 13 Mar 15 nicklas 199   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&wait=0");
6770 13 Mar 15 nicklas 200 }
6770 13 Mar 15 nicklas 201 else
6770 13 Mar 15 nicklas 202 {
6770 13 Mar 15 nicklas 203   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&message="+HTML.urlEncode(message));
6770 13 Mar 15 nicklas 204 }
6770 13 Mar 15 nicklas 205 %>
6770 13 Mar 15 nicklas 206