www/admin/datafiletypes/edit_filetype.jsp

Code
Comments
Other
Rev Date Author Line
3890 30 Oct 07 nicklas 1 <%-- $Id:edit_filetype.jsp 3820 2007-10-12 10:03:18Z nicklas $
3793 27 Sep 07 nicklas 2   ------------------------------------------------------------------
3793 27 Sep 07 nicklas 3   Copyright (C) 2005 Nicklas Nordborg
5425 23 Sep 10 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3793 27 Sep 07 nicklas 5
3793 27 Sep 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
3793 27 Sep 07 nicklas 7   Available at http://base.thep.lu.se/
3793 27 Sep 07 nicklas 8
3793 27 Sep 07 nicklas 9   BASE is free software; you can redistribute it and/or
3793 27 Sep 07 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
3793 27 Sep 07 nicklas 12   of the License, or (at your option) any later version.
3793 27 Sep 07 nicklas 13
3793 27 Sep 07 nicklas 14   BASE is distributed in the hope that it will be useful,
3793 27 Sep 07 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
3793 27 Sep 07 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3793 27 Sep 07 nicklas 17   GNU General Public License for more details.
3793 27 Sep 07 nicklas 18
3793 27 Sep 07 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/>.
3793 27 Sep 07 nicklas 21   ------------------------------------------------------------------
3793 27 Sep 07 nicklas 22
3793 27 Sep 07 nicklas 23
3793 27 Sep 07 nicklas 24   @author Nicklas
3793 27 Sep 07 nicklas 25   @version 2.0
3793 27 Sep 07 nicklas 26 --%>
5426 24 Sep 10 nicklas 27 <%@ page pageEncoding="UTF-8" session="false"
3793 27 Sep 07 nicklas 28   import="net.sf.basedb.core.SessionControl"
3793 27 Sep 07 nicklas 29   import="net.sf.basedb.core.DbControl"
3793 27 Sep 07 nicklas 30   import="net.sf.basedb.core.Item"
3793 27 Sep 07 nicklas 31   import="net.sf.basedb.core.ItemContext"
3793 27 Sep 07 nicklas 32   import="net.sf.basedb.core.Permission"
3793 27 Sep 07 nicklas 33   import="net.sf.basedb.core.DataFileType"
5630 13 May 11 nicklas 34   import="net.sf.basedb.core.ItemSubtype"
3793 27 Sep 07 nicklas 35   import="net.sf.basedb.core.ItemResultList"
3793 27 Sep 07 nicklas 36   import="net.sf.basedb.core.ItemQuery"
3793 27 Sep 07 nicklas 37   import="net.sf.basedb.core.Metadata"
3793 27 Sep 07 nicklas 38   import="net.sf.basedb.core.PermissionDeniedException"
3793 27 Sep 07 nicklas 39   import="net.sf.basedb.core.query.Orders"
3793 27 Sep 07 nicklas 40   import="net.sf.basedb.core.query.Hql"
3793 27 Sep 07 nicklas 41   import="net.sf.basedb.clients.web.Base"
3793 27 Sep 07 nicklas 42   import="net.sf.basedb.clients.web.util.HTML"
3793 27 Sep 07 nicklas 43   import="net.sf.basedb.util.Values"
5508 19 Nov 10 nicklas 44   import="net.sf.basedb.core.plugin.GuiContext"
5508 19 Nov 10 nicklas 45   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5508 19 Nov 10 nicklas 46   import="net.sf.basedb.clients.web.extensions.JspContext"
5508 19 Nov 10 nicklas 47   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 48   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5508 19 Nov 10 nicklas 49   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
3793 27 Sep 07 nicklas 50   import="java.util.Set"
3793 27 Sep 07 nicklas 51 %>
3793 27 Sep 07 nicklas 52 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
3793 27 Sep 07 nicklas 53 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6149 25 Sep 12 nicklas 54 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
3793 27 Sep 07 nicklas 55 <%
3793 27 Sep 07 nicklas 56 final Item itemType = Item.DATAFILETYPE;
3793 27 Sep 07 nicklas 57 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
3793 27 Sep 07 nicklas 58 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
3793 27 Sep 07 nicklas 59 final int itemId = cc.getId();
3793 27 Sep 07 nicklas 60 final String ID = sc.getId();
3793 27 Sep 07 nicklas 61 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 62 final DbControl dc = sc.newDbControl(":Edit "+itemType);
3793 27 Sep 07 nicklas 63 try
3793 27 Sep 07 nicklas 64 {
3793 27 Sep 07 nicklas 65   String title = null;
3793 27 Sep 07 nicklas 66   DataFileType fileType = null;
3793 27 Sep 07 nicklas 67   boolean readCurrentFileType = true;
3793 27 Sep 07 nicklas 68   int currentFileTypeId = 0;
3793 27 Sep 07 nicklas 69
3793 27 Sep 07 nicklas 70   if (itemId == 0)
3793 27 Sep 07 nicklas 71   {
3793 27 Sep 07 nicklas 72     title = "Create data file type";
3793 27 Sep 07 nicklas 73     cc.removeObject("item");
3793 27 Sep 07 nicklas 74     currentFileTypeId = Values.getInt(cc.getPropertyValue("genericType"), 0);
3793 27 Sep 07 nicklas 75     if (currentFileTypeId == 0)
3793 27 Sep 07 nicklas 76     {
5630 13 May 11 nicklas 77       currentFileTypeId = Values.getInt(cc.getRecent(Item.ITEMSUBTYPE.name(), 0), 0);
3793 27 Sep 07 nicklas 78     }
3793 27 Sep 07 nicklas 79   }
3793 27 Sep 07 nicklas 80   else
3793 27 Sep 07 nicklas 81   {
3793 27 Sep 07 nicklas 82     fileType = DataFileType.getById(dc, itemId);
3793 27 Sep 07 nicklas 83     fileType.checkPermission(Permission.WRITE);
3793 27 Sep 07 nicklas 84     cc.setObject("item", fileType);
3793 27 Sep 07 nicklas 85     title = "Edit data file type -- " + HTML.encodeTags(fileType.getName());
3793 27 Sep 07 nicklas 86     try
3793 27 Sep 07 nicklas 87     {
5630 13 May 11 nicklas 88       ItemSubtype ft = fileType.getGenericType();
3793 27 Sep 07 nicklas 89       if (ft != null) currentFileTypeId = ft.getId();
3793 27 Sep 07 nicklas 90     }
3793 27 Sep 07 nicklas 91     catch (PermissionDeniedException ex)
3793 27 Sep 07 nicklas 92     {
3793 27 Sep 07 nicklas 93       readCurrentFileType = false;
3793 27 Sep 07 nicklas 94     }
3793 27 Sep 07 nicklas 95   }
3793 27 Sep 07 nicklas 96   // Query to retrieve file types
5630 13 May 11 nicklas 97   final ItemQuery<ItemSubtype> fileTypeQuery = ItemSubtype.getQuery(Item.FILE);
3793 27 Sep 07 nicklas 98   fileTypeQuery.order(Orders.asc(Hql.property("name")));
3793 27 Sep 07 nicklas 99   fileTypeQuery.setCacheResult(true);
3793 27 Sep 07 nicklas 100
5508 19 Nov 10 nicklas 101   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), fileType);
7604 25 Feb 19 nicklas 102   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
3793 27 Sep 07 nicklas 103   %>
6296 13 Jun 13 nicklas 104   <base:page type="popup" title="<%=title%>" id="edit-page">
6296 13 Jun 13 nicklas 105   <base:head scripts="tabcontrol-2.js,~filetypes.js" styles="tabcontrol.css">
5508 19 Nov 10 nicklas 106     <ext:scripts context="<%=jspContext%>" />
5508 19 Nov 10 nicklas 107     <ext:stylesheets context="<%=jspContext%>" />
3793 27 Sep 07 nicklas 108   </base:head>
6296 13 Jun 13 nicklas 109   <base:body>
5922 11 Jan 12 nicklas 110     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 111     <form action="index.jsp?ID=<%=ID%>" method="post" name="fileType">
3793 27 Sep 07 nicklas 112     <input type="hidden" name="cmd" value="UpdateItem">
3793 27 Sep 07 nicklas 113
5922 11 Jan 12 nicklas 114     <t:tabcontrol id="settings" 
5922 11 Jan 12 nicklas 115       subclass="content dialogtabcontrol"
5508 19 Nov 10 nicklas 116       position="bottom"  remember="<%=fileType != null%>"
5508 19 Nov 10 nicklas 117       extensions="<%=invoker%>">
6296 13 Jun 13 nicklas 118     <t:tab id="info" title="Data file type" helpid="datafiletype.edit">
5922 11 Jan 12 nicklas 119       <table class="fullform input100 smaller">
3793 27 Sep 07 nicklas 120       <tr>
5922 11 Jan 12 nicklas 121         <th>Name</th>
6296 13 Jun 13 nicklas 122         <td><input class="text required auto-init" type="text" name="name" data-auto-init="<%=fileType == null ? "focus-select" : "focus" %>"
3793 27 Sep 07 nicklas 123           value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("name"), "New data file type") : fileType.getName())%>" 
5922 11 Jan 12 nicklas 124           maxlength="<%=DataFileType.MAX_NAME_LENGTH%>"></td>
5922 11 Jan 12 nicklas 125         <td></td>
3793 27 Sep 07 nicklas 126       </tr>
3793 27 Sep 07 nicklas 127       <%
3793 27 Sep 07 nicklas 128       if (fileType == null)
3793 27 Sep 07 nicklas 129       {
3793 27 Sep 07 nicklas 130         // For new file types only
3793 27 Sep 07 nicklas 131         Set<Item> items = Metadata.getFileStoreEnabledItems();
3793 27 Sep 07 nicklas 132         int itemCode = Values.getInt(cc.getPropertyValue("itemType"), -1);
3793 27 Sep 07 nicklas 133         %>
3793 27 Sep 07 nicklas 134         <tr>
5922 11 Jan 12 nicklas 135           <th>External ID</th>
6217 14 Dec 12 nicklas 136           <td><input class="text required unchangeable" type="text" name="externalId" 
3798 28 Sep 07 nicklas 137             value="<%=HTML.encodeTags(cc.getPropertyValue("externalId"))%>" 
5922 11 Jan 12 nicklas 138             maxlength="<%=DataFileType.MAX_EXTERNAL_ID_LENGTH%>"></td>
5922 11 Jan 12 nicklas 139           <td></td>
3793 27 Sep 07 nicklas 140         </tr>
3793 27 Sep 07 nicklas 141         <tr>
5922 11 Jan 12 nicklas 142           <th>Item type</th>
3793 27 Sep 07 nicklas 143           <td>
5922 11 Jan 12 nicklas 144             <select name="itemType" class="required unchangeable selectionlist">
3793 27 Sep 07 nicklas 145             <%
3793 27 Sep 07 nicklas 146             for (Item item : items)
3793 27 Sep 07 nicklas 147             {
3793 27 Sep 07 nicklas 148               String selected = itemCode == item.getValue() ? "selected" : "";
3793 27 Sep 07 nicklas 149               %>
3793 27 Sep 07 nicklas 150               <option value="<%=item.name()%>" <%=selected%>><%=item.toString() %>
3793 27 Sep 07 nicklas 151               <%
3793 27 Sep 07 nicklas 152             }
3793 27 Sep 07 nicklas 153             %>
3793 27 Sep 07 nicklas 154             </select>
3793 27 Sep 07 nicklas 155           </td>
5922 11 Jan 12 nicklas 156           <td></td>
3793 27 Sep 07 nicklas 157         </tr>
3793 27 Sep 07 nicklas 158         <%
3793 27 Sep 07 nicklas 159       }
3793 27 Sep 07 nicklas 160       %>
3793 27 Sep 07 nicklas 161       <tr>
5922 11 Jan 12 nicklas 162         <th>File extension</th>
6217 14 Dec 12 nicklas 163         <td><input class="text" type="text" name="extension" style="width: 15em;"
3793 27 Sep 07 nicklas 164           value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("extension")) : fileType.getExtension())%>" 
5922 11 Jan 12 nicklas 165           maxlength="<%=DataFileType.MAX_EXTENSION_LENGTH%>"></td>
5922 11 Jan 12 nicklas 166         <td></td>
3793 27 Sep 07 nicklas 167       </tr>
5922 11 Jan 12 nicklas 168       <tr>
5922 11 Jan 12 nicklas 169         <th>Generic file type</th>
5922 11 Jan 12 nicklas 170         <td>
5922 11 Jan 12 nicklas 171           <select name="generictype_id" <%=!readCurrentFileType ? "disabled readonly class=\"disabled\"" : "class=\"selectionlist\""%>>
3793 27 Sep 07 nicklas 172           <%
3793 27 Sep 07 nicklas 173           if (!readCurrentFileType)
3793 27 Sep 07 nicklas 174           {
3793 27 Sep 07 nicklas 175             %>
3793 27 Sep 07 nicklas 176             <option value="-1">- denied -
3793 27 Sep 07 nicklas 177             <%
3793 27 Sep 07 nicklas 178           }
3793 27 Sep 07 nicklas 179           else
3793 27 Sep 07 nicklas 180           {
3793 27 Sep 07 nicklas 181             %>
3793 27 Sep 07 nicklas 182             <option value="0">- none -
3793 27 Sep 07 nicklas 183             <%
5630 13 May 11 nicklas 184             ItemResultList<ItemSubtype> fileTypes = fileTypeQuery.list(dc);
5630 13 May 11 nicklas 185             for (ItemSubtype ft : fileTypes)
3793 27 Sep 07 nicklas 186             {
3793 27 Sep 07 nicklas 187               int id = ft.getId();
3793 27 Sep 07 nicklas 188               %>
3793 27 Sep 07 nicklas 189               <option 
3793 27 Sep 07 nicklas 190                 value="<%=fileType != null && id == currentFileTypeId ? -id : id%>" 
3793 27 Sep 07 nicklas 191                 <%=id == currentFileTypeId ? "selected" : ""%>
3793 27 Sep 07 nicklas 192                 ><%=HTML.encodeTags(ft.getName())%>
3793 27 Sep 07 nicklas 193               <%
3793 27 Sep 07 nicklas 194             }
3793 27 Sep 07 nicklas 195           }
3793 27 Sep 07 nicklas 196           %>
3793 27 Sep 07 nicklas 197           </select>
3793 27 Sep 07 nicklas 198         </td>
5922 11 Jan 12 nicklas 199         <td></td>
3793 27 Sep 07 nicklas 200       </tr>
5922 11 Jan 12 nicklas 201       <tr class="dynamic">
5922 11 Jan 12 nicklas 202         <th>Description</th>
5922 11 Jan 12 nicklas 203         <td>
6217 14 Dec 12 nicklas 204           <textarea class="text" rows="6" name="description" id="description"
3793 27 Sep 07 nicklas 205             ><%=HTML.encodeTags(fileType == null ? cc.getPropertyValue("description") : fileType.getDescription())%></textarea>
3793 27 Sep 07 nicklas 206         </td>
5922 11 Jan 12 nicklas 207         <td style="width: 20px;">
6215 13 Dec 12 nicklas 208           <base:zoom textarea="description" title="Description" />
5922 11 Jan 12 nicklas 209         </td>
3793 27 Sep 07 nicklas 210       </tr>
3793 27 Sep 07 nicklas 211       </table>
3793 27 Sep 07 nicklas 212     </t:tab>
3793 27 Sep 07 nicklas 213     </t:tabcontrol>
5922 11 Jan 12 nicklas 214     </form>
5922 11 Jan 12 nicklas 215     
5922 11 Jan 12 nicklas 216     <div class="legend">
5946 03 Feb 12 nicklas 217       <base:icon image="required.png" />= required information
5922 11 Jan 12 nicklas 218       <%if (fileType == null) {%><br>
5967 16 Feb 12 nicklas 219         <base:icon image="unchangeable.png" />= can't be changed later
5922 11 Jan 12 nicklas 220       <%}%>
5922 11 Jan 12 nicklas 221     </div>
3793 27 Sep 07 nicklas 222
5922 11 Jan 12 nicklas 223     <base:buttongroup subclass="dialogbuttons">
6296 13 Jun 13 nicklas 224       <base:button id="btnSave" title="Save" />
6296 13 Jun 13 nicklas 225       <base:button id="close" title="Cancel" />
5922 11 Jan 12 nicklas 226     </base:buttongroup>
3793 27 Sep 07 nicklas 227   </base:body>
3793 27 Sep 07 nicklas 228   </base:page>
3793 27 Sep 07 nicklas 229   <%
3793 27 Sep 07 nicklas 230 }
3793 27 Sep 07 nicklas 231 finally
3793 27 Sep 07 nicklas 232 {
3793 27 Sep 07 nicklas 233   if (dc != null) dc.close();
3793 27 Sep 07 nicklas 234 }
3793 27 Sep 07 nicklas 235 %>