Currently, there are eighteen entity types supported in Synapse but most of those types are old and have been unofficially deprecated for a few years now. We have not provided the means to convert these old entities to the new types so there are many of these old object in Synapse.
Since each client can encounter one of these old objects at any time, client developers have be forced to support both the 'old' way and the 'new' way of working with entities for years now. This adds complexity and increases the support cost for each client. This document outlines a plan for migrating all old types into the types we currently support in Synapse.
Entity types as of 2/2/15:
Alias(es) | Full Name | Container | Locationable | Status | count | Last Modified | Valid Parents |
---|---|---|---|---|---|---|---|
dataset, study | org.sagebionetworks.repo.model.Study | true | true | Deprecated | 11479 | 2015-01-13 04:05:16 | folder, project |
layer, data | org.sagebionetworks.repo.model.Data | false | true | Deprecated | 835532 | 2015-01-28 23:10:06 | folder, project, study |
project | org.sagebionetworks.repo.model.Project | true | false | Supported | 8964 | 2015-01-28 23:25:29 | root only |
preview | org.sagebionetworks.repo.model.Preview | false | false | Deprecated | 93 | 2012-01-19 05:52:23 | folder, data |
folder | org.sagebionetworks.repo.model.Folder | true | false | Supported | 42101 | 2015-01-28 23:10:11 | project, folder, study, analysis |
analysis | org.sagebionetworks.repo.model.Analysis | true | false | Deprecated | 29 | 2013-05-09 12:44:15 | project, folder |
step | org.sagebionetworks.repo.model.Step | false | false | Deprecated | 34 | 2012-09-16 15:31:39 | folder, analysis |
code | org.sagebionetworks.repo.model.Code | false | true | Deprecated | 769 | 2015-01-28 23:09:42 | project, folder |
link | org.sagebionetworks.repo.model.Link | false | false | Supported | 253 | 2015-01-14 15:44:07 | project, folder, study, data, step, analysis |
phenotypedata | org.sagebionetworks.repo.model.PhenotypeData | false | true | Deprecated | 569 | 2013-08-09 21:12:03 | project, folder, study |
genotypedata | org.sagebionetworks.repo.model.GenotypeData | false | true | Deprecated | 1642 | 2014-05-08 06:21:11 | project, folder, study |
expressiondata | org.sagebionetworks.repo.model.ExpressionData | false | true | Deprecated | 18724 | 2013-10-10 16:32:21 | project, folder, study |
robject | org.sagebionetworks.repo.model.RObject | false | true | Deprecated | 52 | 2013-03-02 22:28:36 | project, folder, study |
summary | org.sagebionetworks.repo.model.Summary | false | false | Supported | 102 | 2014-11-06 21:56:38 | project, folder, study |
genomicdata | org.sagebionetworks.repo.model.GenomicData | false | true | Deprecated | 2 | 2013-01-25 22:50:59 | project, folder, study |
page | org.sagebionetworks.repo.model.Page | true | false | Deprecated | 0 | folder, page | |
file | org.sagebionetworks.repo.model.FileEntity | false | false | Supported | 198820 | 2015-01-28 23:10:26 | project, folder, study |
table | org.sagebionetworks.repo.model.table.TableEntity | false | false | Supported | 2260 | 2015-01-28 23:17:52 | project, folder, study |
community | org.sagebionetworks.bridge.model.Community | true | false | Deprecated | 1 | 2014-02-06 20:47:44 | root only |
Table 1.
Locationable
Locationable entities can have one or more LocationData objects in their list of locations. LocationData is the precursor to our currently supported FileHandle. Each LocationData object points to either object in S3 (like a S3FileHandle) or an external URL (ExternalFileHandle). Most of the client support burden is around supporting Locationable Entites. Table 1 shows which entity types are Locationable. Even though a Locationable can have one or more LocationData it is assumed that each LocationData represents the same file just store in alternate locations and that all "copies" have the same md5 (see Figure 1).
Figure 1.
Containers
In the past we support many types of entity containers. Each container can have one more child entity. Table 1 shows which entity types are allowed to be containers of other entities. Our users were either confused by all of these container types or wanted a new type for their special cases. We decided that the only containers we want to support all Folders and Projects.
Locationable & Containers
Table 1 shows that datasets/studies are both containers and locationable. None of the currently supported objects can have files and children entities. Projects and Folders can have children but cannot have files. Files can have files but cannot have any children.
Links In Everything
Links are a special case that can be contained in many types (see Table 1 'valid parents'). Since a Link can have study, data, step, or analysis as a parent, any of these object that have a link child cannot simple by changed to a File (file cannot have children). This is going to force us to make difficult decision about how to convert old types that have links as children.
Convert Entity Services
In order to fully depreciated the unsupported types, we need to convert each old type into one of the supported types. The plan is to add a new services that will convert an old entity to a new type. Many conversions will be simple. For example, it will be simple to convert a a data object with a single file. Conversion will not be simple for all cases where there is not a one-to-one relationship between the old and new.