www/admin/jobagents/list_agents.jsp

Code
Comments
Other
Rev Date Author Line
2629 08 Sep 06 nicklas 1 <%-- $Id$
2629 08 Sep 06 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2006 Nicklas Nordborg
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell, Martin Svensson
2629 08 Sep 06 nicklas 5
2629 08 Sep 06 nicklas 6   This file is part of BASE - BioArray Software Environment.
2629 08 Sep 06 nicklas 7   Available at http://base.thep.lu.se/
2629 08 Sep 06 nicklas 8
2629 08 Sep 06 nicklas 9   BASE is free software; you can redistribute it and/or
2629 08 Sep 06 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
2629 08 Sep 06 nicklas 12   of the License, or (at your option) any later version.
2629 08 Sep 06 nicklas 13
2629 08 Sep 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2629 08 Sep 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2629 08 Sep 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2629 08 Sep 06 nicklas 17   GNU General Public License for more details.
2629 08 Sep 06 nicklas 18
2629 08 Sep 06 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/>.
2629 08 Sep 06 nicklas 21   ------------------------------------------------------------------
2629 08 Sep 06 nicklas 22
2629 08 Sep 06 nicklas 23   @author Nicklas
2629 08 Sep 06 nicklas 24   @version 2.0
2629 08 Sep 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
2629 08 Sep 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
2629 08 Sep 06 nicklas 28   import="net.sf.basedb.core.DbControl"
2629 08 Sep 06 nicklas 29   import="net.sf.basedb.core.Item"
2629 08 Sep 06 nicklas 30   import="net.sf.basedb.core.JobAgent"
2629 08 Sep 06 nicklas 31   import="net.sf.basedb.core.ItemQuery"
2629 08 Sep 06 nicklas 32   import="net.sf.basedb.core.Include"
2629 08 Sep 06 nicklas 33   import="net.sf.basedb.core.ItemResultIterator"
2629 08 Sep 06 nicklas 34   import="net.sf.basedb.core.ItemResultList"
2629 08 Sep 06 nicklas 35   import="net.sf.basedb.core.ItemContext"
3552 06 Jul 07 martin 36   import="net.sf.basedb.core.Nameable"
2629 08 Sep 06 nicklas 37   import="net.sf.basedb.core.Permission"
2629 08 Sep 06 nicklas 38   import="net.sf.basedb.core.PluginDefinition"
2648 19 Sep 06 nicklas 39   import="net.sf.basedb.core.Job"
2648 19 Sep 06 nicklas 40   import="net.sf.basedb.core.Type"
2648 19 Sep 06 nicklas 41   import="net.sf.basedb.core.query.Expressions"
2648 19 Sep 06 nicklas 42   import="net.sf.basedb.core.query.Restrictions"
2629 08 Sep 06 nicklas 43   import="net.sf.basedb.core.query.Orders"
2629 08 Sep 06 nicklas 44   import="net.sf.basedb.core.query.Hql"
2629 08 Sep 06 nicklas 45   import="net.sf.basedb.core.plugin.GuiContext"
2629 08 Sep 06 nicklas 46   import="net.sf.basedb.core.plugin.Plugin"
2629 08 Sep 06 nicklas 47   import="net.sf.basedb.util.Enumeration"
3552 06 Jul 07 martin 48   import="net.sf.basedb.util.ShareableUtil"
4195 25 Mar 08 nicklas 49   import="net.sf.basedb.util.jobagent.JobInfo"
2629 08 Sep 06 nicklas 50   import="net.sf.basedb.clients.web.Base"
2629 08 Sep 06 nicklas 51   import="net.sf.basedb.clients.web.PermissionUtil"
2629 08 Sep 06 nicklas 52   import="net.sf.basedb.clients.web.ModeInfo"
2629 08 Sep 06 nicklas 53   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 54   import="net.sf.basedb.util.Values"
4886 03 Apr 09 nicklas 55   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4886 03 Apr 09 nicklas 56   import="net.sf.basedb.clients.web.extensions.JspContext"
4886 03 Apr 09 nicklas 57   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 58   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4886 03 Apr 09 nicklas 59   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 60   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6045 03 Apr 12 nicklas 61   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
4886 03 Apr 09 nicklas 62   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
3552 06 Jul 07 martin 63   import="java.util.Iterator"
2629 08 Sep 06 nicklas 64   import="java.util.List"
2629 08 Sep 06 nicklas 65   import="java.util.Map"
2648 19 Sep 06 nicklas 66   import="java.util.Set"
2629 08 Sep 06 nicklas 67 %>
2629 08 Sep 06 nicklas 68 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2629 08 Sep 06 nicklas 69 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4886 03 Apr 09 nicklas 70 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2629 08 Sep 06 nicklas 71 <%!
2629 08 Sep 06 nicklas 72   private static final Item itemType = Item.JOBAGENT;
2629 08 Sep 06 nicklas 73   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
2629 08 Sep 06 nicklas 74 %>
2629 08 Sep 06 nicklas 75 <%
2629 08 Sep 06 nicklas 76 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
2629 08 Sep 06 nicklas 77 final String ID = sc.getId();
2629 08 Sep 06 nicklas 78 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
2629 08 Sep 06 nicklas 79 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2629 08 Sep 06 nicklas 80
2629 08 Sep 06 nicklas 81 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
2629 08 Sep 06 nicklas 82 final String callback = request.getParameter("callback");
2629 08 Sep 06 nicklas 83 final String title = mode.generateTitle("job agent", "job agents");
7954 12 May 21 nicklas 84 final DbControl dc = sc.newDbControl(":List "+itemType);
2629 08 Sep 06 nicklas 85 ItemResultIterator<JobAgent> agents = null;
2629 08 Sep 06 nicklas 86 try
2629 08 Sep 06 nicklas 87 {
2648 19 Sep 06 nicklas 88   final ItemQuery<PluginDefinition> pluginQuery = PluginDefinition.getQuery();
2648 19 Sep 06 nicklas 89   pluginQuery.include(cc.getInclude());
2648 19 Sep 06 nicklas 90   pluginQuery.join(Hql.innerJoin("jobAgentSettings", Item.JOBAGENTSETTINGS.getAlias()));
2648 19 Sep 06 nicklas 91   pluginQuery.restrict(Restrictions.eq(Hql.property(Item.JOBAGENTSETTINGS.getAlias(), "jobAgent"), Expressions.parameter("agent")));
2648 19 Sep 06 nicklas 92   pluginQuery.order(Orders.asc(Hql.property("name")));
2648 19 Sep 06 nicklas 93   
2629 08 Sep 06 nicklas 94   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 95   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2629 08 Sep 06 nicklas 96   try
2629 08 Sep 06 nicklas 97   {
7914 23 Feb 21 nicklas 98     final ItemQuery<JobAgent> query = Base.getConfiguredQuery(dc, cc, jspContext, true, JobAgent.getQuery(), mode);
2629 08 Sep 06 nicklas 99     agents = query.iterate(dc);
2629 08 Sep 06 nicklas 100   }
2629 08 Sep 06 nicklas 101   catch (Throwable t)
2629 08 Sep 06 nicklas 102   {
2629 08 Sep 06 nicklas 103     cc.setMessage(t.getMessage());
2629 08 Sep 06 nicklas 104   }
2629 08 Sep 06 nicklas 105   int numListed = 0;
7604 25 Feb 19 nicklas 106   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 107   ExtensionsInvoker<ListColumnAction<JobAgent,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
2629 08 Sep 06 nicklas 108   %>
6289 05 Jun 13 nicklas 109   <base:page title="<%=title==null ? "Job agents" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6289 05 Jun 13 nicklas 110   <base:head scripts="table.js,~agents.js" styles="table.css,toolbar.css">
4886 03 Apr 09 nicklas 111     <ext:scripts context="<%=jspContext%>" />
4886 03 Apr 09 nicklas 112     <ext:stylesheets context="<%=jspContext%>" />
2629 08 Sep 06 nicklas 113   </base:head>
2629 08 Sep 06 nicklas 114   
2629 08 Sep 06 nicklas 115   <base:body>
5954 13 Feb 12 nicklas 116     <h1><%=title==null ? "Job agents" : title%></h1>
5954 13 Feb 12 nicklas 117     <div class="content">
2629 08 Sep 06 nicklas 118     <tbl:table 
2629 08 Sep 06 nicklas 119       id="agents" 
2629 08 Sep 06 nicklas 120       columns="<%=cc.getSetting("columns")%>"
2629 08 Sep 06 nicklas 121       sortby="<%=cc.getSortProperty()%>" 
2629 08 Sep 06 nicklas 122       direction="<%=cc.getSortDirection()%>"
2629 08 Sep 06 nicklas 123       action="index.jsp"
2629 08 Sep 06 nicklas 124       sc="<%=sc%>"
2629 08 Sep 06 nicklas 125       item="<%=itemType%>"
6704 02 Feb 15 nicklas 126       filterrows="<%=cc.getFilterRows()%>"
5954 13 Feb 12 nicklas 127       subclass="fulltable"
7982 14 Jun 21 nicklas 128       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
2629 08 Sep 06 nicklas 129       >
2629 08 Sep 06 nicklas 130       <tbl:hidden 
2629 08 Sep 06 nicklas 131         name="mode" 
2629 08 Sep 06 nicklas 132         value="<%=mode.getName()%>" 
2629 08 Sep 06 nicklas 133       />
2629 08 Sep 06 nicklas 134       <tbl:hidden 
2629 08 Sep 06 nicklas 135         name="callback" 
2629 08 Sep 06 nicklas 136         value="<%=callback%>" 
2629 08 Sep 06 nicklas 137         skip="<%=callback == null%>" 
2629 08 Sep 06 nicklas 138       />
2629 08 Sep 06 nicklas 139       <tbl:columndef 
2629 08 Sep 06 nicklas 140         id="name"
2629 08 Sep 06 nicklas 141         property="name"
2629 08 Sep 06 nicklas 142         datatype="string"
2629 08 Sep 06 nicklas 143         title="Name"
2629 08 Sep 06 nicklas 144         sortable="true" 
2629 08 Sep 06 nicklas 145         filterable="true"
2629 08 Sep 06 nicklas 146         exportable="true"
2629 08 Sep 06 nicklas 147         show="always" 
2629 08 Sep 06 nicklas 148       />
2629 08 Sep 06 nicklas 149       <tbl:columndef 
4332 12 Jun 08 martin 150         id="id"
4387 11 Aug 08 nicklas 151         clazz="uniquecol"
4332 12 Jun 08 martin 152         property="id"
4332 12 Jun 08 martin 153         datatype="int"
4332 12 Jun 08 martin 154         title="ID"
4332 12 Jun 08 martin 155         sortable="true"
4332 12 Jun 08 martin 156         filterable="true"
4332 12 Jun 08 martin 157         exportable="true"
4332 12 Jun 08 martin 158       />
4332 12 Jun 08 martin 159       <tbl:columndef 
2629 08 Sep 06 nicklas 160         id="externalId"
4387 11 Aug 08 nicklas 161         clazz="uniquecol"
2629 08 Sep 06 nicklas 162         property="externalId"
2629 08 Sep 06 nicklas 163         datatype="string"
2629 08 Sep 06 nicklas 164         title="External ID"
2629 08 Sep 06 nicklas 165         sortable="true"
2629 08 Sep 06 nicklas 166         filterable="true"
2629 08 Sep 06 nicklas 167         exportable="true"
2629 08 Sep 06 nicklas 168       />
2629 08 Sep 06 nicklas 169       <tbl:columndef 
2629 08 Sep 06 nicklas 170         id="server"
2629 08 Sep 06 nicklas 171         property="server"
2629 08 Sep 06 nicklas 172         datatype="string"
2629 08 Sep 06 nicklas 173         title="Server"
2629 08 Sep 06 nicklas 174         sortable="true"
2629 08 Sep 06 nicklas 175         filterable="true"
2629 08 Sep 06 nicklas 176         exportable="true"
2629 08 Sep 06 nicklas 177       />
2629 08 Sep 06 nicklas 178       <tbl:columndef 
2629 08 Sep 06 nicklas 179         id="port"
2629 08 Sep 06 nicklas 180         property="port"
2629 08 Sep 06 nicklas 181         datatype="int"
2629 08 Sep 06 nicklas 182         title="Port"
2629 08 Sep 06 nicklas 183         sortable="true"
2629 08 Sep 06 nicklas 184         filterable="true"
2629 08 Sep 06 nicklas 185         exportable="true"
2629 08 Sep 06 nicklas 186       />
2629 08 Sep 06 nicklas 187       <tbl:columndef
2643 15 Sep 06 nicklas 188         id="status"
2643 15 Sep 06 nicklas 189         title="Status"
2643 15 Sep 06 nicklas 190       />
2643 15 Sep 06 nicklas 191       <tbl:columndef
2629 08 Sep 06 nicklas 192         id="info"
2629 08 Sep 06 nicklas 193         title="CPU/Memory"
2629 08 Sep 06 nicklas 194       />
2629 08 Sep 06 nicklas 195       <tbl:columndef 
2629 08 Sep 06 nicklas 196         id="owner"
2629 08 Sep 06 nicklas 197         property="owner.name"
2629 08 Sep 06 nicklas 198         datatype="string"
2629 08 Sep 06 nicklas 199         title="Owner"
2629 08 Sep 06 nicklas 200         sortable="true" 
2629 08 Sep 06 nicklas 201         filterable="true"
2629 08 Sep 06 nicklas 202         exportable="true"
2629 08 Sep 06 nicklas 203       />
2629 08 Sep 06 nicklas 204       <tbl:columndef 
2629 08 Sep 06 nicklas 205         id="description"
2629 08 Sep 06 nicklas 206         property="description"
2629 08 Sep 06 nicklas 207         datatype="string"
2629 08 Sep 06 nicklas 208         title="Description" 
2629 08 Sep 06 nicklas 209         sortable="true" 
2629 08 Sep 06 nicklas 210         filterable="true" 
2629 08 Sep 06 nicklas 211         exportable="true"
2629 08 Sep 06 nicklas 212       />
2629 08 Sep 06 nicklas 213       <tbl:columndef
2643 15 Sep 06 nicklas 214         id="jobs"
2643 15 Sep 06 nicklas 215         title="Jobs"
2643 15 Sep 06 nicklas 216       />
2643 15 Sep 06 nicklas 217       <tbl:columndef
2643 15 Sep 06 nicklas 218         id="plugins"
2643 15 Sep 06 nicklas 219         title="Plugins"
4609 28 Oct 08 nicklas 220         property="&plugins(pluginDefinition.name)"
4609 28 Oct 08 nicklas 221         datatype="string"
4609 28 Oct 08 nicklas 222         filterable="true"
2643 15 Sep 06 nicklas 223       />
2643 15 Sep 06 nicklas 224       <tbl:columndef
2629 08 Sep 06 nicklas 225         id="permission"
2629 08 Sep 06 nicklas 226         title="Permission"
2629 08 Sep 06 nicklas 227       />
5165 28 Oct 09 nicklas 228       <tbl:columndef
3552 06 Jul 07 martin 229         id="sharedTo"
3552 06 Jul 07 martin 230         title="Shared to"
5165 28 Oct 09 nicklas 231         filterable="true"
5165 28 Oct 09 nicklas 232         filterproperty="!sharedTo.name"
5165 28 Oct 09 nicklas 233         datatype="string"
3552 06 Jul 07 martin 234       />
6045 03 Apr 12 nicklas 235       <tbl:columndef 
6045 03 Apr 12 nicklas 236         id="xt-columns" 
6045 03 Apr 12 nicklas 237         extensions="<%=columnsInvoker%>" 
6045 03 Apr 12 nicklas 238         jspcontext="<%=jspContext%>" 
6045 03 Apr 12 nicklas 239       />
6604 18 Nov 14 nicklas 240       <div class="panelgroup bg-filled-50 bottomborder">
5954 13 Feb 12 nicklas 241         <tbl:toolbar
5954 13 Feb 12 nicklas 242           subclass="bottomborder"
5954 13 Feb 12 nicklas 243           visible="<%=mode.hasToolbar()%>"
5954 13 Feb 12 nicklas 244           >
5954 13 Feb 12 nicklas 245           <tbl:button 
6289 05 Jun 13 nicklas 246             id="btnNewItem"
5954 13 Feb 12 nicklas 247             disabled="<%=!createPermission%>" 
5954 13 Feb 12 nicklas 248             image="new.png" 
5954 13 Feb 12 nicklas 249             title="New&hellip;" 
5954 13 Feb 12 nicklas 250             tooltip="<%=createPermission ? "Create new job agent" : "You do not have permission to create job agents"%>" 
5954 13 Feb 12 nicklas 251           />
5954 13 Feb 12 nicklas 252           <tbl:button 
6289 05 Jun 13 nicklas 253             id="btnDeleteItems"
5954 13 Feb 12 nicklas 254             image="delete.png"
5954 13 Feb 12 nicklas 255             title="Delete" 
5954 13 Feb 12 nicklas 256             tooltip="Delete the selected items" 
5954 13 Feb 12 nicklas 257           />
5954 13 Feb 12 nicklas 258           <tbl:button 
6289 05 Jun 13 nicklas 259             id="btnRestoreItems"
5954 13 Feb 12 nicklas 260             image="restore.png"
5954 13 Feb 12 nicklas 261             title="Restore" 
5954 13 Feb 12 nicklas 262             tooltip="Restore the selected (deleted) items"
5954 13 Feb 12 nicklas 263           />
5954 13 Feb 12 nicklas 264           <tbl:button 
6289 05 Jun 13 nicklas 265             id="btnShareItems"
5954 13 Feb 12 nicklas 266             image="share.png"
5954 13 Feb 12 nicklas 267             title="Share&hellip;" 
5954 13 Feb 12 nicklas 268             tooltip="Share the selected items"
5954 13 Feb 12 nicklas 269           />
5954 13 Feb 12 nicklas 270           <tbl:button 
6289 05 Jun 13 nicklas 271             id="btnSetOwner"
5954 13 Feb 12 nicklas 272             image="take_ownership.png"
5954 13 Feb 12 nicklas 273             title="Set owner&hellip;"
5954 13 Feb 12 nicklas 274             tooltip="Change owner of the selected items"
5954 13 Feb 12 nicklas 275           />
5954 13 Feb 12 nicklas 276           <tbl:button 
6289 05 Jun 13 nicklas 277             id="btnColumns"
5954 13 Feb 12 nicklas 278             image="columns.png" 
5954 13 Feb 12 nicklas 279             title="Columns&hellip;" 
5954 13 Feb 12 nicklas 280             tooltip="Show, hide and re-order columns" 
5954 13 Feb 12 nicklas 281           />
5954 13 Feb 12 nicklas 282           <tbl:button 
6289 05 Jun 13 nicklas 283             id="btnImport"
6289 05 Jun 13 nicklas 284             data-plugin-type="IMPORT"
5954 13 Feb 12 nicklas 285             image="import.png" 
5954 13 Feb 12 nicklas 286             title="Import&hellip;" 
5954 13 Feb 12 nicklas 287             tooltip="Import data" 
5954 13 Feb 12 nicklas 288             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5954 13 Feb 12 nicklas 289           />
5954 13 Feb 12 nicklas 290           <tbl:button 
6289 05 Jun 13 nicklas 291             id="btnExport"
6289 05 Jun 13 nicklas 292             data-plugin-type="EXPORT"
5954 13 Feb 12 nicklas 293             image="export.png" 
5954 13 Feb 12 nicklas 294             title="Export&hellip;" 
5954 13 Feb 12 nicklas 295             tooltip="Export data" 
5954 13 Feb 12 nicklas 296             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5954 13 Feb 12 nicklas 297           />
5954 13 Feb 12 nicklas 298           <tbl:button 
6289 05 Jun 13 nicklas 299             id="btnRunPlugin"
6289 05 Jun 13 nicklas 300             data-plugin-type="OTHER"
5954 13 Feb 12 nicklas 301             image="runplugin.png" 
5954 13 Feb 12 nicklas 302             title="Run plugin&hellip;" 
5954 13 Feb 12 nicklas 303             tooltip="Run a plugin" 
5954 13 Feb 12 nicklas 304             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5954 13 Feb 12 nicklas 305           />
5954 13 Feb 12 nicklas 306           <tbl:button
6289 05 Jun 13 nicklas 307             id="btnPause"
5954 13 Feb 12 nicklas 308             image="pause.png"
6289 05 Jun 13 nicklas 309             data-action="PauseSelected"
5954 13 Feb 12 nicklas 310             title="Pause"
5954 13 Feb 12 nicklas 311             tooltip="Pause the selected job agents"
5954 13 Feb 12 nicklas 312           />
5954 13 Feb 12 nicklas 313           <tbl:button
6289 05 Jun 13 nicklas 314             id="btnStart"
5954 13 Feb 12 nicklas 315             image="start.png"
6289 05 Jun 13 nicklas 316             data-action="StartSelected"
5954 13 Feb 12 nicklas 317             title="Start"
5954 13 Feb 12 nicklas 318             tooltip="Start the selected job agents"
5954 13 Feb 12 nicklas 319           />
5954 13 Feb 12 nicklas 320           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 321             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5954 13 Feb 12 nicklas 322         </tbl:toolbar>
5954 13 Feb 12 nicklas 323         <tbl:panel>
6182 23 Oct 12 nicklas 324           <tbl:presetselector />
5954 13 Feb 12 nicklas 325           <tbl:navigator
5954 13 Feb 12 nicklas 326             page="<%=cc.getPage()%>" 
5954 13 Feb 12 nicklas 327             rowsperpage="<%=cc.getRowsPerPage()%>" 
5954 13 Feb 12 nicklas 328             totalrows="<%=agents == null ? 0 : agents.getTotalCount()%>" 
5954 13 Feb 12 nicklas 329             visible="<%=mode.hasNavigator()%>"
5954 13 Feb 12 nicklas 330           />
5954 13 Feb 12 nicklas 331         </tbl:panel>
5954 13 Feb 12 nicklas 332       </div>
2629 08 Sep 06 nicklas 333       <tbl:data>
5948 08 Feb 12 nicklas 334         <tbl:headers>
5948 08 Feb 12 nicklas 335           <tbl:headerrow>
7943 04 May 21 nicklas 336             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 337             <tbl:columnheaders />
5948 08 Feb 12 nicklas 338           </tbl:headerrow>
6704 02 Feb 15 nicklas 339           <%
6704 02 Feb 15 nicklas 340           int numFilters = cc.getNumPropertyFilters();
6704 02 Feb 15 nicklas 341           int numRows = cc.getFilterRows();
6704 02 Feb 15 nicklas 342           for (int filterNo = 0; filterNo < numRows; filterNo++)
6704 02 Feb 15 nicklas 343           {
6704 02 Feb 15 nicklas 344             boolean lastRow = filterNo == numRows-1;
6704 02 Feb 15 nicklas 345             %>
6704 02 Feb 15 nicklas 346             <tbl:headerrow>
7943 04 May 21 nicklas 347               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 348                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 349                   <div class="index"></div>
7943 04 May 21 nicklas 350                   <div class="check">
7943 04 May 21 nicklas 351                     <base:icon 
7943 04 May 21 nicklas 352                       subclass="link table-check"
7943 04 May 21 nicklas 353                       image="check_uncheck.png" 
7943 04 May 21 nicklas 354                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 355                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 356                     />
7943 04 May 21 nicklas 357                   </div>
7943 04 May 21 nicklas 358                   <div class="icons">
7943 04 May 21 nicklas 359                     <base:icon
7943 04 May 21 nicklas 360                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 361                       image="add.png"
7943 04 May 21 nicklas 362                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 363                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 364                     /><base:icon
7943 04 May 21 nicklas 365                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 366                       image="remove.png"
7943 04 May 21 nicklas 367                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 368                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 369                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 370                     />
7943 04 May 21 nicklas 371                   </div>
7943 04 May 21 nicklas 372                 </div>
6704 02 Feb 15 nicklas 373               </tbl:header>
6704 02 Feb 15 nicklas 374               <tbl:propertyfilter row="<%=filterNo%>" />
6704 02 Feb 15 nicklas 375             </tbl:headerrow>
6704 02 Feb 15 nicklas 376             <%
6704 02 Feb 15 nicklas 377           }
6704 02 Feb 15 nicklas 378           %>
7913 22 Feb 21 nicklas 379           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 380         </tbl:headers>
5948 08 Feb 12 nicklas 381         <tbl:rows>
2629 08 Sep 06 nicklas 382           <%
5954 13 Feb 12 nicklas 383           if (cc.getMessage() != null)
5954 13 Feb 12 nicklas 384           {
5954 13 Feb 12 nicklas 385             %>
6604 18 Nov 14 nicklas 386             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 387               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5954 13 Feb 12 nicklas 388             </tbl:panel>
5954 13 Feb 12 nicklas 389             <%
5954 13 Feb 12 nicklas 390             cc.setMessage(null);
5954 13 Feb 12 nicklas 391           }
2629 08 Sep 06 nicklas 392           int index = cc.getPage()*cc.getRowsPerPage();
2629 08 Sep 06 nicklas 393           int selectedItemId = cc.getId();
2629 08 Sep 06 nicklas 394           if (agents != null)
2629 08 Sep 06 nicklas 395           {            
2629 08 Sep 06 nicklas 396             while (agents.hasNext())
2629 08 Sep 06 nicklas 397             {
2629 08 Sep 06 nicklas 398               JobAgent item = agents.next();
2629 08 Sep 06 nicklas 399               int itemId = item.getId();
6221 10 Jan 13 nicklas 400               
6221 10 Jan 13 nicklas 401               
4003 26 Nov 07 nicklas 402               boolean deletePermission = item.hasPermission(Permission.DELETE);
2629 08 Sep 06 nicklas 403               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
2629 08 Sep 06 nicklas 404               boolean writePermission = item.hasPermission(Permission.WRITE);
2629 08 Sep 06 nicklas 405               String name = HTML.encodeTags(item.getName());
2629 08 Sep 06 nicklas 406               String tooltip = mode.isSelectionMode() ? 
2629 08 Sep 06 nicklas 407                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2629 08 Sep 06 nicklas 408               index++;
2629 08 Sep 06 nicklas 409               numListed++;
2629 08 Sep 06 nicklas 410               %>
2629 08 Sep 06 nicklas 411               <tbl:row>
7943 04 May 21 nicklas 412                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 413                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 414                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 415                     <div class="check">
7943 04 May 21 nicklas 416                       <base:input
7943 04 May 21 nicklas 417                         type="checkbox" 
7943 04 May 21 nicklas 418                         name="<%=itemId%>" 
7943 04 May 21 nicklas 419                         value="<%=itemId%>" 
7943 04 May 21 nicklas 420                         title="<%=name%>" 
7943 04 May 21 nicklas 421                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 422                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 423                       />
7943 04 May 21 nicklas 424                       <base:input 
7943 04 May 21 nicklas 425                         type="radio" 
7943 04 May 21 nicklas 426                         name="item_id" 
7943 04 May 21 nicklas 427                         value="<%=itemId%>" 
7943 04 May 21 nicklas 428                         title="<%=name%>" 
7943 04 May 21 nicklas 429                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 430                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 431                       />
7943 04 May 21 nicklas 432                     </div>
7943 04 May 21 nicklas 433                     <div class="icons">
7943 04 May 21 nicklas 434                       <base:icon 
7943 04 May 21 nicklas 435                         image="deleted.png"
7943 04 May 21 nicklas 436                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 437                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 438                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 439                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 440                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 441                       /><base:icon 
7943 04 May 21 nicklas 442                         image="shared.png" 
7943 04 May 21 nicklas 443                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 444                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 445                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 446                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 447                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 448                       />
7943 04 May 21 nicklas 449                     </div>
7943 04 May 21 nicklas 450                   </div>
7943 04 May 21 nicklas 451                 </tbl:header>
6289 05 Jun 13 nicklas 452                 <tbl:cell column="name"><div 
6289 05 Jun 13 nicklas 453                   class="link table-item"
6289 05 Jun 13 nicklas 454                   data-item-id="<%=itemId%>"
6289 05 Jun 13 nicklas 455                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6289 05 Jun 13 nicklas 456                   tabindex="0"
2629 08 Sep 06 nicklas 457                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4349 23 Jun 08 nicklas 458                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
2629 08 Sep 06 nicklas 459                 <tbl:cell column="externalId"><%=HTML.encodeTags(item.getExternalId())%></tbl:cell>
2629 08 Sep 06 nicklas 460                 <tbl:cell column="server"><%=HTML.encodeTags(item.getServer())%></tbl:cell>
2629 08 Sep 06 nicklas 461                 <tbl:cell column="port"><%=item.getPort() == null ? "" : item.getPort().toString()%></tbl:cell>
2643 15 Sep 06 nicklas 462                 <tbl:cell column="status">
2643 15 Sep 06 nicklas 463                   <%
2643 15 Sep 06 nicklas 464                   Boolean paused = item.getInfo().isPaused();
2643 15 Sep 06 nicklas 465                   %>
2643 15 Sep 06 nicklas 466                   <%=paused == null ? "<i>- unknown -</i>" : paused == true ? "Paused" : "Running"%>
2643 15 Sep 06 nicklas 467                 </tbl:cell>
2629 08 Sep 06 nicklas 468                 <tbl:cell column="info">
2629 08 Sep 06 nicklas 469                   CPU usage: <%=item.getCpuUsage() == null ? "<i>- unknown -</i>" : item.getCpuUsage()+"%" %><br>
2629 08 Sep 06 nicklas 470                   Total memory: <%=item.getTotalMemory() == null ? "<i>- unknown -</i>" : Values.formatBytes(item.getTotalMemory()) %><br>
2629 08 Sep 06 nicklas 471                   Used memory: <%=item.getUsedMemory() == null ? "<i>- unknown -</i>" : Values.formatBytes(item.getUsedMemory()) %>
2629 08 Sep 06 nicklas 472                 </tbl:cell>
2648 19 Sep 06 nicklas 473                 <tbl:cell column="jobs">
2648 19 Sep 06 nicklas 474                   <%
4195 25 Mar 08 nicklas 475                   Set<JobInfo> jobs = item.getInfo().getJobInfo();
4195 25 Mar 08 nicklas 476                   if (jobs == null)
2648 19 Sep 06 nicklas 477                   {
2648 19 Sep 06 nicklas 478                     %>
4195 25 Mar 08 nicklas 479                     Unknown
4195 25 Mar 08 nicklas 480                     <%
4195 25 Mar 08 nicklas 481                   }
4195 25 Mar 08 nicklas 482                   else if (jobs.size() == 0)
4195 25 Mar 08 nicklas 483                   {
4195 25 Mar 08 nicklas 484                     %>
2648 19 Sep 06 nicklas 485                     <i>- none -</i>
2648 19 Sep 06 nicklas 486                     <%
2648 19 Sep 06 nicklas 487                   }
2648 19 Sep 06 nicklas 488                   else
2648 19 Sep 06 nicklas 489                   {
2648 19 Sep 06 nicklas 490                     String separator = "";
4195 25 Mar 08 nicklas 491                     for (JobInfo jobInfo : jobs)
2648 19 Sep 06 nicklas 492                     {
2648 19 Sep 06 nicklas 493                       try
2648 19 Sep 06 nicklas 494                       {
4195 25 Mar 08 nicklas 495                         Job job = Job.getById(dc, jobInfo.getJobId());
5329 29 Apr 10 nicklas 496                         int percent = job.getPercentComplete();
5351 26 May 10 nicklas 497                         Job.ExecutionTime estimated = job.getEstimatedExecutionTime();
2648 19 Sep 06 nicklas 498                         out.write(separator);
2648 19 Sep 06 nicklas 499                         if (mode.hasPropertyLink())
2648 19 Sep 06 nicklas 500                         {
5329 29 Apr 10 nicklas 501                           out.write(Base.getLinkedName(ID, job, false, mode.hasEditLink()));
2648 19 Sep 06 nicklas 502                         }
2648 19 Sep 06 nicklas 503                         else
2648 19 Sep 06 nicklas 504                         {
5329 29 Apr 10 nicklas 505                           out.write(HTML.encodeTags(job.getName()));
2648 19 Sep 06 nicklas 506                         }
5351 26 May 10 nicklas 507                         out.write(" (");
5351 26 May 10 nicklas 508                         if (percent != -1) out.write(percent + "%, ");
5351 26 May 10 nicklas 509                         out.write(estimated.name());
5351 26 May 10 nicklas 510                         out.write(")");
2648 19 Sep 06 nicklas 511                         separator = ", ";
2648 19 Sep 06 nicklas 512                       }
2648 19 Sep 06 nicklas 513                       catch (Throwable t)
2648 19 Sep 06 nicklas 514                       {
2648 19 Sep 06 nicklas 515                         %>
2648 19 Sep 06 nicklas 516                         <div class="error"><%=t.getMessage()%></div>
2648 19 Sep 06 nicklas 517                         <%
2648 19 Sep 06 nicklas 518                       }
2648 19 Sep 06 nicklas 519                     }
2648 19 Sep 06 nicklas 520                   }
2648 19 Sep 06 nicklas 521                   %>
2648 19 Sep 06 nicklas 522                 </tbl:cell>
2648 19 Sep 06 nicklas 523                 <tbl:cell column="plugins">
2648 19 Sep 06 nicklas 524                   <%
2648 19 Sep 06 nicklas 525                   pluginQuery.setParameter("agent", itemId, Type.INT);
2648 19 Sep 06 nicklas 526                   try
2648 19 Sep 06 nicklas 527                   {
2648 19 Sep 06 nicklas 528                     String separator = "";
2648 19 Sep 06 nicklas 529                     for (PluginDefinition p : pluginQuery.list(dc))
2648 19 Sep 06 nicklas 530                     {
2648 19 Sep 06 nicklas 531                       out.write(separator);
2648 19 Sep 06 nicklas 532                       if (mode.hasPropertyLink())
2648 19 Sep 06 nicklas 533                       {
2648 19 Sep 06 nicklas 534                         out.write(Base.getLink(ID, p.getName(), Item.PLUGINDEFINITION, p.getId(), mode.hasEditLink()));
2648 19 Sep 06 nicklas 535                       }
2648 19 Sep 06 nicklas 536                       else
2648 19 Sep 06 nicklas 537                       {
2648 19 Sep 06 nicklas 538                         out.write(HTML.encodeTags(p.getName()));
2648 19 Sep 06 nicklas 539                       }
2648 19 Sep 06 nicklas 540                       separator = ", ";
2648 19 Sep 06 nicklas 541                     }
2648 19 Sep 06 nicklas 542                   }
2648 19 Sep 06 nicklas 543                   catch (Throwable t)
2648 19 Sep 06 nicklas 544                   {
2648 19 Sep 06 nicklas 545                     %>
2648 19 Sep 06 nicklas 546                     <div class="error"><%=t.getMessage()%></div>
2648 19 Sep 06 nicklas 547                     <%
2648 19 Sep 06 nicklas 548                   }
2648 19 Sep 06 nicklas 549                   %>
2648 19 Sep 06 nicklas 550                 </tbl:cell>
2629 08 Sep 06 nicklas 551                 <tbl:cell column="owner"
2629 08 Sep 06 nicklas 552                   ><base:propertyvalue 
2629 08 Sep 06 nicklas 553                     item="<%=item%>" 
2629 08 Sep 06 nicklas 554                     property="owner"
2629 08 Sep 06 nicklas 555                     enableEditLink="<%=mode.hasEditLink()%>" 
2629 08 Sep 06 nicklas 556                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2629 08 Sep 06 nicklas 557                   /></tbl:cell>
2629 08 Sep 06 nicklas 558                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
2629 08 Sep 06 nicklas 559                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
3552 06 Jul 07 martin 560                 <tbl:cell column="sharedTo">
3552 06 Jul 07 martin 561                   <%
3552 06 Jul 07 martin 562                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
3552 06 Jul 07 martin 563                   while(sharees.hasNext())
3552 06 Jul 07 martin 564                   {
3552 06 Jul 07 martin 565                     Nameable n = sharees.next();
3552 06 Jul 07 martin 566                     if (mode.hasPropertyLink())
3552 06 Jul 07 martin 567                     {
3552 06 Jul 07 martin 568                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
3552 06 Jul 07 martin 569                     }
3552 06 Jul 07 martin 570                     else
3552 06 Jul 07 martin 571                     {
3552 06 Jul 07 martin 572                       out.write(HTML.encodeTags(n.getName()));
3552 06 Jul 07 martin 573                     }
3552 06 Jul 07 martin 574                     out.write(sharees.hasNext() ? ", " : "");
3552 06 Jul 07 martin 575                   }
3552 06 Jul 07 martin 576                   %>
3552 06 Jul 07 martin 577                 </tbl:cell>
6045 03 Apr 12 nicklas 578                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6045 03 Apr 12 nicklas 579                   <tbl:cell column="xt-columns" />
6045 03 Apr 12 nicklas 580                 </tbl:xt-cells>
2629 08 Sep 06 nicklas 581               </tbl:row>
2629 08 Sep 06 nicklas 582               <%
2629 08 Sep 06 nicklas 583               }
2629 08 Sep 06 nicklas 584             }
5954 13 Feb 12 nicklas 585           if (numListed == 0)
5954 13 Feb 12 nicklas 586           {
5954 13 Feb 12 nicklas 587             %>
6604 18 Nov 14 nicklas 588             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 589               <div class="messagecontainer note">
5954 13 Feb 12 nicklas 590               <%=agents == null || agents.getTotalCount() == 0 ? "No job agents were found" : "No job agents on this page. Please select another page!" %>
5954 13 Feb 12 nicklas 591               </div>
5954 13 Feb 12 nicklas 592             </tbl:panel>
5954 13 Feb 12 nicklas 593             <%
5954 13 Feb 12 nicklas 594           }
2629 08 Sep 06 nicklas 595           %>
5954 13 Feb 12 nicklas 596         </tbl:rows>
2629 08 Sep 06 nicklas 597       </tbl:data>
2629 08 Sep 06 nicklas 598     </tbl:table>
5954 13 Feb 12 nicklas 599     </div>
5954 13 Feb 12 nicklas 600     
5951 09 Feb 12 nicklas 601     <base:buttongroup subclass="dialogbuttons">
6289 05 Jun 13 nicklas 602       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6289 05 Jun 13 nicklas 603       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6289 05 Jun 13 nicklas 604       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
2629 08 Sep 06 nicklas 605     </base:buttongroup>
5951 09 Feb 12 nicklas 606     
2629 08 Sep 06 nicklas 607   </base:body>
2629 08 Sep 06 nicklas 608   </base:page>
2629 08 Sep 06 nicklas 609   <%
2629 08 Sep 06 nicklas 610 }
2629 08 Sep 06 nicklas 611 finally
2629 08 Sep 06 nicklas 612 {
2629 08 Sep 06 nicklas 613   if (agents != null) agents.close();
2629 08 Sep 06 nicklas 614   if (dc != null) dc.close();
2629 08 Sep 06 nicklas 615 }
3675 16 Aug 07 jari 616 %>