www/admin/quota/view_quota.jsp

Code
Comments
Other
Rev Date Author Line
2015 17 Feb 06 nicklas 1 <%-- $Id$
2015 17 Feb 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
2015 17 Feb 06 nicklas 4
2304 22 May 06 jari 5   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 6   Available at http://base.thep.lu.se/
2015 17 Feb 06 nicklas 7
2015 17 Feb 06 nicklas 8   BASE is free software; you can redistribute it and/or
2015 17 Feb 06 nicklas 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
2015 17 Feb 06 nicklas 11   of the License, or (at your option) any later version.
2015 17 Feb 06 nicklas 12
2015 17 Feb 06 nicklas 13   BASE is distributed in the hope that it will be useful,
2015 17 Feb 06 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
2015 17 Feb 06 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2015 17 Feb 06 nicklas 16   GNU General Public License for more details.
2015 17 Feb 06 nicklas 17
2015 17 Feb 06 nicklas 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/>.
2015 17 Feb 06 nicklas 20   ------------------------------------------------------------------
2015 17 Feb 06 nicklas 21
2015 17 Feb 06 nicklas 22   @author Nicklas
2015 17 Feb 06 nicklas 23   @version 2.0
2015 17 Feb 06 nicklas 24 --%>
5426 24 Sep 10 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
2015 17 Feb 06 nicklas 26   import="net.sf.basedb.core.SessionControl"
2015 17 Feb 06 nicklas 27   import="net.sf.basedb.core.DbControl"
2015 17 Feb 06 nicklas 28   import="net.sf.basedb.core.SystemItems"
2015 17 Feb 06 nicklas 29   import="net.sf.basedb.core.Item"
2015 17 Feb 06 nicklas 30   import="net.sf.basedb.core.ItemContext"
2015 17 Feb 06 nicklas 31   import="net.sf.basedb.core.Permission"
2015 17 Feb 06 nicklas 32   import="net.sf.basedb.core.Quota"
2015 17 Feb 06 nicklas 33   import="net.sf.basedb.core.QuotaType"
2015 17 Feb 06 nicklas 34   import="net.sf.basedb.core.Location"
2015 17 Feb 06 nicklas 35   import="net.sf.basedb.core.ItemQuery"
2015 17 Feb 06 nicklas 36   import="net.sf.basedb.core.ItemResultList"
2015 17 Feb 06 nicklas 37   import="net.sf.basedb.core.PermissionDeniedException"
2015 17 Feb 06 nicklas 38   import="net.sf.basedb.core.PluginDefinition"
2015 17 Feb 06 nicklas 39   import="net.sf.basedb.core.plugin.GuiContext"
2015 17 Feb 06 nicklas 40   import="net.sf.basedb.core.plugin.Plugin"
2015 17 Feb 06 nicklas 41   import="net.sf.basedb.core.query.Orders"
2015 17 Feb 06 nicklas 42   import="net.sf.basedb.core.query.Hql"
2015 17 Feb 06 nicklas 43   import="net.sf.basedb.core.query.Restrictions"
2015 17 Feb 06 nicklas 44   import="net.sf.basedb.clients.web.Base"
2386 15 Jun 06 martin 45   import="net.sf.basedb.clients.web.PermissionUtil"
2015 17 Feb 06 nicklas 46   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 47   import="net.sf.basedb.util.Values"
4886 03 Apr 09 nicklas 48   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4886 03 Apr 09 nicklas 49   import="net.sf.basedb.clients.web.extensions.JspContext"
4886 03 Apr 09 nicklas 50   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 51   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4886 03 Apr 09 nicklas 52   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
4886 03 Apr 09 nicklas 53   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
2015 17 Feb 06 nicklas 54   import="java.util.Map"
2015 17 Feb 06 nicklas 55 %>
2015 17 Feb 06 nicklas 56 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2015 17 Feb 06 nicklas 57 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
2015 17 Feb 06 nicklas 58 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2015 17 Feb 06 nicklas 59 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4886 03 Apr 09 nicklas 60 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2015 17 Feb 06 nicklas 61 <%!
2015 17 Feb 06 nicklas 62   private static final Item itemType = Item.QUOTA;
2015 17 Feb 06 nicklas 63   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
2015 17 Feb 06 nicklas 64
2015 17 Feb 06 nicklas 65   private String displayQuota(Quota quota, QuotaType type, Location location)
2015 17 Feb 06 nicklas 66   {
2015 17 Feb 06 nicklas 67     long bytes = quota.getQuotaValue(type, location);
2015 17 Feb 06 nicklas 68     String fBytes = "";
2015 17 Feb 06 nicklas 69     if (bytes == Quota.UNLIMITED)
2015 17 Feb 06 nicklas 70     {
2015 17 Feb 06 nicklas 71       fBytes = "<i>- unlimited -</i>";
2015 17 Feb 06 nicklas 72     }
2015 17 Feb 06 nicklas 73     else if (bytes >= 0)
2015 17 Feb 06 nicklas 74     {
2015 17 Feb 06 nicklas 75       fBytes = Values.formatBytes(bytes);
2015 17 Feb 06 nicklas 76     }
2015 17 Feb 06 nicklas 77     return fBytes;
2015 17 Feb 06 nicklas 78   }
2015 17 Feb 06 nicklas 79 %>
2015 17 Feb 06 nicklas 80 <%
2015 17 Feb 06 nicklas 81 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
2015 17 Feb 06 nicklas 82 final String ID = sc.getId();
2015 17 Feb 06 nicklas 83 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2015 17 Feb 06 nicklas 84 final int itemId = cc.getId();
6262 27 Mar 13 nicklas 85 final String tab = Values.getStringOrNull(request.getParameter("tab"));
2015 17 Feb 06 nicklas 86 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 87 final DbControl dc = sc.newDbControl(":View "+itemType);
2015 17 Feb 06 nicklas 88 try
2015 17 Feb 06 nicklas 89 {
2015 17 Feb 06 nicklas 90   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
2015 17 Feb 06 nicklas 91
2015 17 Feb 06 nicklas 92   String title = null;
2015 17 Feb 06 nicklas 93   Quota quota = Quota.getById(dc, itemId);
2015 17 Feb 06 nicklas 94   
2015 17 Feb 06 nicklas 95   final boolean writePermission = quota.hasPermission(Permission.WRITE);
2015 17 Feb 06 nicklas 96   final boolean deletePermission = quota.hasPermission(Permission.DELETE);
4003 26 Nov 07 nicklas 97   final boolean isRemoved = quota.isRemoved();
4003 26 Nov 07 nicklas 98   final boolean isUsed = isRemoved && quota.isUsed();
4003 26 Nov 07 nicklas 99   final boolean deletePermanentlyPermission = deletePermission && !isUsed;
2015 17 Feb 06 nicklas 100   
2015 17 Feb 06 nicklas 101   final QuotaType total = QuotaType.getById(dc, SystemItems.getId(QuotaType.TOTAL));
2015 17 Feb 06 nicklas 102
2015 17 Feb 06 nicklas 103   // Query to retrieve quota types - except total
2015 17 Feb 06 nicklas 104   final ItemQuery<QuotaType> quotaTypeQuery = QuotaType.getQuery();
2015 17 Feb 06 nicklas 105   quotaTypeQuery.order(Orders.asc(Hql.property("id")));
2015 17 Feb 06 nicklas 106   quotaTypeQuery.restrict(
2015 17 Feb 06 nicklas 107     Restrictions.neq(
2015 17 Feb 06 nicklas 108       Hql.property("id"), 
2015 17 Feb 06 nicklas 109       Hql.entity(total)
2015 17 Feb 06 nicklas 110     )
2015 17 Feb 06 nicklas 111   );
2015 17 Feb 06 nicklas 112   quotaTypeQuery.setCacheResult(true);
4886 03 Apr 09 nicklas 113   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, quota);
7604 25 Feb 19 nicklas 114   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
2015 17 Feb 06 nicklas 115   %>
6262 27 Mar 13 nicklas 116   <base:page title="<%=title%>" id="view-page">
6262 27 Mar 13 nicklas 117   <base:head scripts="tabcontrol-2.js,table.js,~quota.js" styles="toolbar.css,headertabcontrol.css,path.css,table.css">
4886 03 Apr 09 nicklas 118     <ext:scripts context="<%=jspContext%>" />
4886 03 Apr 09 nicklas 119     <ext:stylesheets context="<%=jspContext%>" />
5941 01 Feb 12 nicklas 120     <style>
5941 01 Feb 12 nicklas 121     table.special td, table.special th
5941 01 Feb 12 nicklas 122     {
5941 01 Feb 12 nicklas 123       padding: 2px;
5941 01 Feb 12 nicklas 124       text-align: left;
5941 01 Feb 12 nicklas 125     }
5941 01 Feb 12 nicklas 126     table.special th, table.special td
5941 01 Feb 12 nicklas 127     {
6621 24 Nov 14 nicklas 128       border-right-width: 1px;
6621 24 Nov 14 nicklas 129       border-right-style: dotted;
5941 01 Feb 12 nicklas 130     }
5941 01 Feb 12 nicklas 131     </style>
2015 17 Feb 06 nicklas 132   </base:head>
2015 17 Feb 06 nicklas 133   <base:body>
5941 01 Feb 12 nicklas 134     <p:path><p:pathelement 
5941 01 Feb 12 nicklas 135       title="Quota" href="<%="index.jsp?ID="+ID%>" 
5941 01 Feb 12 nicklas 136       /><p:pathelement title="<%=HTML.encodeTags(quota.getName())%>" 
5941 01 Feb 12 nicklas 137       /></p:path>
6262 27 Mar 13 nicklas 138     <div id="page-data" data-item-id="<%=itemId%>"></div>
2015 17 Feb 06 nicklas 139     
5941 01 Feb 12 nicklas 140     <t:tabcontrol
5941 01 Feb 12 nicklas 141       id="main" 
5941 01 Feb 12 nicklas 142       subclass="content mastertabcontrol" 
6262 27 Mar 13 nicklas 143       active="<%=tab %>">
2015 17 Feb 06 nicklas 144     <t:tab id="properties" title="Properties">
5941 01 Feb 12 nicklas 145       <div>
5941 01 Feb 12 nicklas 146       <table class="fullform bottomborder">
5941 01 Feb 12 nicklas 147       <tr>
5941 01 Feb 12 nicklas 148         <th class="itemstatus">
4003 26 Nov 07 nicklas 149           <base:icon 
6262 27 Mar 13 nicklas 150             id="btnDeletePermanently"
5946 03 Feb 12 nicklas 151             image="deleted.png"
5941 01 Feb 12 nicklas 152             tooltip="This item has been flagged for deletion. Click to delete it now."
5941 01 Feb 12 nicklas 153             enabled="<%=deletePermanentlyPermission %>"
5941 01 Feb 12 nicklas 154             visible="<%=isRemoved%>" 
5941 01 Feb 12 nicklas 155           />
6262 27 Mar 13 nicklas 156           <base:icon 
6262 27 Mar 13 nicklas 157             id="btnUsingItems"
6262 27 Mar 13 nicklas 158             image="used.png" 
5941 01 Feb 12 nicklas 159             tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
5941 01 Feb 12 nicklas 160             visible="<%=isRemoved && isUsed%>" />
5941 01 Feb 12 nicklas 161         </th>
5941 01 Feb 12 nicklas 162         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 163           <tbl:toolbar subclass="bottomborder bg-filled-50">
5941 01 Feb 12 nicklas 164             <tbl:button 
6262 27 Mar 13 nicklas 165               id="btnEdit"
5942 01 Feb 12 nicklas 166               disabled="<%=!writePermission%>" 
5945 02 Feb 12 nicklas 167               image="edit.png" 
5941 01 Feb 12 nicklas 168               title="Edit&hellip;" 
5941 01 Feb 12 nicklas 169               tooltip="<%=writePermission ? "Edit this quota" : "You do not have permission to edit this quota"%>" 
5941 01 Feb 12 nicklas 170             />
5941 01 Feb 12 nicklas 171             <tbl:button 
6262 27 Mar 13 nicklas 172               id="btnDelete"
5942 01 Feb 12 nicklas 173               disabled="<%=!deletePermission%>" 
5946 03 Feb 12 nicklas 174               image="delete.png" 
5941 01 Feb 12 nicklas 175               title="Delete"
5941 01 Feb 12 nicklas 176               visible="<%=!quota.isRemoved()%>"
5941 01 Feb 12 nicklas 177               tooltip="<%=deletePermission ? "Delete this quota" : "You do not have permission to delete this quota"%>" 
5941 01 Feb 12 nicklas 178             />
5941 01 Feb 12 nicklas 179             <tbl:button 
6262 27 Mar 13 nicklas 180               id="btnRestore"
5942 01 Feb 12 nicklas 181               disabled="<%=!writePermission%>" 
5946 03 Feb 12 nicklas 182               image="restore.png" 
5941 01 Feb 12 nicklas 183               title="Restore"
5941 01 Feb 12 nicklas 184               visible="<%=quota.isRemoved()%>"
5941 01 Feb 12 nicklas 185               tooltip="<%=writePermission ? "Restore this quota" : "You do not have permission to restore this quota"%>" 
5941 01 Feb 12 nicklas 186             />
5941 01 Feb 12 nicklas 187             <tbl:button 
6262 27 Mar 13 nicklas 188               id="btnImport"
5946 03 Feb 12 nicklas 189               image="import.png" 
6262 27 Mar 13 nicklas 190               data-plugin-type="IMPORT"  
5941 01 Feb 12 nicklas 191               title="Import&hellip;" 
5941 01 Feb 12 nicklas 192               tooltip="Import data" 
5941 01 Feb 12 nicklas 193               visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5941 01 Feb 12 nicklas 194             />
5941 01 Feb 12 nicklas 195             <tbl:button 
6262 27 Mar 13 nicklas 196               id="btnExport"
6262 27 Mar 13 nicklas 197               image="export.png"
6262 27 Mar 13 nicklas 198               data-plugin-type="EXPORT" 
5941 01 Feb 12 nicklas 199               title="Export&hellip;" 
5941 01 Feb 12 nicklas 200               tooltip="Export data" 
5941 01 Feb 12 nicklas 201               visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5941 01 Feb 12 nicklas 202             />
5941 01 Feb 12 nicklas 203             <tbl:button 
6262 27 Mar 13 nicklas 204               id="btnRunPlugin"
6262 27 Mar 13 nicklas 205               image="runplugin.png"  
6262 27 Mar 13 nicklas 206               data-plugin-type="OTHER" 
5941 01 Feb 12 nicklas 207               title="Run plugin&hellip;" 
5941 01 Feb 12 nicklas 208               tooltip="Run a plugin" 
5941 01 Feb 12 nicklas 209               visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5941 01 Feb 12 nicklas 210             />
5941 01 Feb 12 nicklas 211             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 212               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5941 01 Feb 12 nicklas 213             <tbl:button
5941 01 Feb 12 nicklas 214               image="help.png"
6262 27 Mar 13 nicklas 215               subclass="auto-init"
6262 27 Mar 13 nicklas 216               data-auto-init="help"
6262 27 Mar 13 nicklas 217               data-help-id="quota.view.properties"
5941 01 Feb 12 nicklas 218               title="Help&hellip;"
5941 01 Feb 12 nicklas 219               tooltip="Get help about this page"
5941 01 Feb 12 nicklas 220             />
5941 01 Feb 12 nicklas 221           </tbl:toolbar>
5941 01 Feb 12 nicklas 222         </td>
5941 01 Feb 12 nicklas 223       </tr>
2015 17 Feb 06 nicklas 224       <tr>
5941 01 Feb 12 nicklas 225         <th>Name</th>
2015 17 Feb 06 nicklas 226         <td><%=HTML.encodeTags(quota.getName())%></td>
2015 17 Feb 06 nicklas 227       </tr>
2015 17 Feb 06 nicklas 228       <tr>
5941 01 Feb 12 nicklas 229         <th>System ID</th>
2015 17 Feb 06 nicklas 230         <td><%=HTML.encodeTags(quota.getSystemId())%></td>
2015 17 Feb 06 nicklas 231       </tr>
2015 17 Feb 06 nicklas 232       <tr>
5941 01 Feb 12 nicklas 233         <th>Permissions</th>
5941 01 Feb 12 nicklas 234         <td><%=PermissionUtil.getFullPermissionNames(quota)%></td>
2015 17 Feb 06 nicklas 235       </tr>
2015 17 Feb 06 nicklas 236       <tr>
5941 01 Feb 12 nicklas 237         <th>Description</th>
5941 01 Feb 12 nicklas 238         <td><%=HTML.niceFormat(quota.getDescription())%></td>
2015 17 Feb 06 nicklas 239       </tr>
2015 17 Feb 06 nicklas 240       <tr>
5941 01 Feb 12 nicklas 241         <th></th>
5941 01 Feb 12 nicklas 242         <td>
6621 24 Nov 14 nicklas 243           <table class="fullborder special" style="margin: 5px;">
6621 24 Nov 14 nicklas 244           <tr class="bottomborder bg-filled-100">
5941 01 Feb 12 nicklas 245             <th style="width: 10em;"></th>
6147 21 Sep 12 nicklas 246             <th style="width: 12em;">Primary location</th>
5941 01 Feb 12 nicklas 247           </tr>
6621 24 Nov 14 nicklas 248           <tr class="bottomborder">
5941 01 Feb 12 nicklas 249             <th><%=Base.getLinkedName(ID, total, false, true)%></th>
5941 01 Feb 12 nicklas 250             <td><%=displayQuota(quota, total, Location.PRIMARY)%></td>
5941 01 Feb 12 nicklas 251           </tr>
5941 01 Feb 12 nicklas 252           <%
5941 01 Feb 12 nicklas 253           ItemResultList<QuotaType> quotaTypes = quotaTypeQuery.list(dc);
5941 01 Feb 12 nicklas 254           for (QuotaType current : quotaTypes)
5941 01 Feb 12 nicklas 255           {
5941 01 Feb 12 nicklas 256             %>
5941 01 Feb 12 nicklas 257             <tr>
5941 01 Feb 12 nicklas 258             <th><%=Base.getLinkedName(ID, current, false, true)%></th>
5941 01 Feb 12 nicklas 259             <td><%=displayQuota(quota, current, Location.PRIMARY)%></td>
5941 01 Feb 12 nicklas 260             </tr>
5941 01 Feb 12 nicklas 261             <%
5941 01 Feb 12 nicklas 262           }
5941 01 Feb 12 nicklas 263           %>
5941 01 Feb 12 nicklas 264           </table>
5941 01 Feb 12 nicklas 265
5941 01 Feb 12 nicklas 266         </td>
2015 17 Feb 06 nicklas 267       </table>
5941 01 Feb 12 nicklas 268       </div>
5941 01 Feb 12 nicklas 269
5507 19 Nov 10 nicklas 270       <jsp:include page="../../common/anytoany/list_anytoany.jsp">
5507 19 Nov 10 nicklas 271         <jsp:param name="ID" value="<%=ID%>" />
5507 19 Nov 10 nicklas 272         <jsp:param name="item_type" value="<%=itemType.name()%>" />
5507 19 Nov 10 nicklas 273         <jsp:param name="item_id" value="<%=itemId%>" />
5507 19 Nov 10 nicklas 274         <jsp:param name="title" value="Other items related to this quota" />
5507 19 Nov 10 nicklas 275       </jsp:include>
2015 17 Feb 06 nicklas 276       
5941 01 Feb 12 nicklas 277     </t:tab>
5941 01 Feb 12 nicklas 278     </t:tabcontrol>
2015 17 Feb 06 nicklas 279
2015 17 Feb 06 nicklas 280   </base:body>
2015 17 Feb 06 nicklas 281   </base:page>
2015 17 Feb 06 nicklas 282   <%
2015 17 Feb 06 nicklas 283 }
2015 17 Feb 06 nicklas 284 finally
2015 17 Feb 06 nicklas 285 {
2015 17 Feb 06 nicklas 286   if (dc != null) dc.close();
2015 17 Feb 06 nicklas 287 }
2015 17 Feb 06 nicklas 288
2015 17 Feb 06 nicklas 289 %>