Changeset 554
- Timestamp:
- Jan 25, 2008, 4:38:19 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/net/sf/basedb/illumina/src/net/sf/basedb/illumina/install/Install.java
r551 r554 24 24 */ 25 25 package net.sf.basedb.illumina.install; 26 27 import java.util.ArrayList;28 import java.util.Arrays;29 import java.util.Collection;30 import java.util.Collections;31 import java.util.EnumSet;32 import java.util.HashSet;33 import java.util.Iterator;34 import java.util.List;35 import java.util.Set;36 26 37 27 import net.sf.basedb.core.BaseException; … … 42 32 import net.sf.basedb.core.Item; 43 33 import net.sf.basedb.core.ItemAlreadyExistsException; 34 import net.sf.basedb.core.ItemNotFoundException; 44 35 import net.sf.basedb.core.Permission; 45 36 import net.sf.basedb.core.Platform; … … 61 52 import net.sf.basedb.core.plugin.Request; 62 53 import net.sf.basedb.core.plugin.Response; 54 55 import java.util.ArrayList; 56 import java.util.Arrays; 57 import java.util.Collection; 58 import java.util.Collections; 59 import java.util.EnumSet; 60 import java.util.HashSet; 61 import java.util.Iterator; 62 import java.util.List; 63 import java.util.Set; 63 64 64 65 /** … … 202 203 if (installExp2) expressionTypes.add(2); 203 204 204 installIlluminaItems(installSnp, expressionTypes, alreadyExistingItem.equals(SKIP_OPTION) );205 installIlluminaItems(installSnp, expressionTypes, alreadyExistingItem.equals(SKIP_OPTION), progress); 205 206 } 206 207 catch(Throwable ex) … … 296 297 @throws ItemAlreadyExistsException If ignoreInstalledItems = FALSE and one of the 297 298 */ 298 public void installIlluminaItems(boolean installSNP, HashSet<Integer> expressionTypes, boolean ignoreExistingItems )299 public void installIlluminaItems(boolean installSNP, HashSet<Integer> expressionTypes, boolean ignoreExistingItems, ProgressReporter progress) 299 300 throws ItemAlreadyExistsException 300 301 { … … 319 320 dc = sc.newDbControl(); 320 321 321 List<DataFileType> dataFileTypes = new ArrayList<DataFileType>(); 322 dataFileTypes.add(createDataFileType(dc, bgxFileTypeId, "BGX file", Item.ARRAYDESIGN, BGX_FILEYTPE_EXTENSION, ignoreExistingItems)); 322 List<DataFileType> expressionDataFileTypes = new ArrayList<DataFileType>(); 323 DataFileType dft = createDataFileType(dc, bgxFileTypeId, "BGX file", Item.ARRAYDESIGN, BGX_FILEYTPE_EXTENSION, ignoreExistingItems); 324 dft.setDescription("Illumina BGX file"); 325 expressionDataFileTypes.add(dft); 323 326 324 327 for (int i = 1; i <= largestNumOfStrips; i++ ) 325 328 { 326 String name = "Scandata filetype" + i; 327 dataFileTypes.add(createDataFileType(dc, scandataFileTypePrefix + i, name, Item.RAWBIOASSAY, SCANDATA_FILETYPE_EXTENSION, ignoreExistingItems)); 329 String name = "Scandata filetype" + i; 330 dft = createDataFileType(dc, scandataFileTypePrefix + i, name, Item.RAWBIOASSAY, SCANDATA_FILETYPE_EXTENSION, ignoreExistingItems); 331 dft.setDescription("Illumina scandata file"); 332 expressionDataFileTypes.add(dft); 328 333 } 329 334 //TODO Create data file type for SNP filer. 330 331 // 332 // Platform illuminaPlatform = createPlatform(dc, illuminaPlatformExternalId, "Illumina", ignoreExistingItems); 333 // 334 // List<PlatformVariant> platformVariants = new ArrayList<PlatformVariant>(); 335 // String namePrefix = "Illumina expression"; 336 // for (int type : expressionTypes) 337 // { 338 // PlatformVariant pfv = createPlatformVariant(dc, expExternalIdPrefix + type, 339 // illuminaPlatform, RawDataTypes.getRawDataType("illumina.scandata"), ignoreExistingItems); 340 // pfv.setName(namePrefix + type); 341 // pfv.setDescription("Platform variant to use with Illumina expression"); 342 // //TODO Add data file types to the expression variants. 343 // platformVariants.add(pfv); 344 // } 345 // if (installSNP) 346 // { 347 // PlatformVariant pfv = createPlatformVariant(dc, snpVariantExternalId, "Illumina SNP", illuminaPlatform, 2, ignoreExistingItems); 348 // pfv.setName("Illumina SNP"); 349 // pfv.setDescription("Platform variant to be used for Illumina SNP data."); 350 // //TODO Add data file types to the SNP variant. 351 // platformVariants.add(pfv); 352 // } 353 335 336 dc.commit(); 337 338 dc = sc.newDbControl(); 339 Platform illuminaPlatform = createPlatform(dc, illuminaPlatformExternalId, "Illumina", ignoreExistingItems); 340 341 List<PlatformVariant> platformVariants = new ArrayList<PlatformVariant>(); 342 String namePrefix = "Illumina expression"; 343 for (int type : expressionTypes) 344 { 345 PlatformVariant pfv = createPlatformVariant(dc, expExternalIdPrefix + type, namePrefix + type, 346 illuminaPlatform, RawDataTypes.getRawDataType("illumina.scandata"), ignoreExistingItems); 347 pfv.setDescription("Platform variant to use with Illumina expression containing " + type + " strip(s)/array"); 348 pfv.addFileType(DataFileType.getByExternalId(dc, bgxFileTypeId), true); 349 for (int i = 1; i <= type; i++) 350 { 351 pfv.addFileType(DataFileType.getByExternalId(dc, scandataFileTypePrefix+i), true); 352 } 353 platformVariants.add(pfv); 354 } 355 if (installSNP) 356 { 357 PlatformVariant pfv = createPlatformVariant(dc, snpVariantExternalId, "Illumina SNP", illuminaPlatform, 2, ignoreExistingItems); 358 pfv.setDescription("Platform variant to be used with Illumina SNP data."); 359 //TODO Add data file types to the SNP variant. 360 platformVariants.add(pfv); 361 } 354 362 dc.commit(); 355 363 } … … 393 401 try 394 402 { 403 dft = DataFileType.getByExternalId(dc, externalId); 404 String message = null; 405 if (!ignoreExistingItem) 406 { 407 throw new ItemAlreadyExistsException(dft.getExternalId()); 408 } 409 dft = DataFileType.getByExternalId(dc, externalId); 410 if (!dft.getExtension().equals(extension)) message = dft.getName() + " has invalid extension"; 411 if (dft.getItemType().equals(itemType)) message = dft.getName() + " has invalid item type"; 412 if (message != null) throw new ItemAlreadyExistsException(message); 413 414 } 415 catch (ItemNotFoundException infe) 416 { 395 417 dft = DataFileType.getNew(dc, externalId, itemType); 396 418 dc.saveItem(dft); … … 398 420 dft.setExtension(extension); 399 421 } 400 catch (ItemAlreadyExistsException iex)401 {402 if (!ignoreExistingItem)403 {404 throw iex;405 }406 else407 {408 dft = DataFileType.getByExternalId(dc, externalId);409 if (dft.getExtension() != extension) throw new InvalidDataException(dft.getName() + " has invalid extension");410 if (dft.getItemType() != itemType) throw new InvalidDataException(dft.getName() + " has invalid item type");411 }412 }413 422 return dft; 414 423 } … … 419 428 try 420 429 { 430 platform = Platform.getByExternalId(dc, externalId); 431 if (!ignoreExistingItem) 432 { 433 throw new ItemAlreadyExistsException(platform.getExternalId()); 434 } 435 //TODO Check that existing platform can be used with the rest of the items. 436 } 437 catch (ItemNotFoundException infex) 438 { 421 439 platform = Platform.getNew(dc, externalId, null); 422 //TODO More property to set?423 440 dc.saveItem(platform); 424 441 platform.setName(name); 425 }426 catch (ItemAlreadyExistsException iex)427 {428 if (!ignoreExistingItem)429 {430 throw iex;431 }432 else433 {434 platform = Platform.getByExternalId(dc, externalId);435 //TODO Check that existing platform can be used with the rest of the items.436 }437 442 } 438 443 return platform; … … 442 447 Creates variants associated with a raw data type 443 448 */ 444 private PlatformVariant createPlatformVariant(DbControl dc, String ext Id,449 private PlatformVariant createPlatformVariant(DbControl dc, String externalId, String name, 445 450 Platform illuminaPlatform, RawDataType rawDataType, boolean ignoreExistingItem) 446 451 { … … 448 453 try 449 454 { 450 variant = PlatformVariant.getNew(dc, illuminaPlatform, extId, rawDataType); 451 dc.saveItem(variant); 452 } 453 catch (ItemAlreadyExistsException iex) 454 { 455 variant = PlatformVariant.getByExternalId(dc, externalId); 455 456 if (!ignoreExistingItem) 456 457 { 457 throw iex; 458 } 459 else 460 { 461 variant = PlatformVariant.getByExternalId(dc, extId); 462 if (variant.isFileOnly()) 463 throw new InvalidDataException ("Platform variant " + variant.getName() + " exists but is not file-only"); 464 if (!variant.getRawDataType().equals(rawDataType)) 465 throw new InvalidDataException ("Platform variant " + variant.getName() + " exists but has not raw data type: " + rawDataType); 466 if (!variant.getPlatform().equals(illuminaPlatform)) 467 throw new InvalidDataException ("Platform variant " + variant.getName() + " exists but has not platform: " + illuminaPlatform); 468 } 469 } 470 return null; 458 throw new ItemAlreadyExistsException(variant.getExternalId()); 459 } 460 String message = null; 461 if (variant.isFileOnly()) message = "Platform variant " + variant.getExternalId() + " already exists but is file-only"; 462 if (!variant.getRawDataType().equals(rawDataType)) message = "Platform variant " + variant.getExternalId() + " already exists but has not " + rawDataType.getName() + " as raw data type"; 463 if (!variant.getPlatform().equals(illuminaPlatform)) message = "Platform variant " + variant.getExternalId() + " already exists for another platform."; 464 if (message != null) throw new ItemAlreadyExistsException(message); 465 466 } 467 catch (ItemNotFoundException infex) 468 { 469 variant = PlatformVariant.getNew(dc, illuminaPlatform, externalId, rawDataType); 470 dc.saveItem(variant); 471 variant.setName(name); 472 } 473 return variant; 471 474 } 472 475 … … 474 477 Creates file-only platform variants 475 478 */ 476 private PlatformVariant createPlatformVariant(DbControl dc, 477 String snpVariantExternalId, String name, Platform illuminaPlatform, 478 int channels, boolean ignoreExistingItems) 479 { 480 // TODO Auto-generated method stub 481 return null; 479 private PlatformVariant createPlatformVariant(DbControl dc, String externalId, 480 String name, Platform platform, int channels, boolean ignoreExistingItems) 481 { 482 PlatformVariant variant = null; 483 try 484 { 485 variant = PlatformVariant.getByExternalId(dc, externalId); 486 if (!ignoreExistingItems) 487 { 488 throw new ItemAlreadyExistsException(variant.getExternalId()); 489 } 490 String message = null; 491 if (!variant.isFileOnly()) message = "Platform variant " + variant.getName() + " exists but is not file-only"; 492 if (!variant.getPlatform().equals(platform)) message = "Platform variant " + variant.getName() + " exists but has not platform: " + platform; 493 if (variant.getRawDataType().getChannels() != channels) message = "Platform variant " + variant.getName() + " exists but not for " + channels + " data"; 494 if (message != null) throw new InvalidDataException (message); 495 } 496 catch (ItemNotFoundException infex) 497 { 498 variant = PlatformVariant.getNew(dc, platform, externalId, channels); 499 dc.saveItem(variant); 500 variant.setName(name); 501 } 502 return variant; 482 503 } 483 504 }
Note: See TracChangeset
for help on using the changeset viewer.