Skip to content
Snippets Groups Projects
Commit 5bef8887 authored by vkovtun's avatar vkovtun
Browse files

BIS-772: Working on data export. Added a folder name generator.

parent 8e9791c8
No related branches found
No related tags found
1 merge request!40SSDM-13578 : 2PT : Database and V3 Implementation - include the new AFS "free"...
...@@ -341,7 +341,15 @@ public class ExportExecutor implements IExportExecutor ...@@ -341,7 +341,15 @@ public class ExportExecutor implements IExportExecutor
final EntitiesVo entitiesVo, final Set<String> existingZipEntries, final EntitiesVo entitiesVo, final Set<String> existingZipEntries,
final Map<String, Map<String, List<Map<String, String>>>> exportFields) final Map<String, Map<String, List<Map<String, String>>>> exportFields)
{ {
final Collection<DataSet> dataSets = entitiesVo.getDataSets(); // final Collection<DataSet> dataSets = entitiesVo.getDataSets();
final Collection<Sample> samples = entitiesVo.getSamples();
for (final Sample sample : samples)
{
final List<DataSet> dataSets = sample.getDataSets();
}
} }
private void exportSpacesDoc(final ZipOutputStream zos, final BufferedOutputStream bos, final String sessionToken, private void exportSpacesDoc(final ZipOutputStream zos, final BufferedOutputStream bos, final String sessionToken,
...@@ -826,6 +834,64 @@ public class ExportExecutor implements IExportExecutor ...@@ -826,6 +834,64 @@ public class ExportExecutor implements IExportExecutor
return entryBuilder.toString(); return entryBuilder.toString();
} }
static String getFolderName(final char prefix, final String spaceCode, final String projectCode,
final String containerCode, final String entityCode, final String entityName)
{
if (prefix != 'O' && prefix != 'E')
{
throw new IllegalArgumentException("Only 'O' and 'E' can be used as prefix.");
}
final StringBuilder entryBuilder = new StringBuilder(String.valueOf(prefix));
if (spaceCode != null)
{
entryBuilder.append('+').append(spaceCode);
} else if (prefix == 'E')
{
throw new IllegalArgumentException("Space code cannot be null for experiments.");
} else if (projectCode != null)
{
throw new IllegalArgumentException("If space code is null project code should be also null.");
}
if (projectCode != null)
{
entryBuilder.append('+').append(projectCode);
} else if (prefix == 'E')
{
throw new IllegalArgumentException("Project code cannot be null for experiments.");
}
entryBuilder.append('+');
if (containerCode != null)
{
if (prefix == 'O')
{
entryBuilder.append(containerCode).append('*');
} else
{
throw new IllegalArgumentException("Only objects can have containers.");
}
}
if (entityCode != null)
{
entryBuilder.append(entityCode);
} else
{
throw new IllegalArgumentException();
}
if (entityName != null)
{
entryBuilder.append('+').append(entityName);
}
return entryBuilder.toString();
}
private static void addFullEntityName(final StringBuilder entryBuilder, final String entityCode, final String entityName) private static void addFullEntityName(final StringBuilder entryBuilder, final String entityCode, final String entityName)
{ {
if (entityName == null || entityName.isEmpty()) if (entityName == null || entityName.isEmpty())
...@@ -1230,25 +1296,24 @@ public class ExportExecutor implements IExportExecutor ...@@ -1230,25 +1296,24 @@ public class ExportExecutor implements IExportExecutor
private static class EntitiesVo private static class EntitiesVo
{ {
final Collection<Space> spaces; private final String sessionToken;
private final Map<ExportableKind, List<String>> groupedExportablePermIds;
final Collection<Project> projects; private Collection<Space> spaces;
final Collection<Experiment> experiments; private Collection<Project> projects;
final Collection<Sample> samples; private Collection<Experiment> experiments;
final Collection<DataSet> dataSets; private Collection<Sample> samples;
private Collection<DataSet> dataSets;
private EntitiesVo(final String sessionToken, final List<ExportablePermId> exportablePermIds) private EntitiesVo(final String sessionToken, final List<ExportablePermId> exportablePermIds)
{ {
final Map<ExportableKind, List<String>> groupedExportablePermIds = getGroupedExportablePermIds(exportablePermIds); this.sessionToken = sessionToken;
groupedExportablePermIds = getGroupedExportablePermIds(exportablePermIds);
spaces = EntitiesFinder.getSpaces(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.SPACE, List.of()));
projects = EntitiesFinder.getProjects(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.PROJECT, List.of()));
experiments = EntitiesFinder.getExperiments(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.EXPERIMENT, List.of()));
samples = EntitiesFinder.getSamples(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.SAMPLE, List.of()));
dataSets = EntitiesFinder.getDataSets(sessionToken, groupedExportablePermIds.getOrDefault(DATASET, List.of()));
} }
private static Map<ExportableKind, List<String>> getGroupedExportablePermIds(final List<ExportablePermId> exportablePermIds) private static Map<ExportableKind, List<String>> getGroupedExportablePermIds(final List<ExportablePermId> exportablePermIds)
...@@ -1266,26 +1331,47 @@ public class ExportExecutor implements IExportExecutor ...@@ -1266,26 +1331,47 @@ public class ExportExecutor implements IExportExecutor
public Collection<Space> getSpaces() public Collection<Space> getSpaces()
{ {
if (spaces == null)
{
spaces = EntitiesFinder.getSpaces(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.SPACE, List.of()));
}
return spaces; return spaces;
} }
public Collection<Project> getProjects() public Collection<Project> getProjects()
{ {
if (projects == null)
{
projects = EntitiesFinder.getProjects(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.PROJECT, List.of()));
}
return projects; return projects;
} }
public Collection<Experiment> getExperiments() public Collection<Experiment> getExperiments()
{ {
if (experiments == null)
{
experiments = EntitiesFinder.getExperiments(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.EXPERIMENT, List.of()));
}
return experiments; return experiments;
} }
public Collection<Sample> getSamples() public Collection<Sample> getSamples()
{ {
if (samples == null)
{
samples = EntitiesFinder.getSamples(sessionToken, groupedExportablePermIds.getOrDefault(ExportableKind.SAMPLE, List.of()));
}
return samples; return samples;
} }
public Collection<DataSet> getDataSets() public Collection<DataSet> getDataSets()
{ {
if (dataSets == null)
{
dataSets = EntitiesFinder.getDataSets(sessionToken, groupedExportablePermIds.getOrDefault(DATASET, List.of()));
}
return dataSets; return dataSets;
} }
......
...@@ -30,6 +30,10 @@ public class ExportExecutorTest ...@@ -30,6 +30,10 @@ public class ExportExecutorTest
private static final String ERRONEOUS_NEXT_ZIP_ENTRY_DATA_PROVIDER = "erroneousNextZipEntryData"; private static final String ERRONEOUS_NEXT_ZIP_ENTRY_DATA_PROVIDER = "erroneousNextZipEntryData";
private static final String FOLDER_NAME_DATA_PROVIDER = "folderNameData";
private static final String ERRONEOUS_FOLDER_NAME_DATA_PROVIDER = "erroneousFolderNameData";
private static final String SPACE_CODE = "TEST_SPACE"; private static final String SPACE_CODE = "TEST_SPACE";
private static final String PROJECT_CODE = "TEST_PROJECT"; private static final String PROJECT_CODE = "TEST_PROJECT";
...@@ -46,7 +50,7 @@ public class ExportExecutorTest ...@@ -46,7 +50,7 @@ public class ExportExecutorTest
private static final String DATA_SET_CODE = "TEST_DATA_SET"; private static final String DATA_SET_CODE = "TEST_DATA_SET";
private static final Object[][] DATA = { private static final Object[][] NEXT_ZIP_ENTRY_DATA = {
{ {
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
String.format("%s/", PDF_DIRECTORY) String.format("%s/", PDF_DIRECTORY)
...@@ -179,7 +183,7 @@ public class ExportExecutorTest ...@@ -179,7 +183,7 @@ public class ExportExecutorTest
}, },
}; };
private static final Object[][] ERRONEOUS_DATA = { private static final Object[][] ERRONEOUS_NEXT_ZIP_ENTRY_DATA = {
{ {
null, PROJECT_CODE, null, null, null, null, null, null null, PROJECT_CODE, null, null, null, null, null, null
}, },
...@@ -209,16 +213,84 @@ public class ExportExecutorTest ...@@ -209,16 +213,84 @@ public class ExportExecutorTest
}, },
}; };
private static final Object[][] FOLDER_NAME_DATA = {
{
'O', "SPACE", "PROJECT", null, "CODE_A", "NAME_A", "O+SPACE+PROJECT+CODE_A+NAME_A"
},
{
'O', "SPACE", null, null, "CODE_A", "NAME_A", "O+SPACE+CODE_A+NAME_A"
},
{
'O', null, null, null, "CODE_A", "NAME_A", "O+CODE_A+NAME_A"
},
{
'E', "SPACE", "PROJECT", null, "CODE_A", null, "E+SPACE+PROJECT+CODE_A"
},
{
'O', "SPACE", "PROJECT", "CODE_B", "CODE_A", "NAME_A", "O+SPACE+PROJECT+CODE_B*CODE_A+NAME_A"
},
};
private static final Object[][] ERRONEOUS_FOLDER_NAME_DATA = {
{
'P', "SPACE", "PROJECT", null, "CODE_A", "NAME_A"
},
{
'O', null, "PROJECT", null, "CODE_A", "NAME_A"
},
{
'O', "SPACE", "PROJECT", null, null, "NAME_A"
},
{
'O', "SPACE", "PROJECT", null, null, null
},
{
'O', "SPACE", "PROJECT", "CODE_B", null, "NAME_A"
},
{
'O', "SPACE", "PROJECT", "CODE_B", null, null
},
{
// Experiments cannot have containers
'E', "SPACE", "PROJECT", "CODE_B", "CODE_A", null
},
{
// Experiments cannot have containers
'E', "SPACE", "PROJECT", "CODE_B", "CODE_A", "NAME_A"
},
{
// Experiments cannot be on the space level
'E', "SPACE", null, null, "CODE_A", "NAME_A"
},
{
// Experiments cannot be standalone
'E', null, null, null, "CODE_A", "NAME_A"
},
};
@DataProvider @DataProvider
protected Object[][] nextZipEntryData() private Object[][] nextZipEntryData()
{ {
return DATA; return NEXT_ZIP_ENTRY_DATA;
} }
@DataProvider @DataProvider
protected Object[][] erroneousNextZipEntryData() private Object[][] erroneousNextZipEntryData()
{ {
return ERRONEOUS_DATA; return ERRONEOUS_NEXT_ZIP_ENTRY_DATA;
}
@DataProvider
private Object[][] folderNameData()
{
return FOLDER_NAME_DATA;
}
@DataProvider
private Object[][] erroneousFolderNameData()
{
return ERRONEOUS_FOLDER_NAME_DATA;
} }
@Test(dataProvider = NEXT_ZIP_ENTRY_DATA_PROVIDER) @Test(dataProvider = NEXT_ZIP_ENTRY_DATA_PROVIDER)
...@@ -236,4 +308,19 @@ public class ExportExecutorTest ...@@ -236,4 +308,19 @@ public class ExportExecutorTest
ExportExecutor.getNextDocZipEntry(spaceCode, projectCode, experimentCode, experimentName, sampleCode, sampleName, dataSetCode, extension); ExportExecutor.getNextDocZipEntry(spaceCode, projectCode, experimentCode, experimentName, sampleCode, sampleName, dataSetCode, extension);
} }
@Test(dataProvider = FOLDER_NAME_DATA_PROVIDER)
public void testGetFolderName(final char prefix, final String spaceCode, final String projectCode,
final String containerCode, final String entityCode, final String entityName, final String expectedResult)
{
assertEquals(ExportExecutor.getFolderName(prefix, spaceCode, projectCode, containerCode, entityCode, entityName),
expectedResult);
}
@Test(dataProvider = ERRONEOUS_FOLDER_NAME_DATA_PROVIDER, expectedExceptions = IllegalArgumentException.class)
public void testGetFolderNameError(final char prefix, final String spaceCode, final String projectCode,
final String containerCode, final String entityCode, final String entityName)
{
ExportExecutor.getFolderName(prefix, spaceCode, projectCode, containerCode, entityCode, entityName);
}
} }
\ No newline at end of file
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