extensions/net.sf.basedb.reggie/trunk/resources/batch/import-external-specimen.jsp

Code
Comments
Other
Rev Date Author Line
6178 23 Mar 21 nicklas 1 <%@ page
6178 23 Mar 21 nicklas 2   pageEncoding="UTF-8"
6178 23 Mar 21 nicklas 3   session="false"
6178 23 Mar 21 nicklas 4   import="net.sf.basedb.core.Application"
6178 23 Mar 21 nicklas 5   import="net.sf.basedb.core.User"
6178 23 Mar 21 nicklas 6   import="net.sf.basedb.core.DbControl"
6178 23 Mar 21 nicklas 7   import="net.sf.basedb.core.SessionControl"
6178 23 Mar 21 nicklas 8   import="net.sf.basedb.clients.web.Base"
6178 23 Mar 21 nicklas 9   import="net.sf.basedb.clients.web.util.HTML"
6178 23 Mar 21 nicklas 10   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
6178 23 Mar 21 nicklas 11   import="net.sf.basedb.util.Values"
6178 23 Mar 21 nicklas 12 %>
6178 23 Mar 21 nicklas 13 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
6178 23 Mar 21 nicklas 14 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
6178 23 Mar 21 nicklas 15 <%
6178 23 Mar 21 nicklas 16 final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true);
6178 23 Mar 21 nicklas 17 final String ID = sc.getId();
6178 23 Mar 21 nicklas 18 final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie");
6178 23 Mar 21 nicklas 19 DbControl dc = null;
6178 23 Mar 21 nicklas 20 try
6178 23 Mar 21 nicklas 21 {
6178 23 Mar 21 nicklas 22   dc = sc.newDbControl();
6178 23 Mar 21 nicklas 23   final User user = User.getById(dc, sc.getLoggedInUserId());
6178 23 Mar 21 nicklas 24 %>
6178 23 Mar 21 nicklas 25 <base:page type="default" >
6178 23 Mar 21 nicklas 26 <base:head 
6178 23 Mar 21 nicklas 27   scripts="~../reggie-2.js,~import-external-specimen.js" 
6178 23 Mar 21 nicklas 28   styles="path.css,~../css/reggie-2.css"
6178 23 Mar 21 nicklas 29 >
6178 23 Mar 21 nicklas 30 <style>
6178 23 Mar 21 nicklas 31
6178 23 Mar 21 nicklas 32
6178 23 Mar 21 nicklas 33 #importItemsTable
6178 23 Mar 21 nicklas 34 {
6178 23 Mar 21 nicklas 35   width: 100%; 
6178 23 Mar 21 nicklas 36   border-collapse: collapse;
6178 23 Mar 21 nicklas 37 }
6178 23 Mar 21 nicklas 38
6178 23 Mar 21 nicklas 39 #importItemsTable tr.highlight
6178 23 Mar 21 nicklas 40 {
6178 23 Mar 21 nicklas 41   border-top-width: 1px;
6178 23 Mar 21 nicklas 42   border-top-style: dotted;
6178 23 Mar 21 nicklas 43 }
6178 23 Mar 21 nicklas 44
6897 29 Nov 22 nicklas 45 #importItemsTable tr.newflowcell
6897 29 Nov 22 nicklas 46 {
6897 29 Nov 22 nicklas 47   border-top-width: 1px;
6897 29 Nov 22 nicklas 48   border-top-style: solid;
6897 29 Nov 22 nicklas 49   border-top-color: black;
6897 29 Nov 22 nicklas 50 }
6897 29 Nov 22 nicklas 51
6897 29 Nov 22 nicklas 52 #importItemsTable tr.evenflowcell
6897 29 Nov 22 nicklas 53 {
6897 29 Nov 22 nicklas 54   background-color: #F8F8F8;
6897 29 Nov 22 nicklas 55 }
6897 29 Nov 22 nicklas 56
6897 29 Nov 22 nicklas 57
6178 23 Mar 21 nicklas 58 #importItemsTable thead
6178 23 Mar 21 nicklas 59 {
6899 29 Nov 22 nicklas 60   border-top-width: 1px;
6178 23 Mar 21 nicklas 61   border-bottom-width: 1px;
6178 23 Mar 21 nicklas 62 }
6178 23 Mar 21 nicklas 63
6212 14 Apr 21 nicklas 64 #importItemsTable th
6212 14 Apr 21 nicklas 65 {
6212 14 Apr 21 nicklas 66   padding: 4px;
6212 14 Apr 21 nicklas 67 }
6212 14 Apr 21 nicklas 68
6178 23 Mar 21 nicklas 69 #importItemsTable td
6178 23 Mar 21 nicklas 70 {
6178 23 Mar 21 nicklas 71   text-align: center;
6178 23 Mar 21 nicklas 72   min-width: 4.5em;
6178 23 Mar 21 nicklas 73 }
6178 23 Mar 21 nicklas 74
6178 23 Mar 21 nicklas 75 #importItemsTable tbody td
6178 23 Mar 21 nicklas 76 {
6734 09 May 22 nicklas 77   padding: 2px 4px;
6178 23 Mar 21 nicklas 78 }
6178 23 Mar 21 nicklas 79
6734 09 May 22 nicklas 80 #importItemsTable td.icon
6198 07 Apr 21 nicklas 81 {
6198 07 Apr 21 nicklas 82   width: 20px;
6198 07 Apr 21 nicklas 83   min-width: 20px;
6734 09 May 22 nicklas 84   vertical-align: baseline;
6198 07 Apr 21 nicklas 85 }
6198 07 Apr 21 nicklas 86
6198 07 Apr 21 nicklas 87 #importItemsTable td.valid
6198 07 Apr 21 nicklas 88 {
6198 07 Apr 21 nicklas 89   text-align: left;
6198 07 Apr 21 nicklas 90 }
6198 07 Apr 21 nicklas 91
6212 14 Apr 21 nicklas 92 .file-data
6212 14 Apr 21 nicklas 93 {
6212 14 Apr 21 nicklas 94   font-style: italic;
6212 14 Apr 21 nicklas 95   opacity: 0.5;
6212 14 Apr 21 nicklas 96 }
6510 03 Dec 21 nicklas 97
6901 29 Nov 22 nicklas 98 .action
6901 29 Nov 22 nicklas 99 {
6901 29 Nov 22 nicklas 100   padding: 0.5em;
6901 29 Nov 22 nicklas 101   display: inline-block;
6901 29 Nov 22 nicklas 102 }
6901 29 Nov 22 nicklas 103
6924 02 Dec 22 nicklas 104 .notes
6924 02 Dec 22 nicklas 105 {
6924 02 Dec 22 nicklas 106   background-image: url('../images/info.png');
6924 02 Dec 22 nicklas 107   background-repeat: no-repeat;
6924 02 Dec 22 nicklas 108   background-position: 2px 0;
6924 02 Dec 22 nicklas 109   padding-left: 20px;
6924 02 Dec 22 nicklas 110   margin: 0 0 0.5em 0.5em;
6924 02 Dec 22 nicklas 111 }
6924 02 Dec 22 nicklas 112
6510 03 Dec 21 nicklas 113 .messagecontainer.minimal
6510 03 Dec 21 nicklas 114 {
6510 03 Dec 21 nicklas 115   max-height: 5.5em;
6510 03 Dec 21 nicklas 116   overflow: auto;
6510 03 Dec 21 nicklas 117 }
6510 03 Dec 21 nicklas 118
6905 30 Nov 22 nicklas 119 .messagecontainer.allvisible
6905 30 Nov 22 nicklas 120 {
6905 30 Nov 22 nicklas 121   max-height: initial;
6905 30 Nov 22 nicklas 122 }
6905 30 Nov 22 nicklas 123
6510 03 Dec 21 nicklas 124 .morewarnings
6510 03 Dec 21 nicklas 125 {
6510 03 Dec 21 nicklas 126   font-weight: bold;
6510 03 Dec 21 nicklas 127   font-style: italic;
6510 03 Dec 21 nicklas 128   font-size: 90%;
6510 03 Dec 21 nicklas 129   margin-left: 1em;
6510 03 Dec 21 nicklas 130   margin-bottom: 0.25em;
6901 29 Nov 22 nicklas 131   display: inline-block;
6510 03 Dec 21 nicklas 132 }
6510 03 Dec 21 nicklas 133 .morewarnings:before 
6510 03 Dec 21 nicklas 134 {
6510 03 Dec 21 nicklas 135   content: '►';
6510 03 Dec 21 nicklas 136 }
6510 03 Dec 21 nicklas 137
6905 30 Nov 22 nicklas 138 .morewarnings.allvisible
6901 29 Nov 22 nicklas 139 {
6901 29 Nov 22 nicklas 140   display: none;
6901 29 Nov 22 nicklas 141 }
6901 29 Nov 22 nicklas 142
6905 30 Nov 22 nicklas 143 .less-messages .messagecontainer.minimal
6901 29 Nov 22 nicklas 144 {
6905 30 Nov 22 nicklas 145   display: none;
6901 29 Nov 22 nicklas 146 }
6901 29 Nov 22 nicklas 147
6905 30 Nov 22 nicklas 148 .less-messages .morewarnings
6905 30 Nov 22 nicklas 149 {
6905 30 Nov 22 nicklas 150   display: initial;
6905 30 Nov 22 nicklas 151 }
6905 30 Nov 22 nicklas 152
6895 25 Nov 22 nicklas 153 .fully-validate
6895 25 Nov 22 nicklas 154 {
6895 25 Nov 22 nicklas 155   font-weight: bold;
6895 25 Nov 22 nicklas 156   font-style: italic;
6895 25 Nov 22 nicklas 157   margin-left: 1em;
6895 25 Nov 22 nicklas 158 }
6895 25 Nov 22 nicklas 159
6895 25 Nov 22 nicklas 160 .fully-validate:before 
6895 25 Nov 22 nicklas 161 {
6895 25 Nov 22 nicklas 162   content: '►';
6895 25 Nov 22 nicklas 163 }
6895 25 Nov 22 nicklas 164
6510 03 Dec 21 nicklas 165 img.case-summary
6510 03 Dec 21 nicklas 166 {
6510 03 Dec 21 nicklas 167   margin-left: 0.25em;
6510 03 Dec 21 nicklas 168 }
6178 23 Mar 21 nicklas 169 </style>
6178 23 Mar 21 nicklas 170 </base:head>
6178 23 Mar 21 nicklas 171 <base:body>
6178 23 Mar 21 nicklas 172
6178 23 Mar 21 nicklas 173   <p:path><p:pathelement 
6178 23 Mar 21 nicklas 174     title="Reggie" href="<%="../index.jsp?ID="+ID%>" 
6178 23 Mar 21 nicklas 175     /><p:pathelement title="Import externally processed samples" 
6178 23 Mar 21 nicklas 176     /></p:path>
6178 23 Mar 21 nicklas 177
6178 23 Mar 21 nicklas 178   <div class="content">
6178 23 Mar 21 nicklas 179   <form name="reggie" id="wizard" class="wizard">
6178 23 Mar 21 nicklas 180   
6350 17 Aug 21 nicklas 181     <div class="step auto-hide" id="step-1">
6178 23 Mar 21 nicklas 182       <div class="step-no">1</div>
6350 17 Aug 21 nicklas 183       <div class="step-title">Select items to import</div>
6178 23 Mar 21 nicklas 184       <div class="step-content">
6899 29 Nov 22 nicklas 185         <div style="padding: 0.5em 2em;">
6921 02 Dec 22 nicklas 186           <li>Found <span id="num-json-files">?</span> JSON files, <span id="num-validated-files">?</span> has been fully validated 
6921 02 Dec 22 nicklas 187             <span id="validate-all" class="fully-validate link" style="display: none;">Validate all!</span>
6921 02 Dec 22 nicklas 188           <li><span id="num-importable">?</span> files can be imported, <span id="num-importable-with-warnings">?</span> with warnings
6921 02 Dec 22 nicklas 189           <li><span id="num-importable-convert">?</span> existing NoSpecimen are converted to Specimen
6921 02 Dec 22 nicklas 190           <li><span id="num-importable-new">?</span> new Specimen items are created
7230 02 Jun 23 nicklas 191           <li><span id="num-importable-merge">?</span> existing Specimen are merged with data from JSON
6924 02 Dec 22 nicklas 192           <li><span id="num-no-json-files">?</span> existing NoSpecimen with no JSON match
6929 02 Dec 22 nicklas 193           <li><span id="num-stray-fastq-files">?</span> FASTQ files could not be matched to any JSON file
6899 29 Nov 22 nicklas 194         </div>
6901 29 Nov 22 nicklas 195         <div>
6901 29 Nov 22 nicklas 196           <table id="importItemsTable">
6901 29 Nov 22 nicklas 197           <thead class="bg-filled-100">
6901 29 Nov 22 nicklas 198             <tr>
6901 29 Nov 22 nicklas 199             <th>##</th>
6901 29 Nov 22 nicklas 200             <th class="dottedleft">Item</th>
6901 29 Nov 22 nicklas 201             <th class="dottedleft">Case</th>
6901 29 Nov 22 nicklas 202             <th class="dottedleft">JSON file</th>
6901 29 Nov 22 nicklas 203             <th>FlowCell</th>
6901 29 Nov 22 nicklas 204             <th>Reads</th>
6901 29 Nov 22 nicklas 205             <th>FASTQ files</th>
6901 29 Nov 22 nicklas 206             <th class="icon"></th>
6901 29 Nov 22 nicklas 207             <th class="valid dottedleft" style="text-align: left;">Messages/Actions
6901 29 Nov 22 nicklas 208               <label><input type="checkbox" id="lessMessages" name="lessMessages" 
6901 29 Nov 22 nicklas 209                 title="Show less of warnings and error messages">Show less</label>
6901 29 Nov 22 nicklas 210             </th>
6901 29 Nov 22 nicklas 211             </tr>
6901 29 Nov 22 nicklas 212           </thead>
6901 29 Nov 22 nicklas 213           <tbody id="itemTable">
6901 29 Nov 22 nicklas 214           </tbody>
6901 29 Nov 22 nicklas 215           </table>
6901 29 Nov 22 nicklas 216         </div>
6178 23 Mar 21 nicklas 217       </div>
6178 23 Mar 21 nicklas 218     </div>
6178 23 Mar 21 nicklas 219   
6178 23 Mar 21 nicklas 220     <div class="step" id="step-2">
6178 23 Mar 21 nicklas 221       <div class="step-no">2</div>
6212 14 Apr 21 nicklas 222       <div class="step-title">Import options</div>
6178 23 Mar 21 nicklas 223       <div class="step-content">
6178 23 Mar 21 nicklas 224   
6178 23 Mar 21 nicklas 225         <table class="step-form">
6178 23 Mar 21 nicklas 226         <tbody>
6211 14 Apr 21 nicklas 227           <tr>
6212 14 Apr 21 nicklas 228             <td class="prompt">Operator</td>
6212 14 Apr 21 nicklas 229             <td class="input">
6212 14 Apr 21 nicklas 230               <select name="operator" id="operator">
6212 14 Apr 21 nicklas 231                 <option value="CMD">CMD
6212 14 Apr 21 nicklas 232                 <option value="">- Use JSON -
6212 14 Apr 21 nicklas 233               </option>
6212 14 Apr 21 nicklas 234             </td>
6212 14 Apr 21 nicklas 235             <td class="status" id="operator.status"></td>
6212 14 Apr 21 nicklas 236             <td class="help">
6212 14 Apr 21 nicklas 237               <span id="operator.message" class="message"></span>
6212 14 Apr 21 nicklas 238               The external operator. If the <i>Use JSON</i> option is selected 
6212 14 Apr 21 nicklas 239               the operator information is taken from the JSON file.
6212 14 Apr 21 nicklas 240             </td>
6212 14 Apr 21 nicklas 241           </tr>
6212 14 Apr 21 nicklas 242         </tbody>
6212 14 Apr 21 nicklas 243         <tbody>
6212 14 Apr 21 nicklas 244           <tr class="section-header">
6212 14 Apr 21 nicklas 245             <td colspan="4">FASTQ Import</td>
6212 14 Apr 21 nicklas 246           </tr>
6212 14 Apr 21 nicklas 247           <tr>
6211 14 Apr 21 nicklas 248             <td class="subprompt">Auto-analyze</td>
6211 14 Apr 21 nicklas 249             <td class="input">
6211 14 Apr 21 nicklas 250               <label><input type="radio" name="autoAnalyze" id="autoAnalyzeYes" disabled>Yes</label>
6211 14 Apr 21 nicklas 251               <label><input type="radio" name="autoAnalyze" id="autoAnalyzeNo" disabled>No</label>
6211 14 Apr 21 nicklas 252             </td>
6211 14 Apr 21 nicklas 253             <td class="status" id="autoAnalyze.status"></td>
6211 14 Apr 21 nicklas 254             <td class="help">
6211 14 Apr 21 nicklas 255               <span id="autoAnalyze.message" class="message"></span>
6211 14 Apr 21 nicklas 256               If the auto-analyze option is enabled, Reggie will automatically start
6211 14 Apr 21 nicklas 257               importing the FASTQ files after a successful JSON import.
6211 14 Apr 21 nicklas 258             </td>
6211 14 Apr 21 nicklas 259           </tr>
6211 14 Apr 21 nicklas 260           <tr>
6211 14 Apr 21 nicklas 261             <td class="subprompt">Protocol</td>
6211 14 Apr 21 nicklas 262             <td class="input">
6211 14 Apr 21 nicklas 263               <select name="mergeProtocol" id="mergeProtocol" disabled></select>
6211 14 Apr 21 nicklas 264             </td>
6211 14 Apr 21 nicklas 265             <td class="status" id="mergeProtocol.status"></td>
6211 14 Apr 21 nicklas 266             <td class="help">
6211 14 Apr 21 nicklas 267               <span id="mergeProtocol.message" class="message"></span>
6211 14 Apr 21 nicklas 268               Select the protocol used for merging.
6211 14 Apr 21 nicklas 269             </td>
6211 14 Apr 21 nicklas 270           </tr>
6211 14 Apr 21 nicklas 271           <tr>
6211 14 Apr 21 nicklas 272             <td class="subprompt">Software</td>
6211 14 Apr 21 nicklas 273             <td class="input">
6211 14 Apr 21 nicklas 274               <select name="mergeSoftware" id="mergeSoftware" disabled></select>
6211 14 Apr 21 nicklas 275             </td>
6211 14 Apr 21 nicklas 276             <td class="status" id="mergeSoftware.status"></td>
6211 14 Apr 21 nicklas 277             <td class="help">
6211 14 Apr 21 nicklas 278               <span id="mergeSoftware.message" class="message"></span>
6211 14 Apr 21 nicklas 279               Select the software to use for merging the FASTQ files.
6211 14 Apr 21 nicklas 280             </td>
6211 14 Apr 21 nicklas 281           </tr>
6211 14 Apr 21 nicklas 282         </tbody>
6211 14 Apr 21 nicklas 283         <tbody>
6178 23 Mar 21 nicklas 284           <tr class="section-header">
6735 09 May 22 nicklas 285             <td colspan="4">Job scheduler</td>
6178 23 Mar 21 nicklas 286           </tr>
6178 23 Mar 21 nicklas 287           <tr>
6735 09 May 22 nicklas 288             <td class="subprompt">Cluster</td>
6178 23 Mar 21 nicklas 289             <td class="input">
6211 14 Apr 21 nicklas 290               <select name="clusters" id="clusters" class="required" disabled></select>
6211 14 Apr 21 nicklas 291             </td>
6178 23 Mar 21 nicklas 292             <td class="status" id="clusters.status"></td>
6178 23 Mar 21 nicklas 293             <td class="help">
6178 23 Mar 21 nicklas 294               <span id="clusters.message" class="message"></span>
6211 14 Apr 21 nicklas 295               Select the cluster to use for running the analysis.
6178 23 Mar 21 nicklas 296             </td>
6178 23 Mar 21 nicklas 297           </tr>
6980 17 Jan 23 nicklas 298           <tr id="job-priority" style="display: none;">
6178 23 Mar 21 nicklas 299             <td class="subprompt">Job priority</td>
6178 23 Mar 21 nicklas 300             <td class="input">
6211 14 Apr 21 nicklas 301               <select name="priority" id="priority" disabled></select>
6178 23 Mar 21 nicklas 302             </td>
6178 23 Mar 21 nicklas 303             <td class="status" id="priority.status"></td>
6178 23 Mar 21 nicklas 304             <td class="help">
6178 23 Mar 21 nicklas 305               <span id="priority.message" class="message"></span>
6211 14 Apr 21 nicklas 306               Select the priority of the analysis jobs.
6178 23 Mar 21 nicklas 307             </td>
6178 23 Mar 21 nicklas 308           </tr>
6980 17 Jan 23 nicklas 309           <tr id="job-partition" style="display: none;">
6980 17 Jan 23 nicklas 310             <td class="subprompt">Job partition</td>
6980 17 Jan 23 nicklas 311             <td class="input">
6980 17 Jan 23 nicklas 312               <select name="partition" id="partition"></select>
6980 17 Jan 23 nicklas 313             </td>
6980 17 Jan 23 nicklas 314             <td class="status" id="partition.status"></td>
6980 17 Jan 23 nicklas 315             <td class="help">
6980 17 Jan 23 nicklas 316               <span id="partition.message" class="message"></span>
6980 17 Jan 23 nicklas 317               Select the partition/queue that the job should be submitted to.
6980 17 Jan 23 nicklas 318             </td>
6980 17 Jan 23 nicklas 319           </tr>
6178 23 Mar 21 nicklas 320           <tr>
6178 23 Mar 21 nicklas 321             <td class="subprompt">Auto-confirm</td>
6211 14 Apr 21 nicklas 322             <td class="input"><input type="checkbox" name="autoConfirm" checked disabled></td>
6178 23 Mar 21 nicklas 323             <td class="status" id="autoConfirm.status"></td>
6178 23 Mar 21 nicklas 324             <td class="help">
6178 23 Mar 21 nicklas 325               <span id="autoConfirm.message" class="message"></span>
6211 14 Apr 21 nicklas 326               If the FASTQ analysis is successful, with at least 10M reads 
6211 14 Apr 21 nicklas 327               after trimmomatic and valid fragment size values, it is
6211 14 Apr 21 nicklas 328               automatically confirmed and alignment is started.
6178 23 Mar 21 nicklas 329             </td>
6178 23 Mar 21 nicklas 330           </tr>
6178 23 Mar 21 nicklas 331           <tr>
6178 23 Mar 21 nicklas 332             <td class="subprompt">Debug</td>
6211 14 Apr 21 nicklas 333             <td class="input"><input type="checkbox" name="debug" disabled></td>
6178 23 Mar 21 nicklas 334             <td class="status" id="debug.status"></td>
6178 23 Mar 21 nicklas 335             <td class="help">
6178 23 Mar 21 nicklas 336               <span id="debug.message" class="message"></span>
6211 14 Apr 21 nicklas 337               When running in debug mode only part of the sequenced data is used and
6211 14 Apr 21 nicklas 338               temporary files are not removed from the cluster nodes.
6178 23 Mar 21 nicklas 339             </td>
6178 23 Mar 21 nicklas 340           </tr>
6178 23 Mar 21 nicklas 341         </tbody>
6178 23 Mar 21 nicklas 342         </table>
6178 23 Mar 21 nicklas 343       </div>
6178 23 Mar 21 nicklas 344     </div>
6178 23 Mar 21 nicklas 345   
6178 23 Mar 21 nicklas 346     <div id="wizard-status"></div>
6178 23 Mar 21 nicklas 347     <div id="wizard-progress"></div>
6178 23 Mar 21 nicklas 348
6178 23 Mar 21 nicklas 349     <table class="navigation" id="navigation">
6178 23 Mar 21 nicklas 350     <tr>
6178 23 Mar 21 nicklas 351       <td><base:button id="gocancel" title="Cancel" /></td>
6178 23 Mar 21 nicklas 352       <td><base:button id="gonext" title="Next" image="<%=home+"/images/gonext.png"%>" /></td>
6178 23 Mar 21 nicklas 353       <td><base:button id="goregister" title="Register" image="<%=home+"/images/gonext.png"%>" /></td>
6178 23 Mar 21 nicklas 354       <td><base:button id="gorestart" title="Restart" image="<%=home+"/images/goback.png"%>" /></td>
6178 23 Mar 21 nicklas 355       <td id="gonext-message" class="message"></td>
6178 23 Mar 21 nicklas 356     </tr>
6178 23 Mar 21 nicklas 357     </table>
6178 23 Mar 21 nicklas 358   </form>
6178 23 Mar 21 nicklas 359   </div>
6178 23 Mar 21 nicklas 360   
6178 23 Mar 21 nicklas 361 </base:body>
6178 23 Mar 21 nicklas 362 </base:page>
6178 23 Mar 21 nicklas 363 <%
6178 23 Mar 21 nicklas 364 }
6178 23 Mar 21 nicklas 365 finally
6178 23 Mar 21 nicklas 366 {
6178 23 Mar 21 nicklas 367   if (dc != null) dc.close();
6178 23 Mar 21 nicklas 368 }
6178 23 Mar 21 nicklas 369 %>