www/common/import/select_file.jsp

Code
Comments
Other
Rev Date Author Line
1730 20 Dec 05 nicklas 1 <%-- $Id$
1730 20 Dec 05 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2005 Nicklas Nordborg
5425 23 Sep 10 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
1730 20 Dec 05 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
1730 20 Dec 05 nicklas 8
1730 20 Dec 05 nicklas 9   BASE is free software; you can redistribute it and/or
1730 20 Dec 05 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
1730 20 Dec 05 nicklas 12   of the License, or (at your option) any later version.
1730 20 Dec 05 nicklas 13
1730 20 Dec 05 nicklas 14   BASE is distributed in the hope that it will be useful,
1730 20 Dec 05 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1730 20 Dec 05 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1730 20 Dec 05 nicklas 17   GNU General Public License for more details.
1730 20 Dec 05 nicklas 18
1730 20 Dec 05 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/>.
1730 20 Dec 05 nicklas 21   ------------------------------------------------------------------
1730 20 Dec 05 nicklas 22
1730 20 Dec 05 nicklas 23   @author Nicklas
1730 20 Dec 05 nicklas 24   @version 2.0
1730 20 Dec 05 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1730 20 Dec 05 nicklas 27   import="net.sf.basedb.core.SessionControl"
4525 16 Sep 08 nicklas 28   import="net.sf.basedb.core.Config"
1730 20 Dec 05 nicklas 29   import="net.sf.basedb.core.DbControl"
1730 20 Dec 05 nicklas 30   import="net.sf.basedb.core.Item"
2677 28 Sep 06 nicklas 31   import="net.sf.basedb.core.ItemContext"
2677 28 Sep 06 nicklas 32   import="net.sf.basedb.core.File"
5372 24 Jun 10 nicklas 33   import="net.sf.basedb.core.PluginDefinition"
1730 20 Dec 05 nicklas 34   import="net.sf.basedb.core.PluginConfiguration"
1730 20 Dec 05 nicklas 35   import="net.sf.basedb.core.PluginType"
1730 20 Dec 05 nicklas 36   import="net.sf.basedb.core.ItemQuery"
1730 20 Dec 05 nicklas 37   import="net.sf.basedb.core.ItemResultList"
1730 20 Dec 05 nicklas 38   import="net.sf.basedb.core.Include"
1787 18 Jan 06 nicklas 39   import="net.sf.basedb.core.Job"
1803 23 Jan 06 nicklas 40   import="net.sf.basedb.core.Location"
3852 17 Oct 07 nicklas 41   import="net.sf.basedb.core.FileStoreEnabled"
3852 17 Oct 07 nicklas 42   import="net.sf.basedb.core.FileSetMember"
3852 17 Oct 07 nicklas 43   import="net.sf.basedb.core.DataFileType"
1730 20 Dec 05 nicklas 44   import="net.sf.basedb.core.query.Hql"
1730 20 Dec 05 nicklas 45   import="net.sf.basedb.core.query.Expressions"
1730 20 Dec 05 nicklas 46   import="net.sf.basedb.core.query.Restrictions"
1730 20 Dec 05 nicklas 47   import="net.sf.basedb.core.query.Orders"
1730 20 Dec 05 nicklas 48   import="net.sf.basedb.core.plugin.GuiContext"
1730 20 Dec 05 nicklas 49   import="net.sf.basedb.core.plugin.Plugin"
1730 20 Dec 05 nicklas 50   import="net.sf.basedb.core.plugin.AutoDetectingImporter"
1730 20 Dec 05 nicklas 51   import="net.sf.basedb.clients.web.Base"
1730 20 Dec 05 nicklas 52   import="net.sf.basedb.clients.web.util.HTML"
7628 08 Mar 19 nicklas 53   import="net.sf.basedb.util.charset.CharsetUtil"
2753 20 Oct 06 nicklas 54   import="net.sf.basedb.util.Values"
2677 28 Sep 06 nicklas 55   import="java.util.List"
4525 16 Sep 08 nicklas 56   import="java.nio.charset.Charset"
1730 20 Dec 05 nicklas 57 %>
1730 20 Dec 05 nicklas 58 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1730 20 Dec 05 nicklas 59 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1730 20 Dec 05 nicklas 60 <%
1730 20 Dec 05 nicklas 61 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1730 20 Dec 05 nicklas 62 final String ID = sc.getId();
1730 20 Dec 05 nicklas 63 final Item itemType = Item.valueOf(request.getParameter("item_type"));
1945 09 Feb 06 nicklas 64 final String subContext = Values.getString(request.getParameter("subcontext"), "");
2677 28 Sep 06 nicklas 65 final ItemContext currentContext = sc.getCurrentContext(itemType, subContext);
1730 20 Dec 05 nicklas 66 final GuiContext.Type contextType = GuiContext.Type.valueOf(request.getParameter("context_type"));
1730 20 Dec 05 nicklas 67 final GuiContext context = new GuiContext(itemType, contextType);
1730 20 Dec 05 nicklas 68 final String title = request.getParameter("title");
7954 12 May 21 nicklas 69 final DbControl dc = sc.newDbControl(":Import - Select file");
5372 24 Jun 10 nicklas 70 final int pluginId = Values.getInt(request.getParameter("plugindefinition_id"));
5372 24 Jun 10 nicklas 71 PluginDefinition plugin = null;
5372 24 Jun 10 nicklas 72 if (pluginId > 0)
5372 24 Jun 10 nicklas 73 {
5372 24 Jun 10 nicklas 74   plugin = PluginDefinition.getById(dc, pluginId);
5372 24 Jun 10 nicklas 75 }
3852 17 Oct 07 nicklas 76
1730 20 Dec 05 nicklas 77 try
1730 20 Dec 05 nicklas 78 {
3852 17 Oct 07 nicklas 79   // Try to get data files attached to FileStoreEnabled items
3852 17 Oct 07 nicklas 80   File currentFile = null;
3852 17 Oct 07 nicklas 81   List<FileSetMember> dataFiles = null;
3912 06 Nov 07 nicklas 82   if (itemType.getItemClass() != null && 
3912 06 Nov 07 nicklas 83     FileStoreEnabled.class.isAssignableFrom(itemType.getItemClass()))
3852 17 Oct 07 nicklas 84   {
3852 17 Oct 07 nicklas 85     FileStoreEnabled fileStoreItem = null;
3852 17 Oct 07 nicklas 86     try
3852 17 Oct 07 nicklas 87     {
3852 17 Oct 07 nicklas 88       fileStoreItem = (FileStoreEnabled)itemType.getById(dc, currentContext.getId());
3852 17 Oct 07 nicklas 89     }
3852 17 Oct 07 nicklas 90     catch (Throwable t)
3852 17 Oct 07 nicklas 91     {}
3852 17 Oct 07 nicklas 92     if (fileStoreItem != null && fileStoreItem.hasFileSet())
3852 17 Oct 07 nicklas 93     {
3852 17 Oct 07 nicklas 94       dataFiles = fileStoreItem.getFileSet().getMembers().list(dc);
3852 17 Oct 07 nicklas 95       if (dataFiles.size() > 0)
3852 17 Oct 07 nicklas 96       {
3852 17 Oct 07 nicklas 97         // The first file will be selected by default
3852 17 Oct 07 nicklas 98         try
3852 17 Oct 07 nicklas 99         {
3852 17 Oct 07 nicklas 100           currentFile = dataFiles.get(0).getFile();
3852 17 Oct 07 nicklas 101         }
3852 17 Oct 07 nicklas 102         catch (Throwable t)
3852 17 Oct 07 nicklas 103         {}
3852 17 Oct 07 nicklas 104       }
3852 17 Oct 07 nicklas 105     }
3852 17 Oct 07 nicklas 106   }
7605 26 Feb 19 nicklas 107   List<File> recentFiles = currentContext.getRecent(dc, Item.FILE);
1730 20 Dec 05 nicklas 108   %>
4525 16 Sep 08 nicklas 109   <base:page type="popup" title="<%=title%>">
6200 05 Nov 12 nicklas 110   <base:head scripts="~select_file.js" />
1730 20 Dec 05 nicklas 111   <base:body>
5910 14 Dec 11 nicklas 112     <h1><%=title%> (auto-detect file format) <base:help helpid="import.autodetect.selectfile" /></h1>
5910 14 Dec 11 nicklas 113     
6200 05 Nov 12 nicklas 114     <div id="page-data" class="datacontainer"
6200 05 Nov 12 nicklas 115       data-default-charset="<%=Config.getCharset()%>"
6200 05 Nov 12 nicklas 116     ></div>
6200 05 Nov 12 nicklas 117     
6162 10 Oct 12 nicklas 118     <form name="import" action="index.jsp" method="get">
1730 20 Dec 05 nicklas 119     <input type="hidden" name="ID" value="<%=ID%>">
1730 20 Dec 05 nicklas 120     <input type="hidden" name="cmd" value="AutoDetect">
1730 20 Dec 05 nicklas 121     <input type="hidden" name="item_type" value="<%=itemType.name()%>">
1945 09 Feb 06 nicklas 122     <input type="hidden" name="subcontext" value="<%=subContext%>">
1730 20 Dec 05 nicklas 123     <input type="hidden" name="context_type" value="<%=contextType.name()%>">
1730 20 Dec 05 nicklas 124     <input type="hidden" name="title" value="<%=title%>">
1787 18 Jan 06 nicklas 125     <input type="hidden" name="job_name" value="<%=HTML.encodeTags(request.getParameter("job_name"))%>">
1787 18 Jan 06 nicklas 126     <input type="hidden" name="job_description" value="<%=HTML.encodeTags(request.getParameter("job_description"))%>">
1772 16 Jan 06 nicklas 127     <input type="hidden" name="plugindefinition_id" value="<%=request.getParameter("plugindefinition_id")%>">
1730 20 Dec 05 nicklas 128     <input type="hidden" name="file_id" value="">
1730 20 Dec 05 nicklas 129     
5910 14 Dec 11 nicklas 130     <div class="content bottomborder">
6607 19 Nov 14 nicklas 131       <div class="absolutefull bg-filled-100" style="height: 4.5em;">
5910 14 Dec 11 nicklas 132         <table style="height: 100%; margin: auto;"><tr><td>
5910 14 Dec 11 nicklas 133         Select a file to import from.
5910 14 Dec 11 nicklas 134         </td></tr></table>
1772 16 Jan 06 nicklas 135       </div>
5910 14 Dec 11 nicklas 136       
5911 15 Dec 11 nicklas 137       <div class="absolutefull topborder" style="top: 4.5em;">
5910 14 Dec 11 nicklas 138         <table class="fullform input100">
3852 17 Oct 07 nicklas 139         <tr>
5910 14 Dec 11 nicklas 140           <th>Plugin</th>
5910 14 Dec 11 nicklas 141           <td><%=plugin != null ? HTML.encodeTags(plugin.getName()) : "<i>- all -</i>"%></td>
5910 14 Dec 11 nicklas 142         </tr>
5910 14 Dec 11 nicklas 143         <tr>
5910 14 Dec 11 nicklas 144           <th>File</th>
3852 17 Oct 07 nicklas 145           <td>
5910 14 Dec 11 nicklas 146             <table style="width: 100%;">
5910 14 Dec 11 nicklas 147             <tr>
6305 09 Aug 13 nicklas 148               <td style="width: 98%;"><input type="text" class="text required" name="path" id="path"
6124 13 Sep 12 nicklas 149                 value="<%=currentFile != null ? HTML.encodeTags(currentFile.getPath().toString()) : "" %>"></td>
5910 14 Dec 11 nicklas 150               <td><base:button 
6176 19 Oct 12 nicklas 151                   id="btnBrowse"
5910 14 Dec 11 nicklas 152                   title="Browse&hellip;"
6124 13 Sep 12 nicklas 153                   /></td>
5910 14 Dec 11 nicklas 154             </tr>
5910 14 Dec 11 nicklas 155             </table>
3852 17 Oct 07 nicklas 156           </td>
3852 17 Oct 07 nicklas 157         </tr>
2677 28 Sep 06 nicklas 158         <tr>
5910 14 Dec 11 nicklas 159           <th>Character set</th>
2677 28 Sep 06 nicklas 160           <td>
6576 22 Oct 14 nicklas 161             <select name="charset" style="max-width: 98%;">
2677 28 Sep 06 nicklas 162             <%
5910 14 Dec 11 nicklas 163             String defaultCharset = Config.getCharset();
5910 14 Dec 11 nicklas 164             int numCommon = Config.getCommonCharsets().size();
5910 14 Dec 11 nicklas 165             int i = 0;
7628 08 Mar 19 nicklas 166             for (String charset : CharsetUtil.getAllCharsets(true))
2677 28 Sep 06 nicklas 167             {
2677 28 Sep 06 nicklas 168               %>
5910 14 Dec 11 nicklas 169               <option value="<%=charset%>" 
5910 14 Dec 11 nicklas 170                 <%=defaultCharset.equalsIgnoreCase(charset) ? "selected" : ""%> 
5910 14 Dec 11 nicklas 171                 <%=i==numCommon ? "style=\"border-top: 1px solid #666666;\"" : "" %>><%=charset%>
2677 28 Sep 06 nicklas 172               <%
5910 14 Dec 11 nicklas 173               i++;
2677 28 Sep 06 nicklas 174             }
2677 28 Sep 06 nicklas 175             %>
2677 28 Sep 06 nicklas 176             </select>
2677 28 Sep 06 nicklas 177           </td>
2677 28 Sep 06 nicklas 178         </tr>
2677 28 Sep 06 nicklas 179         <%
5910 14 Dec 11 nicklas 180         if (dataFiles != null && dataFiles.size() > 0)
5910 14 Dec 11 nicklas 181         {
5910 14 Dec 11 nicklas 182           %>
5910 14 Dec 11 nicklas 183           <tr>
5910 14 Dec 11 nicklas 184             <th>Data files</th>
5910 14 Dec 11 nicklas 185             <td>
6576 22 Oct 14 nicklas 186               <select name="dataFile" id="dataFile" style="width: 98%;">
5910 14 Dec 11 nicklas 187               <option value="">
5910 14 Dec 11 nicklas 188               <%
5910 14 Dec 11 nicklas 189               for (FileSetMember member : dataFiles)
5910 14 Dec 11 nicklas 190               {
5910 14 Dec 11 nicklas 191                 File file = null;
5910 14 Dec 11 nicklas 192                 DataFileType dft = null;
5910 14 Dec 11 nicklas 193                 try
5910 14 Dec 11 nicklas 194                 {
5910 14 Dec 11 nicklas 195                   dft = member.getDataFileType();
5910 14 Dec 11 nicklas 196                 }
5910 14 Dec 11 nicklas 197                 catch (Throwable t)
5910 14 Dec 11 nicklas 198                 {}
5910 14 Dec 11 nicklas 199                 try
5910 14 Dec 11 nicklas 200                 {
5910 14 Dec 11 nicklas 201                   file = member.getFile();
5910 14 Dec 11 nicklas 202                 }
5910 14 Dec 11 nicklas 203                 catch (Throwable t)
5910 14 Dec 11 nicklas 204                 {}
5910 14 Dec 11 nicklas 205                 if (file != null)
5910 14 Dec 11 nicklas 206                 {
5910 14 Dec 11 nicklas 207                   String path = HTML.encodeTags(file.getPath().toString());
5910 14 Dec 11 nicklas 208                   String type = dft != null ? "[" + HTML.encodeTags(dft.getName()) + "] " : "";
5910 14 Dec 11 nicklas 209                   %>
5910 14 Dec 11 nicklas 210                   <option value="<%=file.getId()%>"><%=type%><%=path%>
5910 14 Dec 11 nicklas 211                   <%
5910 14 Dec 11 nicklas 212                 }
5910 14 Dec 11 nicklas 213               }
5910 14 Dec 11 nicklas 214               %>
5910 14 Dec 11 nicklas 215               </select>
5910 14 Dec 11 nicklas 216             </td>
5910 14 Dec 11 nicklas 217           </tr>
5910 14 Dec 11 nicklas 218           <%
5910 14 Dec 11 nicklas 219         }
5910 14 Dec 11 nicklas 220         %>
5910 14 Dec 11 nicklas 221         <%
5910 14 Dec 11 nicklas 222         if (recentFiles.size() > 0)
5910 14 Dec 11 nicklas 223         {
5910 14 Dec 11 nicklas 224           %>
5910 14 Dec 11 nicklas 225           <tr>
5910 14 Dec 11 nicklas 226             <th>Recently used</th>
5910 14 Dec 11 nicklas 227             <td>
6576 22 Oct 14 nicklas 228               <select name="recentFile" id="recentFile" style="width: 98%;">
5910 14 Dec 11 nicklas 229               <option value="">
5910 14 Dec 11 nicklas 230               <%
5910 14 Dec 11 nicklas 231               for (File recent : recentFiles)
5910 14 Dec 11 nicklas 232               {
5910 14 Dec 11 nicklas 233                 String path = HTML.encodeTags(recent.getPath().toString());
5910 14 Dec 11 nicklas 234                 %>
5910 14 Dec 11 nicklas 235                 <option value="<%=recent.getId()%>"><%=path%>
5910 14 Dec 11 nicklas 236                 <%
5910 14 Dec 11 nicklas 237               }
5910 14 Dec 11 nicklas 238               %>
5910 14 Dec 11 nicklas 239               </select>
5910 14 Dec 11 nicklas 240             </td>
5910 14 Dec 11 nicklas 241           </tr>
5910 14 Dec 11 nicklas 242           <%
5910 14 Dec 11 nicklas 243         }
5910 14 Dec 11 nicklas 244         %>
5910 14 Dec 11 nicklas 245         <tr class="dynamic">
5910 14 Dec 11 nicklas 246           <th></th>
5910 14 Dec 11 nicklas 247           <td></td>
5910 14 Dec 11 nicklas 248         </tr>
5910 14 Dec 11 nicklas 249         </table>
5910 14 Dec 11 nicklas 250       </div>
1730 20 Dec 05 nicklas 251     </div>
1730 20 Dec 05 nicklas 252     </form>
1730 20 Dec 05 nicklas 253   
5910 14 Dec 11 nicklas 254     <div class="legend">
5946 03 Feb 12 nicklas 255       <base:icon image="required.png" />= required information
5910 14 Dec 11 nicklas 256     </div>
5910 14 Dec 11 nicklas 257   
5910 14 Dec 11 nicklas 258     <base:buttongroup subclass="dialogbuttons">
6200 05 Nov 12 nicklas 259       <base:button id="btnNext" title="Next" />
6200 05 Nov 12 nicklas 260       <base:button id="close" title="Cancel" />
5910 14 Dec 11 nicklas 261     </base:buttongroup>
1730 20 Dec 05 nicklas 262   </base:body>
1730 20 Dec 05 nicklas 263   </base:page>
1730 20 Dec 05 nicklas 264   <%
1730 20 Dec 05 nicklas 265 }
1730 20 Dec 05 nicklas 266 finally
1730 20 Dec 05 nicklas 267 {
1730 20 Dec 05 nicklas 268   if (dc != null) dc.close();
1730 20 Dec 05 nicklas 269 }
1730 20 Dec 05 nicklas 270 %>
1730 20 Dec 05 nicklas 271