extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/cmd/ImportContext.java

Code
Comments
Other
Rev Date Author Line
6347 16 Aug 21 nicklas 1 package net.sf.basedb.reggie.plugins.cmd;
6347 16 Aug 21 nicklas 2
6347 16 Aug 21 nicklas 3 import java.util.HashMap;
6917 01 Dec 22 nicklas 4 import java.util.HashSet;
6347 16 Aug 21 nicklas 5 import java.util.Map;
6917 01 Dec 22 nicklas 6 import java.util.Set;
6929 02 Dec 22 nicklas 7 import java.util.TreeSet;
6347 16 Aug 21 nicklas 8
6894 25 Nov 22 nicklas 9 import net.sf.basedb.opengrid.filetransfer.FileMetaData;
6894 25 Nov 22 nicklas 10
6347 16 Aug 21 nicklas 11 /**
6347 16 Aug 21 nicklas 12   Class for keeping track of some context information when parsing and
6347 16 Aug 21 nicklas 13   importing multiple files. Main purpose is to be able to check that
6347 16 Aug 21 nicklas 14   information that should be unique is not present in two or more files.
6347 16 Aug 21 nicklas 15   For example, Libplate position and library barcode.
6347 16 Aug 21 nicklas 16   @since 4.32
6347 16 Aug 21 nicklas 17 */
6347 16 Aug 21 nicklas 18 public class ImportContext 
6347 16 Aug 21 nicklas 19 {
6347 16 Aug 21 nicklas 20
6347 16 Aug 21 nicklas 21   private final Map<String, JsonSection> uniqueThings;
6894 25 Nov 22 nicklas 22   private final Map<String, FileMetaData> files;
6347 16 Aug 21 nicklas 23   
6917 01 Dec 22 nicklas 24   private final Set<String> requestedInfo;
6917 01 Dec 22 nicklas 25   
6347 16 Aug 21 nicklas 26   public ImportContext()
6347 16 Aug 21 nicklas 27   {
6347 16 Aug 21 nicklas 28     this.uniqueThings = new HashMap<String, JsonSection>();
6894 25 Nov 22 nicklas 29     this.files = new HashMap<>();
6917 01 Dec 22 nicklas 30     this.requestedInfo = new HashSet<>();
6347 16 Aug 21 nicklas 31   }
6347 16 Aug 21 nicklas 32   
6347 16 Aug 21 nicklas 33   /**
6347 16 Aug 21 nicklas 34     Add information to the context that should be linked to the
6347 16 Aug 21 nicklas 35     specified JSON section. If an existing entry already exists 
6347 16 Aug 21 nicklas 36     it is returned and the context is not modified. If it is
6347 16 Aug 21 nicklas 37     a new entry null is returned.
6347 16 Aug 21 nicklas 38     @param key The key that should be unique
6347 16 Aug 21 nicklas 39     @param section The JSON section in which the key is located
6347 16 Aug 21 nicklas 40     @return null if the key didn't exists or the other section
6347 16 Aug 21 nicklas 41       if the key has been added before
6347 16 Aug 21 nicklas 42   */
6347 16 Aug 21 nicklas 43   public JsonSection add(String key, JsonSection section)
6347 16 Aug 21 nicklas 44   {
6347 16 Aug 21 nicklas 45     if (uniqueThings.containsKey(key))
6347 16 Aug 21 nicklas 46     {
6347 16 Aug 21 nicklas 47       return uniqueThings.get(key);
6347 16 Aug 21 nicklas 48     }
6347 16 Aug 21 nicklas 49     uniqueThings.put(key, section);
6347 16 Aug 21 nicklas 50     return null;
6347 16 Aug 21 nicklas 51   }
6347 16 Aug 21 nicklas 52   
6894 25 Nov 22 nicklas 53   /**
6894 25 Nov 22 nicklas 54     Add information about an existing (FASTQ) file in the import directory.
6894 25 Nov 22 nicklas 55     @since 4.41
6894 25 Nov 22 nicklas 56   */
6894 25 Nov 22 nicklas 57   public void setFileInfo(String name, FileMetaData fastq)
6894 25 Nov 22 nicklas 58   {
6894 25 Nov 22 nicklas 59     files.put(name, fastq);
6894 25 Nov 22 nicklas 60   }
6347 16 Aug 21 nicklas 61   
6894 25 Nov 22 nicklas 62   /**
6894 25 Nov 22 nicklas 63     Get information about an existing (FASTQ) file in the import 
6894 25 Nov 22 nicklas 64     directory. If the file doesn't exists, null is returned.
6894 25 Nov 22 nicklas 65     @since 4.41
6894 25 Nov 22 nicklas 66   */
6894 25 Nov 22 nicklas 67   public FileMetaData getFileInfo(String name)
6894 25 Nov 22 nicklas 68   {
6917 01 Dec 22 nicklas 69     requestedInfo.add(name);
6894 25 Nov 22 nicklas 70     return files.get(name);
6894 25 Nov 22 nicklas 71   }
6894 25 Nov 22 nicklas 72   
6896 28 Nov 22 nicklas 73   public boolean hasFileInfo()
6896 28 Nov 22 nicklas 74   {
6896 28 Nov 22 nicklas 75     return files.size() > 0;
6896 28 Nov 22 nicklas 76   }
6917 01 Dec 22 nicklas 77   
6917 01 Dec 22 nicklas 78   public Set<String> getFilesThatWasNeverRequested()
6917 01 Dec 22 nicklas 79   {
6929 02 Dec 22 nicklas 80     Set<String> allFiles = new TreeSet<>(files.keySet());
6917 01 Dec 22 nicklas 81     allFiles.removeAll(requestedInfo);
6917 01 Dec 22 nicklas 82     return allFiles;
6917 01 Dec 22 nicklas 83   }
6917 01 Dec 22 nicklas 84   
6347 16 Aug 21 nicklas 85 }