www/views/rawbioassays/edit_rawbioassay.jsp

Code
Comments
Other
Rev Date Author Line
1672 30 Nov 05 nicklas 1 <%-- $Id$
1672 30 Nov 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
3675 16 Aug 07 jari 5   Copyright (C) 2007 Nicklas Nordborg
1672 30 Nov 05 nicklas 6
2304 22 May 06 jari 7   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 8   Available at http://base.thep.lu.se/
1672 30 Nov 05 nicklas 9
1672 30 Nov 05 nicklas 10   BASE is free software; you can redistribute it and/or
1672 30 Nov 05 nicklas 11   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 12   as published by the Free Software Foundation; either version 3
1672 30 Nov 05 nicklas 13   of the License, or (at your option) any later version.
1672 30 Nov 05 nicklas 14
1672 30 Nov 05 nicklas 15   BASE is distributed in the hope that it will be useful,
1672 30 Nov 05 nicklas 16   but WITHOUT ANY WARRANTY; without even the implied warranty of
1672 30 Nov 05 nicklas 17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1672 30 Nov 05 nicklas 18   GNU General Public License for more details.
1672 30 Nov 05 nicklas 19
1672 30 Nov 05 nicklas 20   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 21   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1672 30 Nov 05 nicklas 22   ------------------------------------------------------------------
1672 30 Nov 05 nicklas 23
1672 30 Nov 05 nicklas 24
1672 30 Nov 05 nicklas 25   @author Nicklas
1672 30 Nov 05 nicklas 26   @version 2.0
1672 30 Nov 05 nicklas 27 --%>
5426 24 Sep 10 nicklas 28 <%@ page pageEncoding="UTF-8" session="false"
1672 30 Nov 05 nicklas 29   import="net.sf.basedb.core.SessionControl"
1672 30 Nov 05 nicklas 30   import="net.sf.basedb.core.DbControl"
1672 30 Nov 05 nicklas 31   import="net.sf.basedb.core.Item"
1765 13 Jan 06 nicklas 32   import="net.sf.basedb.core.ItemContext"
1672 30 Nov 05 nicklas 33   import="net.sf.basedb.core.SystemItems"
1672 30 Nov 05 nicklas 34   import="net.sf.basedb.core.Permission"
1672 30 Nov 05 nicklas 35   import="net.sf.basedb.core.RawBioAssay"
3820 12 Oct 07 nicklas 36   import="net.sf.basedb.core.Platform"
3820 12 Oct 07 nicklas 37   import="net.sf.basedb.core.PlatformVariant"
1672 30 Nov 05 nicklas 38   import="net.sf.basedb.core.Protocol"
2949 24 Nov 06 martin 39   import="net.sf.basedb.core.Project"
1672 30 Nov 05 nicklas 40   import="net.sf.basedb.core.Software"
1672 30 Nov 05 nicklas 41   import="net.sf.basedb.core.ArrayDesign"
5685 04 Aug 11 nicklas 42   import="net.sf.basedb.core.Extract"
5685 04 Aug 11 nicklas 43   import="net.sf.basedb.core.DerivedBioAssay"
5650 01 Jun 11 nicklas 44   import="net.sf.basedb.core.ItemSubtype"
1672 30 Nov 05 nicklas 45   import="net.sf.basedb.core.File"
1672 30 Nov 05 nicklas 46   import="net.sf.basedb.core.RawDataType"
1672 30 Nov 05 nicklas 47   import="net.sf.basedb.core.RawDataTypes"
1672 30 Nov 05 nicklas 48   import="net.sf.basedb.core.ItemQuery"
1672 30 Nov 05 nicklas 49   import="net.sf.basedb.core.ItemResultList"
1672 30 Nov 05 nicklas 50   import="net.sf.basedb.core.PermissionDeniedException"
1672 30 Nov 05 nicklas 51   import="net.sf.basedb.core.BaseException"
3820 12 Oct 07 nicklas 52   import="net.sf.basedb.core.query.Orders"
3820 12 Oct 07 nicklas 53   import="net.sf.basedb.core.query.Hql"
6314 02 Sep 13 nicklas 54   import="net.sf.basedb.core.query.Restrictions"
1672 30 Nov 05 nicklas 55   import="net.sf.basedb.clients.web.Base"
1672 30 Nov 05 nicklas 56   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 57   import="net.sf.basedb.util.Values"
5501 18 Nov 10 nicklas 58   import="net.sf.basedb.core.Include"
5501 18 Nov 10 nicklas 59   import="net.sf.basedb.core.plugin.GuiContext"
5501 18 Nov 10 nicklas 60   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5501 18 Nov 10 nicklas 61   import="net.sf.basedb.clients.web.extensions.JspContext"
5501 18 Nov 10 nicklas 62   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 63   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5501 18 Nov 10 nicklas 64   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1672 30 Nov 05 nicklas 65   import="java.util.List"
1672 30 Nov 05 nicklas 66   import="java.util.Set"
1672 30 Nov 05 nicklas 67   import="java.util.HashSet"
1672 30 Nov 05 nicklas 68 %>
1672 30 Nov 05 nicklas 69 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1672 30 Nov 05 nicklas 70 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6143 20 Sep 12 nicklas 71 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1672 30 Nov 05 nicklas 72 <%
1672 30 Nov 05 nicklas 73 final Item itemType = Item.RAWBIOASSAY;
1765 13 Jan 06 nicklas 74 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1765 13 Jan 06 nicklas 75 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
3859 18 Oct 07 nicklas 76 final String tabId = Values.getString(request.getParameter("tab"), null);
1765 13 Jan 06 nicklas 77 final int itemId = cc.getId();
1672 30 Nov 05 nicklas 78 final String ID = sc.getId();
1672 30 Nov 05 nicklas 79 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 80 final DbControl dc = sc.newDbControl(":Edit "+itemType);
1672 30 Nov 05 nicklas 81 try
1672 30 Nov 05 nicklas 82 {
1672 30 Nov 05 nicklas 83   String title = null;
1672 30 Nov 05 nicklas 84   RawBioAssay rawBioAssay = null;
2413 22 Jun 06 nicklas 85   String name = null;
3820 12 Oct 07 nicklas 86   boolean hasDbSpots = false;
3820 12 Oct 07 nicklas 87
3820 12 Oct 07 nicklas 88   boolean deniedPlatform = false;
3820 12 Oct 07 nicklas 89   Platform currentPlatform = null;
5687 09 Aug 11 nicklas 90   List<Platform> defaultPlatforms = null;
3820 12 Oct 07 nicklas 91   PlatformVariant currentVariant = null;
5687 09 Aug 11 nicklas 92   List<PlatformVariant> defaultVariants = null;
3820 12 Oct 07 nicklas 93   
5685 04 Aug 11 nicklas 94   boolean readCurrentBioAssay = true;
5685 04 Aug 11 nicklas 95   DerivedBioAssay currentBioAssay = null;
5685 04 Aug 11 nicklas 96   boolean readCurrentExtract = true;
5685 04 Aug 11 nicklas 97   Extract currentExtract = null;
1672 30 Nov 05 nicklas 98   boolean readCurrentProtocol = true;
1672 30 Nov 05 nicklas 99   Protocol currentProtocol = null;
5687 09 Aug 11 nicklas 100   List<Protocol> defaultProtocols = null;
1672 30 Nov 05 nicklas 101   boolean readCurrentSoftware = true;
1672 30 Nov 05 nicklas 102   Software currentSoftware = null;
5687 09 Aug 11 nicklas 103   List<Software> defaultSoftware = null;
1672 30 Nov 05 nicklas 104   boolean readCurrentArrayDesign = true;
1672 30 Nov 05 nicklas 105   ArrayDesign currentArrayDesign = null;
5687 09 Aug 11 nicklas 106   List<ArrayDesign> defaultArrayDesigns = null;
1700 09 Dec 05 nicklas 107   RawDataType currentRawDataType = null;
2949 24 Nov 06 martin 108   RawDataType defaultRawDataType = null;
1672 30 Nov 05 nicklas 109
2596 25 Aug 06 nicklas 110   // Load recently used items
7605 26 Feb 19 nicklas 111   List<Protocol> recentProtocols = cc.getRecent(dc, Item.PROTOCOL);
7605 26 Feb 19 nicklas 112   List<Software> recentSoftware = cc.getRecent(dc, Item.SOFTWARE);
7605 26 Feb 19 nicklas 113   List<ArrayDesign> recentArrayDesigns = cc.getRecent(dc, Item.ARRAYDESIGN);
7605 26 Feb 19 nicklas 114   List<File> recentFiles = cc.getRecent(dc, Item.FILE);
7605 26 Feb 19 nicklas 115   List<DerivedBioAssay> recentBioAssays = cc.getRecent(dc, Item.DERIVEDBIOASSAY);
7605 26 Feb 19 nicklas 116   List<Extract> recentExtracts = cc.getRecent(dc, Item.EXTRACT);
2596 25 Aug 06 nicklas 117   
2949 24 Nov 06 martin 118   int activeProjectId = sc.getActiveProjectId();
2949 24 Nov 06 martin 119   if (activeProjectId > 0)
2949 24 Nov 06 martin 120   {
2949 24 Nov 06 martin 121     Project activeProject = Project.getById(dc, activeProjectId);
2949 24 Nov 06 martin 122     try
2949 24 Nov 06 martin 123     {
7605 26 Feb 19 nicklas 124       defaultProtocols = activeProject.findDefaultItems(dc, 
5650 01 Jun 11 nicklas 125           ItemSubtype.getById(dc, SystemItems.getId(Protocol.FEATURE_EXTRACTION)), false);
2949 24 Nov 06 martin 126     }
2949 24 Nov 06 martin 127     catch (PermissionDeniedException pdex)
5687 09 Aug 11 nicklas 128     {}
2949 24 Nov 06 martin 129     try
2949 24 Nov 06 martin 130     {
7605 26 Feb 19 nicklas 131       defaultSoftware = activeProject.findDefaultItems(dc, 
5650 01 Jun 11 nicklas 132           ItemSubtype.getById(dc, SystemItems.getId(Software.FEATURE_EXTRACTION)), false);
2949 24 Nov 06 martin 133     }
2949 24 Nov 06 martin 134     catch (PermissionDeniedException pdex)
5687 09 Aug 11 nicklas 135     {}
2949 24 Nov 06 martin 136     try
2949 24 Nov 06 martin 137     {
7605 26 Feb 19 nicklas 138       defaultArrayDesigns = activeProject.findDefaultItems(dc, Item.ARRAYDESIGN, true);
2949 24 Nov 06 martin 139     }
2949 24 Nov 06 martin 140     catch (PermissionDeniedException pdex)
5687 09 Aug 11 nicklas 141     {}
4029 03 Dec 07 nicklas 142     try
4029 03 Dec 07 nicklas 143     {
7605 26 Feb 19 nicklas 144       defaultPlatforms = activeProject.findDefaultItems(dc, Item.PLATFORM, true);
4029 03 Dec 07 nicklas 145     }
4029 03 Dec 07 nicklas 146     catch (PermissionDeniedException pdex)
4029 03 Dec 07 nicklas 147     {}
4029 03 Dec 07 nicklas 148     try
4029 03 Dec 07 nicklas 149     {
7605 26 Feb 19 nicklas 150       defaultVariants = activeProject.findDefaultItems(dc, Item.PLATFORMVARIANT, true);
4029 03 Dec 07 nicklas 151     }
4029 03 Dec 07 nicklas 152     catch (PermissionDeniedException pdex)
4029 03 Dec 07 nicklas 153     {}
2949 24 Nov 06 martin 154     defaultRawDataType = activeProject.getDefaultRawDataType();
2949 24 Nov 06 martin 155   }
1765 13 Jan 06 nicklas 156   if (itemId == 0)
1672 30 Nov 05 nicklas 157   {
1672 30 Nov 05 nicklas 158     title = "Create raw bioassay";
2596 25 Aug 06 nicklas 159     cc.removeObject("item");
3820 12 Oct 07 nicklas 160     
3820 12 Oct 07 nicklas 161     int currentPlatformId = Values.getInt(cc.getPropertyValue("platform"), 0);
3820 12 Oct 07 nicklas 162     if (currentPlatformId == 0)
3820 12 Oct 07 nicklas 163     {
3820 12 Oct 07 nicklas 164       currentPlatformId = Values.getInt(cc.getRecent(Item.PLATFORM.name(), 0), 0);
3820 12 Oct 07 nicklas 165     }
3909 06 Nov 07 nicklas 166     int currentVariantId = Values.getInt(cc.getRecent(Item.PLATFORMVARIANT.name(), 0), 0);
3820 12 Oct 07 nicklas 167     
3909 06 Nov 07 nicklas 168     try
3909 06 Nov 07 nicklas 169     {
3909 06 Nov 07 nicklas 170       if (currentVariantId != 0) currentVariant = PlatformVariant.getById(dc, currentVariantId);
3909 06 Nov 07 nicklas 171       if (currentPlatformId != 0) currentPlatform = Platform.getById(dc, currentPlatformId);
3909 06 Nov 07 nicklas 172     }
3909 06 Nov 07 nicklas 173     catch (Throwable t)
3909 06 Nov 07 nicklas 174     {}
7703 11 Apr 19 nicklas 175     if (currentPlatform == null && currentVariant == null)
5687 09 Aug 11 nicklas 176     {
7703 11 Apr 19 nicklas 177       if (defaultVariants != null && defaultVariants.size() > 0)
7703 11 Apr 19 nicklas 178       {
7703 11 Apr 19 nicklas 179         currentVariant = defaultVariants.get(0);
7703 11 Apr 19 nicklas 180         currentPlatform = currentVariant.getPlatform();
7703 11 Apr 19 nicklas 181       }
7703 11 Apr 19 nicklas 182       else if (defaultPlatforms != null && defaultPlatforms.size() > 0)
7703 11 Apr 19 nicklas 183       {
7703 11 Apr 19 nicklas 184         currentPlatform = defaultPlatforms.get(0);
7703 11 Apr 19 nicklas 185       }
5687 09 Aug 11 nicklas 186     }
3909 06 Nov 07 nicklas 187     
1777 17 Jan 06 nicklas 188     currentRawDataType = RawDataTypes.getRawDataType(cc.getPropertyValue("rawDataType"));
2596 25 Aug 06 nicklas 189     if (currentRawDataType == null)
2596 25 Aug 06 nicklas 190     {
2597 25 Aug 06 nicklas 191       currentRawDataType = RawDataTypes.getRawDataType(cc.getRecent("RawDataType", 0));
2596 25 Aug 06 nicklas 192     }
4029 03 Dec 07 nicklas 193     if (currentRawDataType == null) currentRawDataType = defaultRawDataType;
2413 22 Jun 06 nicklas 194
5685 04 Aug 11 nicklas 195     
5685 04 Aug 11 nicklas 196     int bioAssayId = Values.getInt(request.getParameter("bioassay_id"));
5685 04 Aug 11 nicklas 197     if (bioAssayId != 0)
5685 04 Aug 11 nicklas 198     {
5685 04 Aug 11 nicklas 199       currentBioAssay = DerivedBioAssay.getById(dc, bioAssayId);
5685 04 Aug 11 nicklas 200     }
5750 20 Sep 11 nicklas 201     else if (cc.getPropertyFilter("parentBioAssay.name") != null)
5685 04 Aug 11 nicklas 202     {
5750 20 Sep 11 nicklas 203       currentBioAssay = Base.getFirstMatching(dc, DerivedBioAssay.getQuery(), "name", cc.getPropertyFilter("parentBioAssay.name"));
5685 04 Aug 11 nicklas 204     }
5750 20 Sep 11 nicklas 205     
5750 20 Sep 11 nicklas 206     int extractId = Values.getInt(request.getParameter("extract_id"));
5750 20 Sep 11 nicklas 207     if (extractId != 0)
5750 20 Sep 11 nicklas 208     {
5750 20 Sep 11 nicklas 209       currentExtract = Extract.getById(dc, extractId);
5750 20 Sep 11 nicklas 210     }
5750 20 Sep 11 nicklas 211     else if (cc.getPropertyFilter("parentExtract.name") != null)
5750 20 Sep 11 nicklas 212     {
5750 20 Sep 11 nicklas 213       currentExtract = Base.getFirstMatching(dc, Extract.getQuery(), "name", cc.getPropertyFilter("parentExtract.name"));
5750 20 Sep 11 nicklas 214     }
5685 04 Aug 11 nicklas 215
5685 04 Aug 11 nicklas 216     if (currentBioAssay != null)
5685 04 Aug 11 nicklas 217     {
5685 04 Aug 11 nicklas 218       name = currentBioAssay.getName() + ".r" + (currentBioAssay.countRawBioAssays() + 1);
5685 04 Aug 11 nicklas 219     }
5685 04 Aug 11 nicklas 220     else
5685 04 Aug 11 nicklas 221     {
5685 04 Aug 11 nicklas 222       name = Values.getString(cc.getPropertyValue("name"), "New raw bioassay");
5685 04 Aug 11 nicklas 223     }
5685 04 Aug 11 nicklas 224
1777 17 Jan 06 nicklas 225     if (cc.getPropertyFilter("protocol.name") != null)
1777 17 Jan 06 nicklas 226     {
1777 17 Jan 06 nicklas 227       currentProtocol = Base.getFirstMatching(dc, Protocol.getQuery(), "name", cc.getPropertyFilter("protocol.name"));
1777 17 Jan 06 nicklas 228     }
2596 25 Aug 06 nicklas 229     
1777 17 Jan 06 nicklas 230     if (cc.getPropertyFilter("software.name") != null)
1777 17 Jan 06 nicklas 231     {
1777 17 Jan 06 nicklas 232       currentSoftware = Base.getFirstMatching(dc, Software.getQuery(), "name", cc.getPropertyFilter("software.name"));
1777 17 Jan 06 nicklas 233     }
5685 04 Aug 11 nicklas 234
5685 04 Aug 11 nicklas 235     if (currentBioAssay != null)
1777 17 Jan 06 nicklas 236     {
2413 22 Jun 06 nicklas 237       try
2413 22 Jun 06 nicklas 238       {
5685 04 Aug 11 nicklas 239         currentArrayDesign = currentBioAssay.getArrayDesign();
2413 22 Jun 06 nicklas 240       }
2413 22 Jun 06 nicklas 241       catch (PermissionDeniedException ex)
2413 22 Jun 06 nicklas 242       {}
5685 04 Aug 11 nicklas 243       try
5685 04 Aug 11 nicklas 244       {
5685 04 Aug 11 nicklas 245         currentExtract = currentBioAssay.getExtract();
5685 04 Aug 11 nicklas 246       }
5685 04 Aug 11 nicklas 247       catch (PermissionDeniedException ex)
5685 04 Aug 11 nicklas 248       {}
2413 22 Jun 06 nicklas 249     }
2413 22 Jun 06 nicklas 250     if (currentArrayDesign == null && cc.getPropertyFilter("arrayDesign.name") != null)
2413 22 Jun 06 nicklas 251     {
1777 17 Jan 06 nicklas 252       currentArrayDesign = Base.getFirstMatching(dc, ArrayDesign.getQuery(), "name", cc.getPropertyFilter("arrayDesign.name"));
4029 03 Dec 07 nicklas 253     }
1672 30 Nov 05 nicklas 254   }
1672 30 Nov 05 nicklas 255   else
1672 30 Nov 05 nicklas 256   {
1765 13 Jan 06 nicklas 257     rawBioAssay = RawBioAssay.getById(dc, itemId);
3820 12 Oct 07 nicklas 258     rawBioAssay.checkPermission(Permission.WRITE);
3820 12 Oct 07 nicklas 259     hasDbSpots = rawBioAssay.getNumDbSpots() > 0;
1765 13 Jan 06 nicklas 260     cc.setObject("item", rawBioAssay);
2420 22 Jun 06 nicklas 261     name = rawBioAssay.getName();
4711 18 Dec 08 nicklas 262     try
4711 18 Dec 08 nicklas 263     {
4711 18 Dec 08 nicklas 264       currentRawDataType = rawBioAssay.getRawDataType();
4711 18 Dec 08 nicklas 265     }
4711 18 Dec 08 nicklas 266     catch (Throwable t)
4711 18 Dec 08 nicklas 267     {}
1672 30 Nov 05 nicklas 268     title = "Edit raw bioassay -- " + HTML.encodeTags(rawBioAssay.getName());
2392 16 Jun 06 nicklas 269     
3820 12 Oct 07 nicklas 270     try
2392 16 Jun 06 nicklas 271     {
3820 12 Oct 07 nicklas 272       currentPlatform = rawBioAssay.getPlatform();
3820 12 Oct 07 nicklas 273       currentVariant = rawBioAssay.getVariant();
2392 16 Jun 06 nicklas 274     }
3820 12 Oct 07 nicklas 275     catch (PermissionDeniedException ex)
3820 12 Oct 07 nicklas 276     {
3820 12 Oct 07 nicklas 277       deniedPlatform = true;
3820 12 Oct 07 nicklas 278     }
2392 16 Jun 06 nicklas 279     
1672 30 Nov 05 nicklas 280     try
1672 30 Nov 05 nicklas 281     {
5685 04 Aug 11 nicklas 282       currentBioAssay = rawBioAssay.getParentBioAssay();
5685 04 Aug 11 nicklas 283     }
5685 04 Aug 11 nicklas 284     catch (PermissionDeniedException ex)
5685 04 Aug 11 nicklas 285     {
5685 04 Aug 11 nicklas 286       readCurrentBioAssay = false;
5685 04 Aug 11 nicklas 287     }
5685 04 Aug 11 nicklas 288     try
5685 04 Aug 11 nicklas 289     {
5685 04 Aug 11 nicklas 290       currentExtract = rawBioAssay.getParentExtract();
5685 04 Aug 11 nicklas 291     }
5685 04 Aug 11 nicklas 292     catch (PermissionDeniedException ex)
5685 04 Aug 11 nicklas 293     {
5685 04 Aug 11 nicklas 294       readCurrentExtract = false;
5685 04 Aug 11 nicklas 295     }
5685 04 Aug 11 nicklas 296     try
5685 04 Aug 11 nicklas 297     {
1672 30 Nov 05 nicklas 298       currentProtocol = rawBioAssay.getProtocol();
1672 30 Nov 05 nicklas 299     }
1672 30 Nov 05 nicklas 300     catch (PermissionDeniedException ex)
1672 30 Nov 05 nicklas 301     {
1672 30 Nov 05 nicklas 302       readCurrentProtocol = false;
1672 30 Nov 05 nicklas 303     }
1672 30 Nov 05 nicklas 304     try
1672 30 Nov 05 nicklas 305     {
1672 30 Nov 05 nicklas 306       currentSoftware = rawBioAssay.getSoftware();
1672 30 Nov 05 nicklas 307     }
1672 30 Nov 05 nicklas 308     catch (PermissionDeniedException ex)
1672 30 Nov 05 nicklas 309     {
1672 30 Nov 05 nicklas 310       readCurrentSoftware = false;
1672 30 Nov 05 nicklas 311     }
1672 30 Nov 05 nicklas 312     try
1672 30 Nov 05 nicklas 313     {
1672 30 Nov 05 nicklas 314       currentArrayDesign = rawBioAssay.getArrayDesign();
1672 30 Nov 05 nicklas 315     }
1672 30 Nov 05 nicklas 316     catch (PermissionDeniedException ex)
1672 30 Nov 05 nicklas 317     {
1672 30 Nov 05 nicklas 318       readCurrentArrayDesign = false;
1672 30 Nov 05 nicklas 319     }
1672 30 Nov 05 nicklas 320   }
3820 12 Oct 07 nicklas 321   
3820 12 Oct 07 nicklas 322   ItemQuery<Platform> platformQuery = Platform.getQuery();
3848 17 Oct 07 nicklas 323   platformQuery.include(Include.REMOVED, Include.NOT_REMOVED);
3820 12 Oct 07 nicklas 324   platformQuery.order(Orders.asc(Hql.property("name")));
3820 12 Oct 07 nicklas 325   platformQuery.setCacheResult(true);
3820 12 Oct 07 nicklas 326   ItemResultList<Platform> platforms = platformQuery.list(dc);
3820 12 Oct 07 nicklas 327
3820 12 Oct 07 nicklas 328   ItemQuery<PlatformVariant> variantQuery = PlatformVariant.getQuery();
3848 17 Oct 07 nicklas 329   variantQuery.include(Include.REMOVED, Include.NOT_REMOVED);
3820 12 Oct 07 nicklas 330   variantQuery.order(Orders.asc(Hql.property("name")));
6314 02 Sep 13 nicklas 331   variantQuery.restrict(Restrictions.eq(Hql.property("platform"), Hql.entityParameter("platform", Item.PLATFORM)));
3820 12 Oct 07 nicklas 332   
5501 18 Nov 10 nicklas 333   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), rawBioAssay);
7604 25 Feb 19 nicklas 334   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
1672 30 Nov 05 nicklas 335   %>
6314 02 Sep 13 nicklas 336   <base:page type="popup" title="<%=title%>" id="edit-page">
6314 02 Sep 13 nicklas 337   <base:head scripts="tabcontrol-2.js,~bioassays.js" styles="tabcontrol.css">
5501 18 Nov 10 nicklas 338     <ext:scripts context="<%=jspContext%>" />
5501 18 Nov 10 nicklas 339     <ext:stylesheets context="<%=jspContext%>" />
6314 02 Sep 13 nicklas 340     <style>
6314 02 Sep 13 nicklas 341     .platform
1672 30 Nov 05 nicklas 342     {
6314 02 Sep 13 nicklas 343       font-weight: bold;
6314 02 Sep 13 nicklas 344       margin-top: 2px;
1672 30 Nov 05 nicklas 345     }
6314 02 Sep 13 nicklas 346     </style>
1672 30 Nov 05 nicklas 347   </base:head>
6314 02 Sep 13 nicklas 348   <base:body>
5915 16 Dec 11 nicklas 349     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6314 02 Sep 13 nicklas 350     <div id="page-data" class="datacontainer"
6314 02 Sep 13 nicklas 351       data-has-db-spots="<%=hasDbSpots ? 1 : 0 %>"
6314 02 Sep 13 nicklas 352       data-feature-extraction-protocol="<%=SystemItems.getId(Protocol.FEATURE_EXTRACTION)%>"
6314 02 Sep 13 nicklas 353       data-feature-extraction-software="<%=SystemItems.getId(Software.FEATURE_EXTRACTION)%>"
6314 02 Sep 13 nicklas 354     ></div>
6162 10 Oct 12 nicklas 355     <form action="index.jsp?ID=<%=ID%>" method="post" name="rawbioassay">
1765 13 Jan 06 nicklas 356     <input type="hidden" name="cmd" value="UpdateItem">
1672 30 Nov 05 nicklas 357
5915 16 Dec 11 nicklas 358     <t:tabcontrol id="settings" 
5915 16 Dec 11 nicklas 359       subclass="content dialogtabcontrol"
5915 16 Dec 11 nicklas 360       position="bottom" active="<%=tabId%>" 
5915 16 Dec 11 nicklas 361       remember="<%=tabId == null && rawBioAssay != null%>" 
5501 18 Nov 10 nicklas 362       extensions="<%=invoker%>">
6314 02 Sep 13 nicklas 363     <t:tab id="info" title="Raw bioassay" helpid="rawbioassay.edit">
5915 16 Dec 11 nicklas 364       <table class="fullform input100">
1672 30 Nov 05 nicklas 365       <tr>
5915 16 Dec 11 nicklas 366         <th>Name</th>
6314 02 Sep 13 nicklas 367         <td><input class="text required auto-init" data-auto-init="<%=rawBioAssay == null ? "focus-select" : "focus" %>" 
6314 02 Sep 13 nicklas 368           type="text" name="name" 
2413 22 Jun 06 nicklas 369           value="<%=HTML.encodeTags(name)%>" 
5915 16 Dec 11 nicklas 370           maxlength="<%=RawBioAssay.MAX_NAME_LENGTH%>"></td>
5915 16 Dec 11 nicklas 371         <td></td>
1672 30 Nov 05 nicklas 372       </tr>
1672 30 Nov 05 nicklas 373       <tr>
5915 16 Dec 11 nicklas 374         <th>Platform</th>
1672 30 Nov 05 nicklas 375         <td>
6314 02 Sep 13 nicklas 376           <select name="platform" id="platform" class="required"
3820 12 Oct 07 nicklas 377             <%=deniedPlatform || hasDbSpots ? "disabled" : "" %>>
1672 30 Nov 05 nicklas 378           <%
3820 12 Oct 07 nicklas 379           if (deniedPlatform)
1672 30 Nov 05 nicklas 380           {
1672 30 Nov 05 nicklas 381             %>
3820 12 Oct 07 nicklas 382             <option value="-1">- denied -
1672 30 Nov 05 nicklas 383             <%
3820 12 Oct 07 nicklas 384           }
6314 02 Sep 13 nicklas 385           else
6314 02 Sep 13 nicklas 386           {
6314 02 Sep 13 nicklas 387             for (Platform p : platforms)
6314 02 Sep 13 nicklas 388             {
6314 02 Sep 13 nicklas 389               if (!p.isRemoved() || p.equals(currentPlatform))
6314 02 Sep 13 nicklas 390               {
6314 02 Sep 13 nicklas 391                 boolean selected = p.equals(currentPlatform) && currentVariant == null;
6314 02 Sep 13 nicklas 392                 RawDataType rdt = p.isFileOnly() ? null : p.getRawDataType();
6314 02 Sep 13 nicklas 393                 %>
6314 02 Sep 13 nicklas 394                 <option class="platform"
6314 02 Sep 13 nicklas 395                   value="PLATFORM:<%=p.getId()%>"
6314 02 Sep 13 nicklas 396                   data-platform="<%=p.getId()%>"
6314 02 Sep 13 nicklas 397                   data-file-only="<%=p.isFileOnly() ? 1 : 0 %>"
6314 02 Sep 13 nicklas 398                   data-raw-data-type="<%=rdt == null ? "" : rdt.getId() %>"
6314 02 Sep 13 nicklas 399                   <%=selected ? "selected" : ""%>><%=HTML.encodeTags(p.getName()) %>
6314 02 Sep 13 nicklas 400                 <%
6314 02 Sep 13 nicklas 401               }
6314 02 Sep 13 nicklas 402               variantQuery.setEntityParameter("platform", p);
6314 02 Sep 13 nicklas 403               List<PlatformVariant> variants = variantQuery.list(dc);
6314 02 Sep 13 nicklas 404               PlatformVariant lastVariant = variants.size()>0 ? variants.get(variants.size()-1) : null;
6314 02 Sep 13 nicklas 405               for (PlatformVariant v : variants)
6314 02 Sep 13 nicklas 406               {
6314 02 Sep 13 nicklas 407                 if ((!v.isRemoved() || v.equals(currentVariant)) && (!p.isRemoved() || p.equals(currentPlatform)))
6314 02 Sep 13 nicklas 408                 {
6314 02 Sep 13 nicklas 409                   boolean selected = v.equals(currentVariant);
6314 02 Sep 13 nicklas 410                   RawDataType rdt = v.isFileOnly() ? null : v.getRawDataType();
6314 02 Sep 13 nicklas 411                   String prefix = v == lastVariant ? " └ " : " ├ ";
6314 02 Sep 13 nicklas 412                   %>
6314 02 Sep 13 nicklas 413                   <option class="variant"
6314 02 Sep 13 nicklas 414                     value="VARIANT:<%=v.getId()%>"
6314 02 Sep 13 nicklas 415                     data-platform="<%=p.getId()%>"
6314 02 Sep 13 nicklas 416                     data-variant="<%=v.getId()%>"
6314 02 Sep 13 nicklas 417                     data-file-only="<%=v.isFileOnly() ? 1 : 0 %>"
6314 02 Sep 13 nicklas 418                     data-raw-data-type="<%=rdt == null ? "" : rdt.getId() %>"
6314 02 Sep 13 nicklas 419                     <%=selected ? "selected" : ""%>><%=prefix%><%=HTML.encodeTags(v.getName()) %>
6314 02 Sep 13 nicklas 420                   <%
6314 02 Sep 13 nicklas 421                 }
6314 02 Sep 13 nicklas 422               }
6314 02 Sep 13 nicklas 423             }
6314 02 Sep 13 nicklas 424           }
3820 12 Oct 07 nicklas 425           %>
3820 12 Oct 07 nicklas 426           </select>
3820 12 Oct 07 nicklas 427         </td>
5915 16 Dec 11 nicklas 428         <td></td>
3820 12 Oct 07 nicklas 429       </tr>
3820 12 Oct 07 nicklas 430       <tr>
5915 16 Dec 11 nicklas 431         <th>Raw data type</th>
3820 12 Oct 07 nicklas 432         <td>
3820 12 Oct 07 nicklas 433           <select name="rawdatatype" class="required"
3820 12 Oct 07 nicklas 434             <%=hasDbSpots ? "disabled" : "" %>>
3820 12 Oct 07 nicklas 435           <%
5574 18 Feb 11 nicklas 436           for (RawDataType rdt : RawDataTypes.getSortedRawDataTypes(new RawDataTypes.NameComparator()))
3820 12 Oct 07 nicklas 437           {
3820 12 Oct 07 nicklas 438             if (rdt.isStoredInDb())
1672 30 Nov 05 nicklas 439             {
1672 30 Nov 05 nicklas 440               String selected = rdt.equals(currentRawDataType) ? "selected" : "";
1672 30 Nov 05 nicklas 441               %>
1672 30 Nov 05 nicklas 442               <option value="<%=rdt.getId()%>" <%=selected%>><%=HTML.encodeTags(rdt.getName())%>
1672 30 Nov 05 nicklas 443               <%
1672 30 Nov 05 nicklas 444             }
1672 30 Nov 05 nicklas 445           }
1672 30 Nov 05 nicklas 446           %>
3820 12 Oct 07 nicklas 447           </select>
1672 30 Nov 05 nicklas 448         </td>
5915 16 Dec 11 nicklas 449         <td></td>
1672 30 Nov 05 nicklas 450       </tr>
2394 19 Jun 06 nicklas 451       <tr>
5915 16 Dec 11 nicklas 452         <th>Parent bioassay</th>
5685 04 Aug 11 nicklas 453         <td>
5685 04 Aug 11 nicklas 454           <base:select 
5685 04 Aug 11 nicklas 455             id="bioassay_id"
5685 04 Aug 11 nicklas 456             clazz="selectionlist"
5685 04 Aug 11 nicklas 457             required="false"
5685 04 Aug 11 nicklas 458             current="<%=currentBioAssay%>"
5685 04 Aug 11 nicklas 459             denied="<%=!readCurrentBioAssay%>"
5685 04 Aug 11 nicklas 460             recent="<%=recentBioAssays%>"
5685 04 Aug 11 nicklas 461             newitem="<%=rawBioAssay == null%>"
5750 20 Sep 11 nicklas 462             selectrecent="<%=currentExtract == null %>"
5685 04 Aug 11 nicklas 463           />
5685 04 Aug 11 nicklas 464         </td>
5915 16 Dec 11 nicklas 465         <td></td>
5685 04 Aug 11 nicklas 466       </tr>
5685 04 Aug 11 nicklas 467       <tr>
5915 16 Dec 11 nicklas 468         <th>Parent extract</th>
5685 04 Aug 11 nicklas 469         <td>
5685 04 Aug 11 nicklas 470           <base:select 
5685 04 Aug 11 nicklas 471             id="extract_id"
5685 04 Aug 11 nicklas 472             clazz="selectionlist"
5685 04 Aug 11 nicklas 473             required="false"
5685 04 Aug 11 nicklas 474             current="<%=currentExtract%>"
5685 04 Aug 11 nicklas 475             denied="<%=!readCurrentExtract%>"
5685 04 Aug 11 nicklas 476             recent="<%=recentExtracts%>"
5685 04 Aug 11 nicklas 477             newitem="<%=rawBioAssay == null%>"
5750 20 Sep 11 nicklas 478             selectrecent="false"
5685 04 Aug 11 nicklas 479           />
5685 04 Aug 11 nicklas 480         </td>
5915 16 Dec 11 nicklas 481         <td></td>
5685 04 Aug 11 nicklas 482       </tr>
5685 04 Aug 11 nicklas 483       <tr>
5915 16 Dec 11 nicklas 484         <th>Array design</th>
2394 19 Jun 06 nicklas 485         <td>
3820 12 Oct 07 nicklas 486           <base:select 
3820 12 Oct 07 nicklas 487             id="arraydesign_id"
3820 12 Oct 07 nicklas 488             clazz="selectionlist"
3820 12 Oct 07 nicklas 489             required="false"
3820 12 Oct 07 nicklas 490             current="<%=currentArrayDesign%>"
6314 02 Sep 13 nicklas 491             data-current-array-design="<%=currentArrayDesign == null ? "" : currentArrayDesign.getId() %>"
3820 12 Oct 07 nicklas 492             denied="<%=!readCurrentArrayDesign%>"
3820 12 Oct 07 nicklas 493             recent="<%=recentArrayDesigns%>"
5687 09 Aug 11 nicklas 494             defaultitems="<%=defaultArrayDesigns%>"
3820 12 Oct 07 nicklas 495             newitem="<%=rawBioAssay == null%>"
3820 12 Oct 07 nicklas 496           />
2394 19 Jun 06 nicklas 497         </td>
5915 16 Dec 11 nicklas 498         <td></td>
2394 19 Jun 06 nicklas 499       </tr>
4093 18 Jan 08 enell 500       <tr id="fiMethod" style="display: none;">
5915 16 Dec 11 nicklas 501         <th></th>
4093 18 Jan 08 enell 502         <td>
4093 18 Jan 08 enell 503         <select name="fiMethod">
4093 18 Jan 08 enell 504         <option value="">-auto- (array design decides)
4093 18 Jan 08 enell 505         <option value="COORDINATES">Coordinates
4093 18 Jan 08 enell 506         <option value="POSITION">Position
4093 18 Jan 08 enell 507         <option value="FEATURE_ID">Feature ID (*)
4093 18 Jan 08 enell 508         </select>
6314 02 Sep 13 nicklas 509         <div class="messagecontainer help">
4093 18 Jan 08 enell 510         Select a method for feature identification. <br>
4093 18 Jan 08 enell 511         (*) The Feature ID method only works if the raw data is currently
4093 18 Jan 08 enell 512         connected to an array design which has Feature ID values.
6314 02 Sep 13 nicklas 513         </div>
4093 18 Jan 08 enell 514         </td>
5915 16 Dec 11 nicklas 515         <td></td>
4093 18 Jan 08 enell 516       </tr>
1672 30 Nov 05 nicklas 517       <tr>
5915 16 Dec 11 nicklas 518         <th>Protocol</th>
1672 30 Nov 05 nicklas 519         <td>
2596 25 Aug 06 nicklas 520           <base:select 
2596 25 Aug 06 nicklas 521             id="protocol_id"
2596 25 Aug 06 nicklas 522             clazz="selectionlist"
2596 25 Aug 06 nicklas 523             required="false"
2596 25 Aug 06 nicklas 524             current="<%=currentProtocol%>"
2596 25 Aug 06 nicklas 525             denied="<%=!readCurrentProtocol%>"
2596 25 Aug 06 nicklas 526             recent="<%=recentProtocols%>"
5687 09 Aug 11 nicklas 527             defaultitems="<%=defaultProtocols%>"
2596 25 Aug 06 nicklas 528             newitem="<%=rawBioAssay == null%>"
2596 25 Aug 06 nicklas 529           />
1672 30 Nov 05 nicklas 530         </td>
5915 16 Dec 11 nicklas 531         <td></td>
1672 30 Nov 05 nicklas 532       </tr>
1672 30 Nov 05 nicklas 533       <tr>
5915 16 Dec 11 nicklas 534         <th>Software</th>
1672 30 Nov 05 nicklas 535         <td>
2596 25 Aug 06 nicklas 536           <base:select 
2596 25 Aug 06 nicklas 537             id="software_id"
2596 25 Aug 06 nicklas 538             clazz="selectionlist"
2596 25 Aug 06 nicklas 539             required="false"
2596 25 Aug 06 nicklas 540             current="<%=currentSoftware%>"
2596 25 Aug 06 nicklas 541             denied="<%=!readCurrentSoftware%>"
2596 25 Aug 06 nicklas 542             recent="<%=recentSoftware%>"
5687 09 Aug 11 nicklas 543             defaultitems="<%=defaultSoftware%>"
2596 25 Aug 06 nicklas 544             newitem="<%=rawBioAssay == null%>"
2596 25 Aug 06 nicklas 545           />
1672 30 Nov 05 nicklas 546         </td>
5915 16 Dec 11 nicklas 547         <td></td>
1672 30 Nov 05 nicklas 548       </tr>
5915 16 Dec 11 nicklas 549       <tr class="dynamic">
5915 16 Dec 11 nicklas 550         <th>Description</th>
5915 16 Dec 11 nicklas 551         <td>
6217 14 Dec 12 nicklas 552           <textarea class="text" rows="6" name="description" id="description"
1777 17 Jan 06 nicklas 553             ><%=HTML.encodeTags(rawBioAssay == null ? cc.getPropertyValue("description") : rawBioAssay.getDescription())%></textarea>
1672 30 Nov 05 nicklas 554         </td>
5915 16 Dec 11 nicklas 555         <td style="width: 20px;">
6215 13 Dec 12 nicklas 556           <base:zoom textarea="description" title="Description" />
5915 16 Dec 11 nicklas 557         </td>
1672 30 Nov 05 nicklas 558       </tr>
1672 30 Nov 05 nicklas 559       </table>
1672 30 Nov 05 nicklas 560     </t:tab>
3820 12 Oct 07 nicklas 561     
6314 02 Sep 13 nicklas 562     <t:tab id="datafiles" title="Data files" helpid="datafiles.edit">
6256 25 Mar 13 nicklas 563       <jsp:include page="../../common/datafiles/select_frameset.jsp">
6256 25 Mar 13 nicklas 564         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6256 25 Mar 13 nicklas 565         <jsp:param name="item_id" value="<%=itemId%>" />
6256 25 Mar 13 nicklas 566         <jsp:param name="ID" value="<%=ID%>" />
6256 25 Mar 13 nicklas 567       </jsp:include>
6256 25 Mar 13 nicklas 568     </t:tab>
1672 30 Nov 05 nicklas 569
6314 02 Sep 13 nicklas 570     <t:tab id="annotations" title="Annotations &amp; parameters" helpid="annotations.edit">
6254 22 Mar 13 nicklas 571       <jsp:include page="../../common/annotations/annotate_frameset.jsp">
6254 22 Mar 13 nicklas 572         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6254 22 Mar 13 nicklas 573         <jsp:param name="item_id" value="<%=itemId%>" />
6254 22 Mar 13 nicklas 574         <jsp:param name="ID" value="<%=ID%>" />
6254 22 Mar 13 nicklas 575       </jsp:include>
6254 22 Mar 13 nicklas 576     </t:tab>
1672 30 Nov 05 nicklas 577     </t:tabcontrol>
5915 16 Dec 11 nicklas 578     </form>
1672 30 Nov 05 nicklas 579
5915 16 Dec 11 nicklas 580     <div class="legend">
5946 03 Feb 12 nicklas 581       <base:icon image="required.png" />= required information
5915 16 Dec 11 nicklas 582     </div>
5915 16 Dec 11 nicklas 583
5915 16 Dec 11 nicklas 584     <base:buttongroup subclass="dialogbuttons">
6314 02 Sep 13 nicklas 585       <base:button id="btnSave" title="Save" />
6314 02 Sep 13 nicklas 586       <base:button id="close" title="Cancel" />
5915 16 Dec 11 nicklas 587     </base:buttongroup>
1672 30 Nov 05 nicklas 588   </base:body>
1672 30 Nov 05 nicklas 589   </base:page>
1672 30 Nov 05 nicklas 590   <%
1672 30 Nov 05 nicklas 591 }
1672 30 Nov 05 nicklas 592 finally
1672 30 Nov 05 nicklas 593 {
1672 30 Nov 05 nicklas 594   if (dc != null) dc.close();
1672 30 Nov 05 nicklas 595 }
1672 30 Nov 05 nicklas 596 %>