extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/release/CohortDataFileType.java

Code
Comments
Other
Rev Date Author Line
4407 20 Mar 17 nicklas 1 package net.sf.basedb.reggie.plugins.release;
4407 20 Mar 17 nicklas 2
4407 20 Mar 17 nicklas 3
4407 20 Mar 17 nicklas 4 import org.json.simple.JSONObject;
4407 20 Mar 17 nicklas 5
4407 20 Mar 17 nicklas 6 import net.sf.basedb.core.DbControl;
4407 20 Mar 17 nicklas 7 import net.sf.basedb.core.Item;
4407 20 Mar 17 nicklas 8 import net.sf.basedb.reggie.dao.Datafiletype;
4407 20 Mar 17 nicklas 9 import net.sf.basedb.reggie.dao.Subtype;
4407 20 Mar 17 nicklas 10
4407 20 Mar 17 nicklas 11 /**
4408 20 Mar 17 nicklas 12   A type-def implementation for data file types. 
4408 20 Mar 17 nicklas 13   A subtype is optional. If provided the data file type
4408 20 Mar 17 nicklas 14   will be linked to the subtype when imported.
4407 20 Mar 17 nicklas 15   
4407 20 Mar 17 nicklas 16   @author nicklas
4407 20 Mar 17 nicklas 17   @since 4.10
4407 20 Mar 17 nicklas 18 */
4469 26 Apr 17 nicklas 19 public class CohortDataFileType
4408 20 Mar 17 nicklas 20   implements CohortTypeDef
4407 20 Mar 17 nicklas 21 {
4407 20 Mar 17 nicklas 22
4407 20 Mar 17 nicklas 23   private final Datafiletype fileType;
7016 26 Jan 23 nicklas 24   private final Item itemType;
4407 20 Mar 17 nicklas 25   private final String subtype;
4410 21 Mar 17 nicklas 26   private final String platform;
4410 21 Mar 17 nicklas 27   private final String variant;
4407 20 Mar 17 nicklas 28   
4410 21 Mar 17 nicklas 29   /**
4410 21 Mar 17 nicklas 30     Create a data file type definition that is optionally linked to an item subtype.
4410 21 Mar 17 nicklas 31   */
7016 26 Jan 23 nicklas 32   public CohortDataFileType(DbControl dc, Item itemType, Datafiletype filetype, String subtype)
4407 20 Mar 17 nicklas 33   {
4407 20 Mar 17 nicklas 34     this.fileType = filetype;
7016 26 Jan 23 nicklas 35     this.itemType = itemType == null ? filetype.getItemType() : itemType;
4407 20 Mar 17 nicklas 36     this.subtype = subtype;
4410 21 Mar 17 nicklas 37     this.platform = null;
4410 21 Mar 17 nicklas 38     this.variant = null;
4407 20 Mar 17 nicklas 39   }
4407 20 Mar 17 nicklas 40
4410 21 Mar 17 nicklas 41   /**
4410 21 Mar 17 nicklas 42     Create a data file type definition that is optionally linked to an plaform and/or variant.
4410 21 Mar 17 nicklas 43     Use the external id for the platform and/or variant.
4410 21 Mar 17 nicklas 44   */
7016 26 Jan 23 nicklas 45   public CohortDataFileType(DbControl dc, Item itemType, Datafiletype filetype, String platform, String variant)
4410 21 Mar 17 nicklas 46   {
4410 21 Mar 17 nicklas 47     this.fileType = filetype;
7016 26 Jan 23 nicklas 48     this.itemType = itemType == null ? filetype.getItemType() : itemType;
4410 21 Mar 17 nicklas 49     this.subtype = null;
4410 21 Mar 17 nicklas 50     this.platform = platform;
4410 21 Mar 17 nicklas 51     this.variant = variant;
4410 21 Mar 17 nicklas 52   }
4410 21 Mar 17 nicklas 53
4410 21 Mar 17 nicklas 54   
4407 20 Mar 17 nicklas 55   @Override
4407 20 Mar 17 nicklas 56   public String getName() 
4407 20 Mar 17 nicklas 57   {
4407 20 Mar 17 nicklas 58     return fileType.getName();
4407 20 Mar 17 nicklas 59   }
4407 20 Mar 17 nicklas 60
4407 20 Mar 17 nicklas 61   @Override
4407 20 Mar 17 nicklas 62   public JSONObject toJSONObject() 
4407 20 Mar 17 nicklas 63   {
4407 20 Mar 17 nicklas 64     JSONObject json = new JSONObject();
4407 20 Mar 17 nicklas 65     
4407 20 Mar 17 nicklas 66     json.put("type", Item.DATAFILETYPE.name());
4407 20 Mar 17 nicklas 67     json.put("name", fileType.getName());
4407 20 Mar 17 nicklas 68     json.put("externalId", fileType.getExternalId());
7016 26 Jan 23 nicklas 69     json.put("itemType", itemType.name());
4407 20 Mar 17 nicklas 70     json.put("extension", fileType.getExtension());
4407 20 Mar 17 nicklas 71     Subtype genericType = fileType.getSubtype();
4407 20 Mar 17 nicklas 72     if (genericType != null)
4407 20 Mar 17 nicklas 73     {
4407 20 Mar 17 nicklas 74       json.put("genericType", genericType.getName());
4407 20 Mar 17 nicklas 75     }
4407 20 Mar 17 nicklas 76     if (subtype != null)
4407 20 Mar 17 nicklas 77     {
4407 20 Mar 17 nicklas 78       json.put("subtype", subtype);
4407 20 Mar 17 nicklas 79       json.put("allowMultiple", fileType.getAllowMultiple());
4407 20 Mar 17 nicklas 80       json.put("required", fileType.isRequired());
4407 20 Mar 17 nicklas 81     }
4410 21 Mar 17 nicklas 82     if (platform != null)
4410 21 Mar 17 nicklas 83     {
4410 21 Mar 17 nicklas 84       json.put("platform", platform);
4410 21 Mar 17 nicklas 85       if (variant != null) json.put("variant", variant);
4410 21 Mar 17 nicklas 86       json.put("allowMultiple", fileType.getAllowMultiple());
4410 21 Mar 17 nicklas 87       json.put("required", fileType.isRequired());
4410 21 Mar 17 nicklas 88     }
4407 20 Mar 17 nicklas 89
4407 20 Mar 17 nicklas 90     return json;
4407 20 Mar 17 nicklas 91   }
4407 20 Mar 17 nicklas 92   
4407 20 Mar 17 nicklas 93   
4407 20 Mar 17 nicklas 94
4407 20 Mar 17 nicklas 95 }