src/test/TestDataFileType.java

Code
Comments
Other
Rev Date Author Line
3783 25 Sep 07 nicklas 1 /*
3783 25 Sep 07 nicklas 2  $Id$
3783 25 Sep 07 nicklas 3
3783 25 Sep 07 nicklas 4   Copyright (C) 2007 Nicklas Nordborg
3783 25 Sep 07 nicklas 5
3783 25 Sep 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
3783 25 Sep 07 nicklas 7   Available at http://base.thep.lu.se/
3783 25 Sep 07 nicklas 8
3783 25 Sep 07 nicklas 9    BASE is free software; you can redistribute it and/or
3783 25 Sep 07 nicklas 10    modify it under the terms of the GNU General Public License
4480 05 Sep 08 jari 11    as published by the Free Software Foundation; either version 3
3783 25 Sep 07 nicklas 12    of the License, or (at your option) any later version.
3783 25 Sep 07 nicklas 13   
3783 25 Sep 07 nicklas 14    BASE is distributed in the hope that it will be useful,
3783 25 Sep 07 nicklas 15    but WITHOUT ANY WARRANTY; without even the implied warranty of
3783 25 Sep 07 nicklas 16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3783 25 Sep 07 nicklas 17    GNU General Public License for more details.
3783 25 Sep 07 nicklas 18   
3783 25 Sep 07 nicklas 19    You should have received a copy of the GNU General Public License
4514 11 Sep 08 jari 20    along with BASE. If not, see <http://www.gnu.org/licenses/>.
3783 25 Sep 07 nicklas 21 */
3783 25 Sep 07 nicklas 22
5340 10 May 10 nicklas 23 import java.util.Set;
5340 10 May 10 nicklas 24
3783 25 Sep 07 nicklas 25 import net.sf.basedb.core.BaseException;
3783 25 Sep 07 nicklas 26 import net.sf.basedb.core.DbControl;
3793 27 Sep 07 nicklas 27 import net.sf.basedb.core.DataFileType;
5630 13 May 11 nicklas 28 import net.sf.basedb.core.File;
5652 10 Jun 11 nicklas 29 import net.sf.basedb.core.FileSetMember;
5652 10 Jun 11 nicklas 30 import net.sf.basedb.core.FileStoreEnabled;
3783 25 Sep 07 nicklas 31 import net.sf.basedb.core.Item;
5340 10 May 10 nicklas 32 import net.sf.basedb.core.ItemProxy;
3783 25 Sep 07 nicklas 33 import net.sf.basedb.core.ItemResultList;
5630 13 May 11 nicklas 34 import net.sf.basedb.core.ItemSubtype;
3783 25 Sep 07 nicklas 35 import net.sf.basedb.core.Permission;
3783 25 Sep 07 nicklas 36 import net.sf.basedb.core.PlatformVariant;
3783 25 Sep 07 nicklas 37 import net.sf.basedb.core.SystemItems;
3783 25 Sep 07 nicklas 38
3793 27 Sep 07 nicklas 39 public class TestDataFileType
3783 25 Sep 07 nicklas 40 {
3783 25 Sep 07 nicklas 41
3783 25 Sep 07 nicklas 42   static boolean ok = true;
3783 25 Sep 07 nicklas 43   
3783 25 Sep 07 nicklas 44   public static void main(String[] args)
3783 25 Sep 07 nicklas 45   {
3783 25 Sep 07 nicklas 46     TestUtil.checkArgs(args);
3783 25 Sep 07 nicklas 47     TestUtil.begin();
3783 25 Sep 07 nicklas 48     ok = test_all();
3783 25 Sep 07 nicklas 49     TestUtil.stop();
3783 25 Sep 07 nicklas 50   }
3783 25 Sep 07 nicklas 51
3783 25 Sep 07 nicklas 52   static boolean test_all()
3783 25 Sep 07 nicklas 53   {
3793 27 Sep 07 nicklas 54     write("++Testing data file types");
3783 25 Sep 07 nicklas 55     write_header();
3783 25 Sep 07 nicklas 56     // Standard tests: create, load and list
3783 25 Sep 07 nicklas 57     test_load(SystemItems.getId("affymetrix.cel"));
3783 25 Sep 07 nicklas 58     
5630 13 May 11 nicklas 59     int id1 = test_create("Test file type", "test.filetype", Item.RAWBIOASSAY, SystemItems.getId(File.RAW_DATA));
3783 25 Sep 07 nicklas 60     test_list();
3783 25 Sep 07 nicklas 61
3783 25 Sep 07 nicklas 62     // Standard test: Delete
3783 25 Sep 07 nicklas 63     if (TestUtil.waitBeforeDelete()) TestUtil.waitForEnter();
3783 25 Sep 07 nicklas 64     test_delete(id1);
3793 27 Sep 07 nicklas 65     write("++Testing data file types "+(ok ? "OK" : "Failed")+"\n");
3783 25 Sep 07 nicklas 66     return ok;
3783 25 Sep 07 nicklas 67   }
3783 25 Sep 07 nicklas 68
3797 28 Sep 07 nicklas 69   static int test_create(String name, String externalId, Item itemType, int genericTypeId)
3783 25 Sep 07 nicklas 70   {
3793 27 Sep 07 nicklas 71     if (!TestUtil.hasPermission(Permission.CREATE, Item.DATAFILETYPE)) return 0;
3783 25 Sep 07 nicklas 72     int id = 0;
3783 25 Sep 07 nicklas 73     DbControl dc = null;
3783 25 Sep 07 nicklas 74     try
3783 25 Sep 07 nicklas 75     {
3783 25 Sep 07 nicklas 76       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 77       ItemSubtype genericType = genericTypeId == 0 ? null : ItemSubtype.getById(dc, genericTypeId);
3797 28 Sep 07 nicklas 78       DataFileType type = DataFileType.getNew(dc, externalId, itemType);
3793 27 Sep 07 nicklas 79       type.setGenericType(genericType);
3783 25 Sep 07 nicklas 80       type.setName(name);
3783 25 Sep 07 nicklas 81       dc.saveItem(type);
3783 25 Sep 07 nicklas 82       dc.commit();
3783 25 Sep 07 nicklas 83       id = type.getId();
3783 25 Sep 07 nicklas 84       write_item(0, type);
3793 27 Sep 07 nicklas 85       write("--Create data file type OK");
3783 25 Sep 07 nicklas 86     }
3783 25 Sep 07 nicklas 87     catch (Throwable ex)
3783 25 Sep 07 nicklas 88     {
3793 27 Sep 07 nicklas 89       write("--Create data file type FAILED");
3783 25 Sep 07 nicklas 90       ex.printStackTrace();
3783 25 Sep 07 nicklas 91       ok = false;
3783 25 Sep 07 nicklas 92     }
3783 25 Sep 07 nicklas 93     finally
3783 25 Sep 07 nicklas 94     {
3783 25 Sep 07 nicklas 95       if (dc != null) dc.close();
3783 25 Sep 07 nicklas 96     }
3783 25 Sep 07 nicklas 97     return id;
3783 25 Sep 07 nicklas 98   }
3783 25 Sep 07 nicklas 99   
3783 25 Sep 07 nicklas 100   
3783 25 Sep 07 nicklas 101   static void test_load(int id)
3783 25 Sep 07 nicklas 102   {
3783 25 Sep 07 nicklas 103     if (id == 0) return;
3783 25 Sep 07 nicklas 104     DbControl dc = null;
3783 25 Sep 07 nicklas 105     try
3783 25 Sep 07 nicklas 106     {
3783 25 Sep 07 nicklas 107       dc = TestUtil.getDbControl();
3793 27 Sep 07 nicklas 108       DataFileType type = DataFileType.getById(dc, id);
3783 25 Sep 07 nicklas 109       write_item(0, type);
3793 27 Sep 07 nicklas 110       write("--Load data file type OK");
3783 25 Sep 07 nicklas 111     }
3783 25 Sep 07 nicklas 112     catch (Throwable ex)
3783 25 Sep 07 nicklas 113     {
3793 27 Sep 07 nicklas 114       write("--Load data file type FAILED");
3783 25 Sep 07 nicklas 115       ex.printStackTrace();
3783 25 Sep 07 nicklas 116       ok = false;
3783 25 Sep 07 nicklas 117     }
3783 25 Sep 07 nicklas 118     finally
3783 25 Sep 07 nicklas 119     {
3783 25 Sep 07 nicklas 120       if (dc != null) dc.close();
3783 25 Sep 07 nicklas 121     }
3783 25 Sep 07 nicklas 122   }
3783 25 Sep 07 nicklas 123
3783 25 Sep 07 nicklas 124   static void test_list()
3783 25 Sep 07 nicklas 125   {
3783 25 Sep 07 nicklas 126     DbControl dc = null;
3783 25 Sep 07 nicklas 127     try
3783 25 Sep 07 nicklas 128     {
3783 25 Sep 07 nicklas 129       dc = TestUtil.getDbControl();
3793 27 Sep 07 nicklas 130       ItemResultList<DataFileType> l = DataFileType.getQuery().list(dc);
3783 25 Sep 07 nicklas 131       for (int i = 0; i<l.size(); i++)
3783 25 Sep 07 nicklas 132       {
3783 25 Sep 07 nicklas 133         write_item(i, l.get(i));
3783 25 Sep 07 nicklas 134       }
3793 27 Sep 07 nicklas 135       write("--List data file types OK ("+l.size()+")");
3783 25 Sep 07 nicklas 136     }
3783 25 Sep 07 nicklas 137     catch (Throwable ex)
3783 25 Sep 07 nicklas 138     {
3793 27 Sep 07 nicklas 139       write("--List data file types FAILED");
3783 25 Sep 07 nicklas 140       ex.printStackTrace();
3783 25 Sep 07 nicklas 141       ok = false;
3783 25 Sep 07 nicklas 142     }
3783 25 Sep 07 nicklas 143     finally
3783 25 Sep 07 nicklas 144     {
3783 25 Sep 07 nicklas 145       if (dc != null) dc.close();
3783 25 Sep 07 nicklas 146     }
3783 25 Sep 07 nicklas 147   }
3783 25 Sep 07 nicklas 148   
3783 25 Sep 07 nicklas 149   static void test_delete(int id)
3783 25 Sep 07 nicklas 150   {
3783 25 Sep 07 nicklas 151     if (id == 0) return;
3783 25 Sep 07 nicklas 152     DbControl dc = null;
3783 25 Sep 07 nicklas 153     try
3783 25 Sep 07 nicklas 154     {
3783 25 Sep 07 nicklas 155       dc = TestUtil.getDbControl();
3793 27 Sep 07 nicklas 156       DataFileType l = DataFileType.getById(dc, id);
3783 25 Sep 07 nicklas 157       dc.deleteItem(l);
5340 10 May 10 nicklas 158       Set<ItemProxy> using = l.getUsingItems();
5340 10 May 10 nicklas 159       if (using.size() > 0) 
5340 10 May 10 nicklas 160       {
5340 10 May 10 nicklas 161          throw new BaseException(l + " is used by " + using);
5340 10 May 10 nicklas 162       }
3783 25 Sep 07 nicklas 163       dc.commit();
3793 27 Sep 07 nicklas 164       write("--Delete data file type OK");
3783 25 Sep 07 nicklas 165     }
3783 25 Sep 07 nicklas 166     catch (Throwable ex)
3783 25 Sep 07 nicklas 167     {
3793 27 Sep 07 nicklas 168       write("--Delete data file type FAILED");
3783 25 Sep 07 nicklas 169       ex.printStackTrace();
3783 25 Sep 07 nicklas 170       ok = false;
3783 25 Sep 07 nicklas 171     }
3783 25 Sep 07 nicklas 172     finally
3783 25 Sep 07 nicklas 173     {
3783 25 Sep 07 nicklas 174       if (dc != null) dc.close();
3783 25 Sep 07 nicklas 175     }
3783 25 Sep 07 nicklas 176   }
3783 25 Sep 07 nicklas 177   
3783 25 Sep 07 nicklas 178   
3783 25 Sep 07 nicklas 179   static void write_header()
3783 25 Sep 07 nicklas 180   {
3783 25 Sep 07 nicklas 181     if (!TestUtil.getSilent())
3783 25 Sep 07 nicklas 182     {
3797 28 Sep 07 nicklas 183       write("   \tID \tName      \tDescription\\tExternal ID");
3783 25 Sep 07 nicklas 184       write("-- \t-- \t--------- \t-----------\t---------");
3783 25 Sep 07 nicklas 185     }
3783 25 Sep 07 nicklas 186   }
3783 25 Sep 07 nicklas 187   
3793 27 Sep 07 nicklas 188   static void write_item(int i, DataFileType type)
3783 25 Sep 07 nicklas 189     throws BaseException
3783 25 Sep 07 nicklas 190   {
3783 25 Sep 07 nicklas 191     if (!TestUtil.getSilent()) 
3783 25 Sep 07 nicklas 192     {
3783 25 Sep 07 nicklas 193       System.out.println(i+":\t"+type.getId()+"\t"+type.getName()+"\t"+
3797 28 Sep 07 nicklas 194           type.getDescription() + "\t" + type.getExternalId());
3783 25 Sep 07 nicklas 195     }
3783 25 Sep 07 nicklas 196   }
3783 25 Sep 07 nicklas 197   
5652 10 Jun 11 nicklas 198   static void write_item(int i, FileSetMember member)
5652 10 Jun 11 nicklas 199     throws BaseException
5652 10 Jun 11 nicklas 200   {
5652 10 Jun 11 nicklas 201     if (!TestUtil.getSilent()) 
5652 10 Jun 11 nicklas 202     {
5652 10 Jun 11 nicklas 203       System.out.println(i+":\t"+member.getId()+"\t"+member.getFile().getName()+"\t"+
5652 10 Jun 11 nicklas 204         member.getDataFileType().getName());
5652 10 Jun 11 nicklas 205     }
5652 10 Jun 11 nicklas 206   }
5652 10 Jun 11 nicklas 207
5652 10 Jun 11 nicklas 208   
3783 25 Sep 07 nicklas 209   static void write_item(int i, PlatformVariant v)
3783 25 Sep 07 nicklas 210     throws BaseException
3783 25 Sep 07 nicklas 211   {
3783 25 Sep 07 nicklas 212     if (!TestUtil.getSilent()) 
3783 25 Sep 07 nicklas 213     {
3783 25 Sep 07 nicklas 214       System.out.println(i+":\t"+v.getId()+"\t"+v.getName()+"\t"+
3797 28 Sep 07 nicklas 215           v.getDescription() + "\t" + v.getExternalId() + "\t" + v.isFileOnly() + "\t" +
3783 25 Sep 07 nicklas 216           v.getRawDataType() + "\t" + v.getPlatform());
3783 25 Sep 07 nicklas 217     }
3783 25 Sep 07 nicklas 218   }
3783 25 Sep 07 nicklas 219   
3783 25 Sep 07 nicklas 220   static void write(String message)
3783 25 Sep 07 nicklas 221   {
3783 25 Sep 07 nicklas 222     System.out.println(message);
3783 25 Sep 07 nicklas 223   }
3783 25 Sep 07 nicklas 224
3797 28 Sep 07 nicklas 225   static int get_id_for_external(String externalId)
3783 25 Sep 07 nicklas 226   {
3783 25 Sep 07 nicklas 227     int id = 0;
3783 25 Sep 07 nicklas 228     DbControl dc = null;
3783 25 Sep 07 nicklas 229     try
3783 25 Sep 07 nicklas 230     {
3783 25 Sep 07 nicklas 231       dc = TestUtil.getDbControl();
3797 28 Sep 07 nicklas 232       DataFileType type = DataFileType.getByExternalId(dc, externalId);
3797 28 Sep 07 nicklas 233       id = type.getId();
3797 28 Sep 07 nicklas 234       write("--Get data file type (" + externalId + ") OK");
3783 25 Sep 07 nicklas 235     }
3783 25 Sep 07 nicklas 236     catch (Throwable ex)
3783 25 Sep 07 nicklas 237     {
3797 28 Sep 07 nicklas 238       write("--Get data file type (" + externalId + ") FAILED");
3783 25 Sep 07 nicklas 239       ex.printStackTrace();
3783 25 Sep 07 nicklas 240       ok = false;
3783 25 Sep 07 nicklas 241     }
3783 25 Sep 07 nicklas 242     finally
3783 25 Sep 07 nicklas 243     {
3783 25 Sep 07 nicklas 244       if (dc != null) dc.close();
3783 25 Sep 07 nicklas 245     }
3797 28 Sep 07 nicklas 246     return id;    
3783 25 Sep 07 nicklas 247   }
3783 25 Sep 07 nicklas 248
5652 10 Jun 11 nicklas 249   static void test_set_file(Item itemType, int itemId, String fileType, int fileId)
5652 10 Jun 11 nicklas 250   {
5652 10 Jun 11 nicklas 251     if (itemId == 0 || fileId == 0) return;
5652 10 Jun 11 nicklas 252     DbControl dc = null;
5652 10 Jun 11 nicklas 253     try
5652 10 Jun 11 nicklas 254     {
5652 10 Jun 11 nicklas 255       dc = TestUtil.getDbControl();
5652 10 Jun 11 nicklas 256       FileStoreEnabled item = (FileStoreEnabled)itemType.getById(dc, itemId);
5652 10 Jun 11 nicklas 257       DataFileType type = DataFileType.getByExternalId(dc, fileType);
5652 10 Jun 11 nicklas 258       File file = File.getById(dc, fileId);
5652 10 Jun 11 nicklas 259       item.getFileSet().setMember(file, type);
5652 10 Jun 11 nicklas 260       dc.commit();
5652 10 Jun 11 nicklas 261       write("--Set file OK ("+fileType+")");
5652 10 Jun 11 nicklas 262     }
5652 10 Jun 11 nicklas 263     catch (Throwable ex)
5652 10 Jun 11 nicklas 264     {
5652 10 Jun 11 nicklas 265       write("--Set file FAILED ("+fileType+")");
5652 10 Jun 11 nicklas 266       ex.printStackTrace();
5652 10 Jun 11 nicklas 267       ok = false;
5652 10 Jun 11 nicklas 268     }
5652 10 Jun 11 nicklas 269     finally
5652 10 Jun 11 nicklas 270     {
5652 10 Jun 11 nicklas 271       if (dc != null) dc.close();
5652 10 Jun 11 nicklas 272     }
5652 10 Jun 11 nicklas 273   }
5652 10 Jun 11 nicklas 274
5652 10 Jun 11 nicklas 275   static void test_list_files(Item itemType, int itemId, int expectedResults)
5652 10 Jun 11 nicklas 276   {
5652 10 Jun 11 nicklas 277     if (itemId == 0) return;
5652 10 Jun 11 nicklas 278     DbControl dc = null;
5652 10 Jun 11 nicklas 279     try
5652 10 Jun 11 nicklas 280     {
5652 10 Jun 11 nicklas 281       dc = TestUtil.getDbControl();
5652 10 Jun 11 nicklas 282       FileStoreEnabled item = (FileStoreEnabled)itemType.getById(dc, itemId);
5652 10 Jun 11 nicklas 283       ItemResultList<FileSetMember> l = item.getFileSet().getMembers().list(dc);
5652 10 Jun 11 nicklas 284       for (int i = 0; i<l.size(); i++)
5652 10 Jun 11 nicklas 285       {
5652 10 Jun 11 nicklas 286         write_item(i, l.get(i));
5652 10 Jun 11 nicklas 287       }
5652 10 Jun 11 nicklas 288       if (expectedResults >= 0 && expectedResults != l.size())
5652 10 Jun 11 nicklas 289       {
5652 10 Jun 11 nicklas 290         throw new BaseException("Expected "+expectedResults+" results, not "+l.size());
5652 10 Jun 11 nicklas 291       }
5652 10 Jun 11 nicklas 292       write("--List files OK ("+l.size()+")");
5652 10 Jun 11 nicklas 293     }
5652 10 Jun 11 nicklas 294     catch (Throwable ex)
5652 10 Jun 11 nicklas 295     {
5652 10 Jun 11 nicklas 296       write("--List files FAILED");
5652 10 Jun 11 nicklas 297       ex.printStackTrace();
5652 10 Jun 11 nicklas 298       ok = false;
5652 10 Jun 11 nicklas 299     }
5652 10 Jun 11 nicklas 300     finally
5652 10 Jun 11 nicklas 301     {
5652 10 Jun 11 nicklas 302       if (dc != null) dc.close();
5652 10 Jun 11 nicklas 303     }
5652 10 Jun 11 nicklas 304   }
5652 10 Jun 11 nicklas 305   
5652 10 Jun 11 nicklas 306   static void test_list_file_types(Item itemType, int itemId, int expectedResults)
5652 10 Jun 11 nicklas 307   {
5652 10 Jun 11 nicklas 308     if (itemId == 0) return;
5652 10 Jun 11 nicklas 309     DbControl dc = null;
5652 10 Jun 11 nicklas 310     try
5652 10 Jun 11 nicklas 311     {
5652 10 Jun 11 nicklas 312       dc = TestUtil.getDbControl();
5652 10 Jun 11 nicklas 313       FileStoreEnabled item = (FileStoreEnabled)itemType.getById(dc, itemId);
5652 10 Jun 11 nicklas 314       ItemResultList<DataFileType> l = item.getFileSet().getMemberTypes().list(dc);
5652 10 Jun 11 nicklas 315       for (int i = 0; i<l.size(); i++)
5652 10 Jun 11 nicklas 316       {
5652 10 Jun 11 nicklas 317         write_item(i, l.get(i));
5652 10 Jun 11 nicklas 318       }
5652 10 Jun 11 nicklas 319       if (expectedResults >= 0 && expectedResults != l.size())
5652 10 Jun 11 nicklas 320       {
5652 10 Jun 11 nicklas 321         throw new BaseException("Expected "+expectedResults+" results, not "+l.size());
5652 10 Jun 11 nicklas 322       }
5652 10 Jun 11 nicklas 323       write("--List file types OK ("+l.size()+")");
5652 10 Jun 11 nicklas 324     }
5652 10 Jun 11 nicklas 325     catch (Throwable ex)
5652 10 Jun 11 nicklas 326     {
5652 10 Jun 11 nicklas 327       write("--List file types FAILED");
5652 10 Jun 11 nicklas 328       ex.printStackTrace();
5652 10 Jun 11 nicklas 329       ok = false;
5652 10 Jun 11 nicklas 330     }
5652 10 Jun 11 nicklas 331     finally
5652 10 Jun 11 nicklas 332     {
5652 10 Jun 11 nicklas 333       if (dc != null) dc.close();
5652 10 Jun 11 nicklas 334     }
5652 10 Jun 11 nicklas 335   }
5652 10 Jun 11 nicklas 336
5652 10 Jun 11 nicklas 337   
3783 25 Sep 07 nicklas 338 }