Skip to content
Snippets Groups Projects
Commit de5dda47 authored by Aaron Ponti's avatar Aaron Ponti
Browse files

Merge branch 'master-sissource_rw'

parents b94c588c 9e744e61
No related branches found
No related tags found
No related merge requests found
Showing
with 290 additions and 36 deletions
package ethz.ch; package ethz.ch;
import java.util.Arrays; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
...@@ -21,13 +18,16 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOpt ...@@ -21,13 +18,16 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOpt
import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search.SpaceSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search.SpaceSearchCriteria;
import ch.ethz.sis.openbis.generic.dssapi.v3.IDataStoreServerApi; import ch.ethz.sis.openbis.generic.dssapi.v3.IDataStoreServerApi;
import ch.systemsx.cisd.common.spring.HttpInvokerUtils; import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
import ethz.ch.dataset.DataSetPropertyCopy;
import ethz.ch.dataset.DatasetCreationHelper; import ethz.ch.dataset.DatasetCreationHelper;
import ethz.ch.experiment.Experiment2Sample; import ethz.ch.experiment.Experiment2Sample;
import ethz.ch.experiment.Experiment2SampleTranslator; import ethz.ch.experiment.Experiment2SampleTranslator;
import ethz.ch.experiment.ExperimentType2SampleType; import ethz.ch.experiment.ExperimentType2SampleType;
import ethz.ch.property.Property2Sample; import ethz.ch.property.Property2Sample;
import ethz.ch.property.Property2SampleTranslator; import ethz.ch.property.Property2SampleTranslator;
import ethz.ch.property.EntityPropertyCopy;
import ethz.ch.property.PropertyType2SampleType; import ethz.ch.property.PropertyType2SampleType;
import ethz.ch.sample.SamplePropertyCopy;
import ethz.ch.ssl.SslCertificateHelper; import ethz.ch.ssl.SslCertificateHelper;
import ethz.ch.tag.Tag2SampleTranslator; import ethz.ch.tag.Tag2SampleTranslator;
...@@ -56,6 +56,9 @@ public class Main ...@@ -56,6 +56,9 @@ public class Main
doTheWork(true, AS_URL, DSS_URL, user, pass, true, true, true); doTheWork(true, AS_URL, DSS_URL, user, pass, true, true, true);
} else { } else {
String AS_URL = OPENBIS_LOCAL_DEV + "/openbis/openbis" + IApplicationServerApi.SERVICE_URL;
String DSS_URL = DSS_LOCAL_DEV + "/datastore_server" + IDataStoreServerApi.SERVICE_URL;
doTheWork(true, AS_URL, DSS_URL, "pontia", "a", true, true, true);
System.out.println("Example: java -jar microscopy_migration_tool.jar https://openbis-as-domain.ethz.ch https://openbis-dss-domain.ethz.ch user password"); System.out.println("Example: java -jar microscopy_migration_tool.jar https://openbis-as-domain.ethz.ch https://openbis-dss-domain.ethz.ch user password");
} }
} }
...@@ -90,23 +93,23 @@ public class Main ...@@ -90,23 +93,23 @@ public class Main
} }
private static void migrate(String sessionToken, IApplicationServerApi v3, IDataStoreServerApi v3dss,boolean COMMIT_CHANGES_TO_OPENBIS) throws Exception { private static void migrate(String sessionToken, IApplicationServerApi v3, IDataStoreServerApi v3dss,boolean COMMIT_CHANGES_TO_OPENBIS) throws Exception {
// //
// Experiment types to migrate as samples // Experiment types to migrate as samples
// //
ExperimentType2SampleType MICROSCOPY_EXPERIMENT = new ExperimentType2SampleType("MICROSCOPY_EXPERIMENT", "MICROSCOPY_EXPERIMENTS_COLLECTION", "MICROSCOPY_EXPERIMENT_NAME"); ExperimentType2SampleType MICROSCOPY_EXPERIMENT = new ExperimentType2SampleType("MICROSCOPY_EXPERIMENT", "MICROSCOPY_EXPERIMENTS_COLLECTION", "MICROSCOPY_EXPERIMENT_NAME");
ExperimentType2SampleType FACS_ARIA_EXPERIMENT = new ExperimentType2SampleType("FACS_ARIA_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "FACS_ARIA_EXPERIMENT_NAME"); ExperimentType2SampleType FACS_ARIA_EXPERIMENT = new ExperimentType2SampleType("FACS_ARIA_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "FACS_ARIA_EXPERIMENT_NAME");
ExperimentType2SampleType INFLUX_EXPERIMENT = new ExperimentType2SampleType("INFLUX_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "INFLUX_EXPERIMENT_NAME"); ExperimentType2SampleType INFLUX_EXPERIMENT = new ExperimentType2SampleType("INFLUX_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "INFLUX_EXPERIMENT_NAME");
ExperimentType2SampleType LSR_FORTESSA_EXPERIMENT = new ExperimentType2SampleType("LSR_FORTESSA_EXPERIMENT","FLOW_ANALYZERS_EXPERIMENTS_COLLECTION", "LSR_FORTESSA_EXPERIMENT_NAME"); ExperimentType2SampleType LSR_FORTESSA_EXPERIMENT = new ExperimentType2SampleType("LSR_FORTESSA_EXPERIMENT","FLOW_ANALYZERS_EXPERIMENTS_COLLECTION", "LSR_FORTESSA_EXPERIMENT_NAME");
ExperimentType2SampleType MOFLO_XDP_EXPERIMENT = new ExperimentType2SampleType("MOFLO_XDP_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "MOFLO_XDP_EXPERIMENT_NAME"); ExperimentType2SampleType MOFLO_XDP_EXPERIMENT = new ExperimentType2SampleType("MOFLO_XDP_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "MOFLO_XDP_EXPERIMENT_NAME");
ExperimentType2SampleType S3E_EXPERIMENT = new ExperimentType2SampleType("S3E_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "S3E_EXPERIMENT_NAME"); ExperimentType2SampleType S3E_EXPERIMENT = new ExperimentType2SampleType("S3E_EXPERIMENT", "FLOW_SORTERS_EXPERIMENTS_COLLECTION", "S3E_EXPERIMENT_NAME");
// //
// 1. Installing new sample types // 1. Installing new sample types
// //
System.out.println("1. Installing types"); System.out.println("1. Installing types");
// Install Sample Types for Experiment Types // Install Sample Types for Experiment Types
List<ExperimentType2SampleType> experimentMigrationConfigs = Arrays.asList(MICROSCOPY_EXPERIMENT, List<ExperimentType2SampleType> experimentMigrationConfigs = Arrays.asList(MICROSCOPY_EXPERIMENT,
FACS_ARIA_EXPERIMENT, FACS_ARIA_EXPERIMENT,
...@@ -114,7 +117,7 @@ public class Main ...@@ -114,7 +117,7 @@ public class Main
LSR_FORTESSA_EXPERIMENT, LSR_FORTESSA_EXPERIMENT,
MOFLO_XDP_EXPERIMENT, MOFLO_XDP_EXPERIMENT,
S3E_EXPERIMENT); S3E_EXPERIMENT);
for(ExperimentType2SampleType experimentMigrationConfig:experimentMigrationConfigs) { for(ExperimentType2SampleType experimentMigrationConfig:experimentMigrationConfigs) {
if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, experimentMigrationConfig.getTypeCode())) { if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, experimentMigrationConfig.getTypeCode())) {
MasterdataHelper.createSampleTypesFromExperimentTypes(sessionToken, v3, Arrays.asList(experimentMigrationConfig.getTypeCode())); MasterdataHelper.createSampleTypesFromExperimentTypes(sessionToken, v3, Arrays.asList(experimentMigrationConfig.getTypeCode()));
...@@ -123,38 +126,38 @@ public class Main ...@@ -123,38 +126,38 @@ public class Main
System.out.println(experimentMigrationConfig.getTypeCode() + " Sample Type installation skipped."); System.out.println(experimentMigrationConfig.getTypeCode() + " Sample Type installation skipped.");
} }
} }
// Install Sample Type ORGANIZATION_UNIT // Install Sample Type ORGANIZATION_UNIT
if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, "ORGANIZATION_UNIT")) { if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, "ORGANIZATION_UNIT")) {
v3.createSampleTypes(sessionToken, Collections.singletonList(MasterdataHelper.getSampleTypeORGANIZATION_UNIT())); v3.createSampleTypes(sessionToken, Collections.singletonList(MasterdataHelper.getSampleTypeORGANIZATION_UNIT()));
} }
System.out.println("ORGANIZATION_UNIT Sample Type installed."); System.out.println("ORGANIZATION_UNIT Sample Type installed.");
if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doDataSetTypeExist(sessionToken, v3, "ATTACHMENT")) { if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doDataSetTypeExist(sessionToken, v3, "ATTACHMENT")) {
v3.createDataSetTypes(sessionToken, Collections.singletonList(MasterdataHelper.getDataSetTypeATTACHMENT())); v3.createDataSetTypes(sessionToken, Collections.singletonList(MasterdataHelper.getDataSetTypeATTACHMENT()));
} }
System.out.println("ATTACHMENT DataSet Type installed."); System.out.println("ATTACHMENT DataSet Type installed.");
// //
// 2. Creating new ORGANIZATION_UNITS_COLLECTION and MICROSCOPY_EXPERIMENTS_COLLECTION // 2. Creating new ORGANIZATION_UNITS_COLLECTION and MICROSCOPY_EXPERIMENTS_COLLECTION
// //
System.out.println("2. Creating new ORGANIZATION_UNITS_COLLECTION and MICROSCOPY_EXPERIMENTS_COLLECTION"); System.out.println("2. Creating new ORGANIZATION_UNITS_COLLECTION and MICROSCOPY_EXPERIMENTS_COLLECTION");
// Create General ORGANIZATION_UNIT Collection for every PROJECT following the pattern /SPACE/PROJECT/ORGANIZATION_UNIT_COLLECTION // Create General ORGANIZATION_UNIT Collection for every PROJECT following the pattern /SPACE/PROJECT/ORGANIZATION_UNIT_COLLECTION
// Create General ORGANIZATION_UNIT Collection for every SPACE following the pattern /SPACE/COMMON_ORGANIZATION_UNITS/ORGANIZATION_UNIT_COLLECTION // Create General ORGANIZATION_UNIT Collection for every SPACE following the pattern /SPACE/COMMON_ORGANIZATION_UNITS/ORGANIZATION_UNIT_COLLECTION
SpaceFetchOptions spaceFetchOptions = new SpaceFetchOptions(); SpaceFetchOptions spaceFetchOptions = new SpaceFetchOptions();
spaceFetchOptions.withProjects(); spaceFetchOptions.withProjects();
SearchResult<Space> spaces = v3.searchSpaces(sessionToken, new SpaceSearchCriteria(), spaceFetchOptions); SearchResult<Space> spaces = v3.searchSpaces(sessionToken, new SpaceSearchCriteria(), spaceFetchOptions);
for(Space space:spaces.getObjects()) { for(Space space:spaces.getObjects()) {
String spaceCode = space.getCode(); String spaceCode = space.getCode();
if(!EXCLUDE_SPACES.contains(spaceCode)) { if(!EXCLUDE_SPACES.contains(spaceCode)) {
// Install Project level collection // Install Project level collection
ProjectSearchCriteria projectSearchCriteria = new ProjectSearchCriteria(); ProjectSearchCriteria projectSearchCriteria = new ProjectSearchCriteria();
projectSearchCriteria.withSpace().withCode().equals(spaceCode); projectSearchCriteria.withSpace().withCode().equals(spaceCode);
for(Project project:space.getProjects()) { for(Project project:space.getProjects()) {
String experimentIdentifierOU = "/" + spaceCode + "/" + project.getCode() + "/ORGANIZATION_UNITS_COLLECTION"; String experimentIdentifierOU = "/" + spaceCode + "/" + project.getCode() + "/ORGANIZATION_UNITS_COLLECTION";
if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doExperimentExist(v3, sessionToken, experimentIdentifierOU)) { if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doExperimentExist(v3, sessionToken, experimentIdentifierOU)) {
...@@ -162,14 +165,14 @@ public class Main ...@@ -162,14 +165,14 @@ public class Main
} }
System.out.println("Project Experiment Created: " + experimentIdentifierOU); System.out.println("Project Experiment Created: " + experimentIdentifierOU);
} }
// Install Space level project and collection // Install Space level project and collection
String projectIdentifier = "/" + spaceCode + "/COMMON_ORGANIZATION_UNITS"; String projectIdentifier = "/" + spaceCode + "/COMMON_ORGANIZATION_UNITS";
if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doProjectExist(v3, sessionToken, projectIdentifier)) { if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doProjectExist(v3, sessionToken, projectIdentifier)) {
v3.createProjects(sessionToken, Collections.singletonList(MetadataHelper.getProjectCreation(spaceCode, "COMMON_ORGANIZATION_UNITS", "Folder to share common organization units collections."))); v3.createProjects(sessionToken, Collections.singletonList(MetadataHelper.getProjectCreation(spaceCode, "COMMON_ORGANIZATION_UNITS", "Folder to share common organization units collections.")));
} }
System.out.println("Space Project Created: " + projectIdentifier); System.out.println("Space Project Created: " + projectIdentifier);
String experimentIdentifier = "/" + spaceCode + "/COMMON_ORGANIZATION_UNITS/ORGANIZATION_UNITS_COLLECTION"; String experimentIdentifier = "/" + spaceCode + "/COMMON_ORGANIZATION_UNITS/ORGANIZATION_UNITS_COLLECTION";
if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doExperimentExist(v3, sessionToken, experimentIdentifier)) { if(COMMIT_CHANGES_TO_OPENBIS && !MetadataHelper.doExperimentExist(v3, sessionToken, experimentIdentifier)) {
v3.createExperiments(sessionToken, Collections.singletonList(MetadataHelper.getOrganizationUnitCollectionCreation(new ProjectIdentifier("/" + spaceCode + "/COMMON_ORGANIZATION_UNITS"), "ORGANIZATION_UNITS_COLLECTION"))); v3.createExperiments(sessionToken, Collections.singletonList(MetadataHelper.getOrganizationUnitCollectionCreation(new ProjectIdentifier("/" + spaceCode + "/COMMON_ORGANIZATION_UNITS"), "ORGANIZATION_UNITS_COLLECTION")));
...@@ -177,9 +180,9 @@ public class Main ...@@ -177,9 +180,9 @@ public class Main
System.out.println("Space Experiment Created: " + experimentIdentifier); System.out.println("Space Experiment Created: " + experimentIdentifier);
} }
} }
System.out.println("3. Translate Experiment to Samples"); System.out.println("3. Translate Experiment to Samples");
for(ExperimentType2SampleType config:experimentMigrationConfigs) { for(ExperimentType2SampleType config:experimentMigrationConfigs) {
int total = 0; int total = 0;
ExperimentSearchCriteria experimentSearchCriteria = new ExperimentSearchCriteria(); ExperimentSearchCriteria experimentSearchCriteria = new ExperimentSearchCriteria();
...@@ -192,7 +195,7 @@ public class Main ...@@ -192,7 +195,7 @@ public class Main
System.out.println("[DONE] " + config.getTypeCode() + "\t" + total + "/" + experiments.getTotalCount()); System.out.println("[DONE] " + config.getTypeCode() + "\t" + total + "/" + experiments.getTotalCount());
} }
} }
System.out.println("4. Translate Properties to Samples"); System.out.println("4. Translate Properties to Samples");
PropertyType2SampleType FACS_ARIA_TUBE = new PropertyType2SampleType( "FACS_ARIA_TUBE", "FACS_ARIA_SPECIMEN", "FACS_ARIA_SPECIMEN", "$NAME"); PropertyType2SampleType FACS_ARIA_TUBE = new PropertyType2SampleType( "FACS_ARIA_TUBE", "FACS_ARIA_SPECIMEN", "FACS_ARIA_SPECIMEN", "$NAME");
...@@ -201,16 +204,16 @@ public class Main ...@@ -201,16 +204,16 @@ public class Main
PropertyType2SampleType LSR_FORTESSA_TUBE = new PropertyType2SampleType( "LSR_FORTESSA_TUBE","LSR_FORTESSA_SPECIMEN","LSR_FORTESSA_SPECIMEN","$NAME"); PropertyType2SampleType LSR_FORTESSA_TUBE = new PropertyType2SampleType( "LSR_FORTESSA_TUBE","LSR_FORTESSA_SPECIMEN","LSR_FORTESSA_SPECIMEN","$NAME");
PropertyType2SampleType LSR_FORTESSA_WELL = new PropertyType2SampleType( "LSR_FORTESSA_WELL","LSR_FORTESSA_SPECIMEN","LSR_FORTESSA_SPECIMEN","$NAME"); PropertyType2SampleType LSR_FORTESSA_WELL = new PropertyType2SampleType( "LSR_FORTESSA_WELL","LSR_FORTESSA_SPECIMEN","LSR_FORTESSA_SPECIMEN","$NAME");
PropertyType2SampleType MOFLO_XDP_TUBE = new PropertyType2SampleType( "MOFLO_XDP_TUBE", "MOFLO_XDP_SPECIMEN", "MOFLO_XDP_SPECIMEN", "$NAME"); PropertyType2SampleType MOFLO_XDP_TUBE = new PropertyType2SampleType( "MOFLO_XDP_TUBE", "MOFLO_XDP_SPECIMEN", "MOFLO_XDP_SPECIMEN", "$NAME");
PropertyType2SampleType SE3_TUBE = new PropertyType2SampleType( "SE3_TUBE", "SE3_SPECIMEN", "SE3_SPECIMEN", "$NAME"); PropertyType2SampleType S3E_TUBE = new PropertyType2SampleType( "S3E_TUBE", "S3E_SPECIMEN", "S3E_SPECIMEN", "$NAME");
List<PropertyType2SampleType> propertiesMigrationConfigs = Arrays.asList(FACS_ARIA_TUBE, List<PropertyType2SampleType> propertiesMigrationConfigs = Arrays.asList(FACS_ARIA_TUBE,
FACS_ARIA_WELL, FACS_ARIA_WELL,
INFLUX_TUBE, INFLUX_TUBE,
LSR_FORTESSA_TUBE, LSR_FORTESSA_TUBE,
LSR_FORTESSA_WELL, LSR_FORTESSA_WELL,
MOFLO_XDP_TUBE, MOFLO_XDP_TUBE,
SE3_TUBE); S3E_TUBE);
for(PropertyType2SampleType propertyMigrationConfigs:propertiesMigrationConfigs) { for(PropertyType2SampleType propertyMigrationConfigs:propertiesMigrationConfigs) {
if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, propertyMigrationConfigs.getNewSampleTypeCode())) { if(COMMIT_CHANGES_TO_OPENBIS && !MasterdataHelper.doSampleTypeExist(sessionToken, v3, propertyMigrationConfigs.getNewSampleTypeCode())) {
MasterdataHelper.createDefaultSampleType(sessionToken, v3, propertyMigrationConfigs.getNewSampleTypeCode()); MasterdataHelper.createDefaultSampleType(sessionToken, v3, propertyMigrationConfigs.getNewSampleTypeCode());
...@@ -219,7 +222,7 @@ public class Main ...@@ -219,7 +222,7 @@ public class Main
System.out.println(propertyMigrationConfigs.getNewSampleTypeCode() + " Sample Type installation skipped."); System.out.println(propertyMigrationConfigs.getNewSampleTypeCode() + " Sample Type installation skipped.");
} }
} }
for(PropertyType2SampleType config:propertiesMigrationConfigs) { for(PropertyType2SampleType config:propertiesMigrationConfigs) {
int total = 0; int total = 0;
SampleSearchCriteria sampleSearchCriteria = new SampleSearchCriteria(); SampleSearchCriteria sampleSearchCriteria = new SampleSearchCriteria();
...@@ -232,5 +235,30 @@ public class Main ...@@ -232,5 +235,30 @@ public class Main
System.out.println("[DONE] " + config.getOldSampleTypeCode() + "\t" + total + "/" + samples.getTotalCount()); System.out.println("[DONE] " + config.getOldSampleTypeCode() + "\t" + total + "/" + samples.getTotalCount());
} }
} }
System.out.println("5. Copy Property A to Property B on Samples and DataSets");
EntityPropertyCopy LSR_FORTESSA_PLATE_p = new SamplePropertyCopy( "LSR_FORTESSA_PLATE", "LSR_FORTESSA_PLATE_NAME", "$NAME");
EntityPropertyCopy LSR_FORTESSA_TUBE_p = new SamplePropertyCopy( "LSR_FORTESSA_TUBE", "LSR_FORTESSA_TUBE_NAME", "$NAME");
EntityPropertyCopy LSR_FORTESSA_WELL_p = new SamplePropertyCopy( "LSR_FORTESSA_WELL", "LSR_FORTESSA_WELL_NAME", "$NAME");
EntityPropertyCopy FACS_ARIA_TUBE_p = new SamplePropertyCopy( "FACS_ARIA_TUBE", "FACS_ARIA_TUBE_NAME", "$NAME");
EntityPropertyCopy INFLUX_TUBE_p = new SamplePropertyCopy( "INFLUX_TUBE", "INFLUX_TUBE_NAME", "$NAME");
EntityPropertyCopy MOFLO_XDP_TUBE_p = new SamplePropertyCopy( "MOFLO_XDP_TUBE", "MOFLO_XDP_TUBE_NAME", "$NAME");
EntityPropertyCopy S3E_TUBE_p = new SamplePropertyCopy( "S3E_TUBE", "S3E_NAME", "$NAME");
EntityPropertyCopy MICROSCOPY_SAMPLE_TYPE_p = new SamplePropertyCopy( "MICROSCOPY_SAMPLE_TYPE", "MICROSCOPY_SAMPLE_NAME", "$NAME");
EntityPropertyCopy MICROSCOPY_ACCESSORY_FILE_p = new DataSetPropertyCopy("MICROSCOPY_ACCESSORY_FILE","MICROSCOPY_ACCESSORY_FILE_NAME", "$NAME");
List<EntityPropertyCopy> propertyCopiesMigrationConfig = Arrays.asList(LSR_FORTESSA_PLATE_p,
LSR_FORTESSA_TUBE_p,
LSR_FORTESSA_WELL_p,
FACS_ARIA_TUBE_p,
INFLUX_TUBE_p,
MOFLO_XDP_TUBE_p,
S3E_TUBE_p,
MICROSCOPY_SAMPLE_TYPE_p,
MICROSCOPY_ACCESSORY_FILE_p);
for (EntityPropertyCopy config:propertyCopiesMigrationConfig) {
config.copy(sessionToken, v3);
}
} }
} }
package ethz.ch; package ethz.ch;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.ListUpdateValue;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetTypeCreation;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetTypeUpdate;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentTypeCreation;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions;
...@@ -25,6 +25,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.search.PropertyTypeSear ...@@ -25,6 +25,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.search.PropertyTypeSear
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleTypeUpdate;
public class MasterdataHelper public class MasterdataHelper
{ {
...@@ -158,7 +159,55 @@ public class MasterdataHelper ...@@ -158,7 +159,55 @@ public class MasterdataHelper
createExperimentTypeIfMissing(sessionToken, v3, creation); createExperimentTypeIfMissing(sessionToken, v3, creation);
} }
//
// Get
//
public static SampleType getSampleType(String sessionToken, IApplicationServerApi v3, String typeCode) {
EntityTypePermId id = new EntityTypePermId(typeCode);
SampleTypeFetchOptions fetchOptions = new SampleTypeFetchOptions();
fetchOptions.withPropertyAssignments().withPropertyType();
Map<IEntityTypeId, SampleType> types = v3.getSampleTypes(sessionToken, Arrays.asList(id), fetchOptions);
return types.get(id);
}
public static DataSetType getDataSetType(String sessionToken, IApplicationServerApi v3, String typeCode) {
EntityTypePermId id = new EntityTypePermId(typeCode);
DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
fetchOptions.withPropertyAssignments().withPropertyType();
Map<IEntityTypeId, DataSetType> types = v3.getDataSetTypes(sessionToken, Arrays.asList(id), fetchOptions);
return types.get(id);
}
//
// Update
//
public static void updateSampleType(String sessionToken, IApplicationServerApi v3, String typeCode, int addOrder, String addPropertyTypeCode) {
SampleTypeUpdate update = new SampleTypeUpdate();
update.setTypeId(new EntityTypePermId(typeCode));
ListUpdateValue.ListUpdateActionAdd add = new ListUpdateValue.ListUpdateActionAdd();
PropertyAssignmentCreation propertyAssignmentCreation = new PropertyAssignmentCreation();
propertyAssignmentCreation.setOrdinal(addOrder);
propertyAssignmentCreation.setPropertyTypeId(new PropertyTypePermId(addPropertyTypeCode));
add.setItems(Arrays.asList(propertyAssignmentCreation));
update.setPropertyAssignmentActions(Arrays.asList(add));
v3.updateSampleTypes(sessionToken, Arrays.asList(update));
}
public static void updateDataSetType(String sessionToken, IApplicationServerApi v3, String typeCode, int addOrder, String addPropertyTypeCode) {
DataSetTypeUpdate update = new DataSetTypeUpdate();
update.setTypeId(new EntityTypePermId(typeCode));
ListUpdateValue.ListUpdateActionAdd add = new ListUpdateValue.ListUpdateActionAdd();
PropertyAssignmentCreation propertyAssignmentCreation = new PropertyAssignmentCreation();
propertyAssignmentCreation.setOrdinal(addOrder);
propertyAssignmentCreation.setPropertyTypeId(new PropertyTypePermId(addPropertyTypeCode));
add.setItems(Arrays.asList(propertyAssignmentCreation));
update.setPropertyAssignmentActions(Arrays.asList(add));
v3.updateDataSetTypes(sessionToken, Arrays.asList(update));
}
// //
// Type to translate Attachments to DataSets // Type to translate Attachments to DataSets
// //
......
...@@ -9,6 +9,10 @@ import java.util.List; ...@@ -9,6 +9,10 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment;
...@@ -27,6 +31,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; ...@@ -27,6 +31,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId;
...@@ -133,7 +139,23 @@ public class MetadataHelper ...@@ -133,7 +139,23 @@ public class MetadataHelper
// //
// Gets // Gets
// //
public static List<Sample> getSamples(String sessionToken, IApplicationServerApi v3, String typeCode) {
SampleSearchCriteria sampleSearchCriteria = new SampleSearchCriteria();
sampleSearchCriteria.withType().withCode().thatEquals(typeCode);
SampleFetchOptions fetchOptions = new SampleFetchOptions();
fetchOptions.withProperties();
return v3.searchSamples(sessionToken, sampleSearchCriteria, fetchOptions).getObjects();
}
public static List<DataSet> getDataSets(String sessionToken, IApplicationServerApi v3, String typeCode) {
DataSetSearchCriteria searchCriteria = new DataSetSearchCriteria();
searchCriteria.withType().withCode().thatEquals(typeCode);
DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
fetchOptions.withProperties();
return v3.searchDataSets(sessionToken, searchCriteria, fetchOptions).getObjects();
}
public static Sample getSample(String sessionToken, IApplicationServerApi v3, ISampleId sampleId) { public static Sample getSample(String sessionToken, IApplicationServerApi v3, ISampleId sampleId) {
SampleFetchOptions fo = new SampleFetchOptions(); SampleFetchOptions fo = new SampleFetchOptions();
fo.withProperties(); fo.withProperties();
...@@ -166,5 +188,22 @@ public class MetadataHelper ...@@ -166,5 +188,22 @@ public class MetadataHelper
throw new RuntimeException("Experiment with PermId not found: " + permId.getPermId()); throw new RuntimeException("Experiment with PermId not found: " + permId.getPermId());
} }
} }
//
// Update
//
public static void updateSampleProperty(String sessionToken, IApplicationServerApi v3, String permId, String propertyCode, String propertyValue) {
SampleUpdate update = new SampleUpdate();
update.setSampleId(new SamplePermId(permId));
update.setProperty(propertyCode, propertyValue);
v3.updateSamples(sessionToken, Arrays.asList(update));
}
public static void updateDataSetProperty(String sessionToken, IApplicationServerApi v3, String permId, String propertyCode, String propertyValue) {
DataSetUpdate update = new DataSetUpdate();
update.setDataSetId(new DataSetPermId(permId));
update.setProperty(propertyCode, propertyValue);
v3.updateDataSets(sessionToken, Arrays.asList(update));
}
} }
package ethz.ch.dataset;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertyAssignmentsHolder;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet;
import ethz.ch.MasterdataHelper;
import ethz.ch.MetadataHelper;
import ethz.ch.property.EntityPropertyCopy;
import java.util.List;
public class DataSetPropertyCopy extends EntityPropertyCopy<DataSet> {
public DataSetPropertyCopy(String typeCode, String oldPropertyCode, String newPropertyCode) {
super(typeCode, oldPropertyCode, newPropertyCode);
}
@Override
public IPropertyAssignmentsHolder getPropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3) {
return MasterdataHelper.getDataSetType(sessionToken, v3, typeCode);
}
@Override
public void updatePropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3) {
MasterdataHelper.updateDataSetType(sessionToken, v3, typeCode, 1, newPropertyCode);
}
@Override
public List<DataSet> getEntities(String sessionToken, IApplicationServerApi v3) {
return MetadataHelper.getDataSets(sessionToken, v3, typeCode);
}
@Override
public void updateEntityProperty(String sessionToken, IApplicationServerApi v3, DataSet entity) {
MetadataHelper.updateDataSetProperty(sessionToken, v3, entity.getPermId().getPermId(), newPropertyCode, entity.getProperty(oldPropertyCode));
}
}
package ethz.ch.property;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPermIdHolder;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertyAssignmentsHolder;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment;
import java.util.List;
public abstract class EntityPropertyCopy<ENTITY extends IPermIdHolder & IPropertiesHolder> {
protected String typeCode;
protected String oldPropertyCode;
protected String newPropertyCode;
public EntityPropertyCopy(String typeCode, String oldPropertyCode, String newPropertyCode) {
this.typeCode = typeCode;
this.oldPropertyCode = oldPropertyCode;
this.newPropertyCode = newPropertyCode;
}
public abstract IPropertyAssignmentsHolder getPropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3);
public abstract void updatePropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3);
public abstract List<ENTITY> getEntities(String sessionToken, IApplicationServerApi v3);
public abstract void updateEntityProperty(String sessionToken, IApplicationServerApi v3, ENTITY entity);
public void copy(String sessionToken, IApplicationServerApi v3) {
// Is Property B assigned to the type? If not Do
System.out.println("5. Copy Property " + oldPropertyCode + " to Property " + newPropertyCode + " on " + typeCode);
IPropertyAssignmentsHolder propertyAssignmentsHolder = getPropertyAssignmentsHolder(sessionToken, v3);
boolean found = false;
for (PropertyAssignment propertyAssignment:propertyAssignmentsHolder.getPropertyAssignments()) {
found = propertyAssignment.getPropertyType().getCode().equals(newPropertyCode);
if (found) {
break;
}
}
if (!found) {
System.out.println("Property Type " + newPropertyCode + " not found on " + typeCode);
updatePropertyAssignmentsHolder(sessionToken, v3);
System.out.println("Property Type " + newPropertyCode + " created on " + typeCode);
}
// Copy
int total = 0;
List<ENTITY> entities = getEntities(sessionToken, v3);
for(ENTITY entity:entities) {
if (entity.getProperty(oldPropertyCode) != null) {
if(!entity.getProperty(oldPropertyCode).equals(entity.getProperty(newPropertyCode))) {
updateEntityProperty(sessionToken, v3, entity);
System.out.println("[PREPARING] " + entity.getPermId() + "\t" + entity.getProperty(oldPropertyCode) + "\t" + total + "/" + entities.size());
} else {
System.out.println("[SKIP] " + entity.getPermId() + "\t" + entity.getProperty(oldPropertyCode) + "\t" + total + "/" + entities.size());
}
}
total++;
}
System.out.println("[DONE] " + total + "/" + entities.size());
}
}
package ethz.ch.sample;
import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertyAssignmentsHolder;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample;
import ethz.ch.MasterdataHelper;
import ethz.ch.MetadataHelper;
import ethz.ch.property.EntityPropertyCopy;
import java.util.List;
public class SamplePropertyCopy extends EntityPropertyCopy<Sample> {
public SamplePropertyCopy(String typeCode, String oldPropertyCode, String newPropertyCode) {
super(typeCode, oldPropertyCode, newPropertyCode);
}
@Override
public IPropertyAssignmentsHolder getPropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3) {
return MasterdataHelper.getSampleType(sessionToken, v3, typeCode);
}
@Override
public void updatePropertyAssignmentsHolder(String sessionToken, IApplicationServerApi v3) {
MasterdataHelper.updateSampleType(sessionToken, v3, typeCode, 1, newPropertyCode);
}
@Override
public List<Sample> getEntities(String sessionToken, IApplicationServerApi v3) {
return MetadataHelper.getSamples(sessionToken, v3, typeCode);
}
@Override
public void updateEntityProperty(String sessionToken, IApplicationServerApi v3, Sample entity) {
MetadataHelper.updateSampleProperty(sessionToken, v3, entity.getPermId().getPermId(), newPropertyCode, entity.getProperty(oldPropertyCode));
}
}
...@@ -193,7 +193,7 @@ $.extend(MicroscopyTechnology.prototype, ELNLIMSPlugin.prototype, { ...@@ -193,7 +193,7 @@ $.extend(MicroscopyTechnology.prototype, ELNLIMSPlugin.prototype, {
// we will replace it asynchronously. // we will replace it asynchronously.
var thumbnailImage = $("<img />", var thumbnailImage = $("<img />",
{ {
src: "./img/wait.png", src: "./img/image_loading.gif",
class: "img-responsive", class: "img-responsive",
display: "inline", display: "inline",
"text-align": "center", "text-align": "center",
...@@ -296,7 +296,7 @@ $.extend(MicroscopyTechnology.prototype, ELNLIMSPlugin.prototype, { ...@@ -296,7 +296,7 @@ $.extend(MicroscopyTechnology.prototype, ELNLIMSPlugin.prototype, {
if (result.getTotalCount() == 0) { if (result.getTotalCount() == 0) {
// Thumbnail not found! // Thumbnail not found!
imD.attr("src", "./img/error.png"); imD.attr("src", "./img/image_unavailable.png");
imD.attr("title", "Could not find a thumbnail for this dataset!"); imD.attr("title", "Could not find a thumbnail for this dataset!");
return; return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment