source: branches/filedb/www/admin/datafiletypes/edit_filetype.jsp @ 3798

Last change on this file since 3798 was 3798, checked in by Nicklas Nordborg, 15 years ago

References #721: Changed systemId to externalId in JSP as well

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 8.7 KB
Line 
1<%-- $Id: edit_filetype.jsp 3798 2007-09-28 06:45:09Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Hakkinen, Nicklas Nordborg, Martin Svensson
5
6  This file is part of BASE - BioArray Software Environment.
7  Available at http://base.thep.lu.se/
8
9  BASE is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License
11  as published by the Free Software Foundation; either version 2
12  of the License, or (at your option) any later version.
13
14  BASE is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 59 Temple Place - Suite 330,
22  Boston, MA  02111-1307, USA.
23  ------------------------------------------------------------------
24
25
26  @author Nicklas
27  @version 2.0
28--%>
29<%@ page session="false"
30  import="net.sf.basedb.core.SessionControl"
31  import="net.sf.basedb.core.DbControl"
32  import="net.sf.basedb.core.Item"
33  import="net.sf.basedb.core.ItemContext"
34  import="net.sf.basedb.core.Permission"
35  import="net.sf.basedb.core.DataFileType"
36  import="net.sf.basedb.core.FileType"
37  import="net.sf.basedb.core.ItemResultList"
38  import="net.sf.basedb.core.ItemQuery"
39  import="net.sf.basedb.core.Metadata"
40  import="net.sf.basedb.core.PermissionDeniedException"
41  import="net.sf.basedb.core.query.Orders"
42  import="net.sf.basedb.core.query.Hql"
43  import="net.sf.basedb.clients.web.Base"
44  import="net.sf.basedb.clients.web.util.HTML"
45  import="net.sf.basedb.util.Values"
46  import="java.util.Set"
47%>
48<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
49<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
50<%
51final Item itemType = Item.DATAFILETYPE;
52final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
53final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
54final int itemId = cc.getId();
55final String ID = sc.getId();
56final float scale = Base.getScale(sc);
57final DbControl dc = sc.newDbControl();
58try
59{
60  String title = null;
61  DataFileType fileType = null;
62  boolean readCurrentFileType = true;
63  int currentFileTypeId = 0;
64
65  if (itemId == 0)
66  {
67    title = "Create data file type";
68    cc.removeObject("item");
69    currentFileTypeId = Values.getInt(cc.getPropertyValue("genericType"), 0);
70    if (currentFileTypeId == 0)
71    {
72      currentFileTypeId = Values.getInt(cc.getRecent(Item.FILETYPE.name(), 0), 0);
73    }
74  }
75  else
76  {
77    fileType = DataFileType.getById(dc, itemId);
78    fileType.checkPermission(Permission.WRITE);
79    cc.setObject("item", fileType);
80    title = "Edit data file type -- " + HTML.encodeTags(fileType.getName());
81    try
82    {
83      FileType ft = fileType.getGenericType();
84      if (ft != null) currentFileTypeId = ft.getId();
85    }
86    catch (PermissionDeniedException ex)
87    {
88      readCurrentFileType = false;
89    }
90  }
91  // Query to retrieve file types
92  final ItemQuery<FileType> fileTypeQuery = FileType.getQuery();
93  fileTypeQuery.order(Orders.asc(Hql.property("name")));
94  fileTypeQuery.setCacheResult(true);
95
96  final String clazz = "class=\"text\"";
97  final String requiredClazz = "class=\"text required\"";
98  final String unchangeableClazz = "class=\"text required unchangeable\"";
99  %>
100
101  <base:page type="popup" title="<%=title%>">
102  <base:head scripts="tabcontrol.js" styles="tabcontrol.css">
103    <script language="JavaScript">
104    // Validate the "Data file type" tab
105    function validateDataFileType()
106    {
107      var frm = document.forms['fileType'];
108      if (Main.trimString(frm.name.value) == '')
109      {
110        alert("You must enter a name");
111        frm.name.focus();
112        return false;
113      }
114      else if (frm.externalId && Main.trimString(frm.externalId.value) == '')
115      {
116        alert("You must enter an external ID");
117        frm.externalId.focus();
118        return false;
119      }
120      return true;
121    }
122
123    // Submit the form
124    function saveSettings()
125    {
126      var frm = document.forms['fileType'];
127      if (TabControl.validateActiveTab('settings'))
128      {
129        frm.submit();
130      }
131    }
132   
133    function init()
134    {
135      <%
136      if (fileType == null)
137      {
138        %>
139        var frm = document.forms['fileType'];
140        frm.name.focus();
141        frm.name.select();
142        <%
143      }
144      %>
145    }
146    </script>
147  </base:head>
148  <base:body onload="init()">
149    <p>
150    <form action="index.jsp?ID=<%=ID%>" method="post" name="fileType" onsubmit="return false;">
151    <input type="hidden" name="cmd" value="UpdateItem">
152
153    <h3 class="docked"><%=title%> <base:help tabcontrol="settings" /></h3>
154    <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*340)+"px;"%>" 
155      position="bottom"  remember="<%=fileType != null%>">
156    <t:tab id="info" title="Data file type" validate="validateDataFileType()" helpid="datafiletype.edit">
157      <table class="form" cellspacing=0>
158      <tr>
159        <td class="prompt">Name</td>
160        <td><input <%=requiredClazz%> type="text" name="name" 
161          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("name"), "New data file type") : fileType.getName())%>" 
162          size="40" maxlength="<%=DataFileType.MAX_NAME_LENGTH%>"></td>
163      </tr>
164      <%
165      if (fileType == null)
166      {
167        // For new file types only
168        Set<Item> items = Metadata.getFileStoreEnabledItems();
169        int itemCode = Values.getInt(cc.getPropertyValue("itemType"), -1);
170        %>
171        <tr>
172          <td class="prompt">System ID</td>
173          <td><input <%=unchangeableClazz%> type="text" name="externalId" 
174            value="<%=HTML.encodeTags(cc.getPropertyValue("externalId"))%>" 
175            size="40" maxlength="<%=DataFileType.MAX_EXTERNAL_ID_LENGTH%>"></td>
176        </tr>
177        <tr>
178          <td class="prompt">Item type</td>
179          <td>
180            <select name="itemType" class="required unchangeable">
181            <%
182            for (Item item : items)
183            {
184              String selected = itemCode == item.getValue() ? "selected" : "";
185              %>
186              <option value="<%=item.name()%>" <%=selected%>><%=item.toString() %>
187              <%
188            }
189            %>
190            </select>
191          </td>
192        </tr>
193        <%
194      }
195      %>
196      <tr>
197        <td class="prompt">File extension</td>
198        <td><input <%=clazz%> type="text" name="extension" 
199          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("extension")) : fileType.getExtension())%>" 
200          size="40" maxlength="<%=DataFileType.MAX_EXTENSION_LENGTH%>"></td>
201      </tr>
202      <tr valign="top">
203        <td class="prompt">Generic file type</td>
204        <td colspan="2">
205          <select name="generictype_id" <%=!readCurrentFileType ? "disabled readonly class=\"disabled\"" : ""%>>
206          <%
207          if (!readCurrentFileType)
208          {
209            %>
210            <option value="-1">- denied -
211            <%
212          }
213          else
214          {
215            %>
216            <option value="0">- none -
217            <%
218            ItemResultList<FileType> fileTypes = fileTypeQuery.list(dc);
219            for (FileType ft : fileTypes)
220            {
221              int id = ft.getId();
222              %>
223              <option 
224                value="<%=fileType != null && id == currentFileTypeId ? -id : id%>" 
225                <%=id == currentFileTypeId ? "selected" : ""%>
226                ><%=HTML.encodeTags(ft.getName())%>
227              <%
228            }
229          }
230          %>
231          </select>
232        </td>
233      </tr>
234      <tr>
235        <td class="prompt">Validator</td>
236        <td><input <%=clazz%> type="text" name="validatorClass" 
237          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("validatorClass")) : fileType.getValidatorClass())%>" 
238          size="40" maxlength="<%=DataFileType.MAX_CLASSNAME_LENGTH%>"></td>
239      </tr>
240      <tr>
241        <td class="prompt">Metadata reader</td>
242        <td><input <%=clazz%> type="text" name="metadataReaderClass" 
243          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("metadataReaderClass")) : fileType.getMetadataReaderClass())%>" 
244          size="40" maxlength="<%=DataFileType.MAX_CLASSNAME_LENGTH%>"></td>
245      </tr>
246      <tr valign=top>
247        <td class="prompt">Description</td>
248        <td nowrap>
249          <textarea <%=clazz%> rows="4" cols="40" name="description" wrap="virtual"
250            ><%=HTML.encodeTags(fileType == null ? cc.getPropertyValue("description") : fileType.getDescription())%></textarea>
251          <a href="javascript:Main.zoom('Description', 'fileType', 'description')"
252            title="Edit in larger window"><base:icon image="zoom.gif" /></a>
253        </td>
254      </tr>
255      </table>
256      <div align=right>
257        &nbsp;<i><base:icon image="required.gif" /> = required information</i>
258        <%if (fileType == null) {%><br>
259        <i><base:icon image="unchangeable.gif" /> = can't be changed later</i>
260        <%}%>
261      </div>
262    </t:tab>
263    </t:tabcontrol>
264
265    <table align="center">
266    <tr>
267      <td width="50%"><base:button onclick="saveSettings()" title="Save" /></td>
268      <td width="50%"><base:button onclick="window.close()" title="Cancel" /></td>
269    </tr>
270    </table>
271    </form>
272  </base:body>
273  </base:page>
274  <%
275}
276finally
277{
278  if (dc != null) dc.close();
279}
280%>
Note: See TracBrowser for help on using the repository browser.