use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.
the class FolderAccessTest method shouldInsertFolderWithSubfolders.
@Test
@Ignore
public void shouldInsertFolderWithSubfolders() throws Exception {
// the creation and commit returning valid ids implies that the FolderMockDataProvider.java has provided the corresponding result for each SQL generated when inserting
// create folder to insert
Folder folder = new Folder();
UIDBasedId uid = new ObjectVersionId("f8a2af65-fe89-45a4-9456-07c5e17b1634");
ObjectVersionId uidim = new ObjectVersionId("f8a2af65-fe89-45a4-9456-07c5e17b1634");
folder.setUid(uid);
DvText name = new DvText();
name.setValue("nameOfFolder1");
folder.setName(name);
folder.setArchetypeNodeId("archetype_1");
ItemStructure is = new ItemStructure() {
@Override
public List getItems() {
Item item = new Item() {
@Override
public DvText getName() {
return new DvText("fol1");
}
};
List<Item> items = new ArrayList<>();
items.add(item);
return items;
}
};
folder.setDetails(is);
// create subfolder
Folder folder2 = new Folder();
UIDBasedId uid2 = new ObjectVersionId("f0a2af65-fe89-45a4-9456-07c5e17b1634");
ObjectVersionId uidim2 = new ObjectVersionId("f0a2af65-fe89-45a4-9456-07c5e17b1634");
folder2.setUid(uid2);
DvText name2 = new DvText();
name2.setValue("nameOfFolder2");
folder2.setName(name2);
folder2.setArchetypeNodeId("archetype_2");
ItemStructure is2 = new ItemStructure() {
@Override
public List getItems() {
Item item = new Item() {
@Override
public DvText getName() {
return new DvText("fol2");
}
};
List<Item> items = new ArrayList<>();
items.add(item);
return items;
}
};
folder2.setDetails(is2);
// create subfolder (grandson)
Folder folder3 = new Folder();
UIDBasedId uid3 = new ObjectVersionId("f4a2af65-fe89-45a4-9456-07c5e17b1634");
ObjectVersionId uidim3 = new ObjectVersionId("f4a2af65-fe89-45a4-9456-07c5e17b1634");
folder3.setUid(uid3);
DvText name3 = new DvText();
name3.setValue("nameOfFolder3");
folder3.setName(name3);
folder3.setArchetypeNodeId("archetype_3");
ItemStructure is3 = new ItemStructure() {
@Override
public List getItems() {
Item item = new Item() {
@Override
public DvText getName() {
return super.getName();
}
};
List<Item> items = new ArrayList<>();
items.add(item);
return items;
}
};
folder3.setDetails(is3);
// add subfolders
folder.getFolders().add(folder2);
folder2.addFolder(folder3);
// insert folder
FolderAccess fa1 = new FolderAccess(testDomainAccess);
FolderAccess fa2 = (FolderAccess) FolderAccess.getNewFolderAccessInstance(fa1, folder, DateTime.now(), UUID.fromString("f6a2af65-fe89-45a4-9456-07c5e17b1634"));
assertEquals("f8a2af65-fe89-45a4-9456-07c5e17b1634", fa2.getFolderRecord().getId().toString());
assertEquals("archetype_1", fa2.getFolderRecord().getArchetypeNodeId());
assertEquals("nameOfFolder1", fa2.getFolderRecord().getName());
String expected = ("'{\n" + " \"_type\" : \"\",\n" + " \"items\" : [ {\n" + " \"name\" : {\n" + " \"_type\" : \"DV_TEXT\",\n" + " \"value\" : \"fol1\"\n" + " }\n" + " } ]\n" + "}'::jsonb").replaceAll("\\n|\\r\\n", // avoids problems amond different platforms due to different representations of line change.
System.getProperty("line.separator"));
// avoids problems amond different platforms due to different representations of line change.
;
StringWriter expectedStringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(expectedStringWriter);
// avoids problems amond different platforms due to different representations of line change.
printWriter.print(expected);
printWriter.close();
assertEquals(expectedStringWriter.toString(), fa2.getFolderRecord().getDetails().toString());
assertEquals("f0a2af65-fe89-45a4-9456-07c5e17b1634", ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getId().toString());
assertEquals("archetype_2", ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getArchetypeNodeId());
assertEquals("nameOfFolder2", ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getName());
String expected2 = ("'{\n" + " \"_type\" : \"\",\n" + " \"items\" : [ {\n" + " \"name\" : {\n" + " \"_type\" : \"DV_TEXT\",\n" + " \"value\" : \"fol2\"\n" + " }\n" + " } ]\n" + "}'::jsonb").replaceAll("\\n|\\r\\n", // avoids problems amond different platforms due to different representations of line change.
System.getProperty("line.separator"));
expectedStringWriter = new StringWriter();
// avoids problems amond different platforms due to different representations of line change.
printWriter = new PrintWriter(expectedStringWriter);
printWriter.print(expected2);
printWriter.close();
assertEquals(expectedStringWriter.toString(), ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getDetails().toString());
assertEquals("f4a2af65-fe89-45a4-9456-07c5e17b1634", ((FolderAccess) ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getSubfoldersList().get(UUID.fromString("f4a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getId().toString());
assertEquals("archetype_3", ((FolderAccess) ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getSubfoldersList().get(UUID.fromString("f4a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getArchetypeNodeId());
assertEquals("nameOfFolder3", ((FolderAccess) ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getSubfoldersList().get(UUID.fromString("f4a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getName());
String expected3 = ("'{\n" + " \"_type\" : \"\",\n" + " \"items\" : [ { } ]\n" + "}'::jsonb").replaceAll("\\n|\\r\\n", // avoids problems amond different platforms due to different representations of line change.
System.getProperty("line.separator"));
expectedStringWriter = new StringWriter();
printWriter = new PrintWriter(expectedStringWriter);
// avoids problems amond different platforms due to different representations of line change.
printWriter.print(expected3);
assertEquals(expectedStringWriter.toString(), ((FolderAccess) ((FolderAccess) fa2.getSubfoldersList().get(UUID.fromString("f0a2af65-fe89-45a4-9456-07c5e17b1634"))).getSubfoldersList().get(UUID.fromString("f4a2af65-fe89-45a4-9456-07c5e17b1634"))).getFolderRecord().getDetails().toString());
expectedStringWriter.flush();
printWriter.flush();
printWriter.close();
UUID storedFolderUid = fa2.commit(LocalDateTime.now(), UUID.randomUUID());
// commit should return the top level folderId
assertEquals("f8a2af65-fe89-45a4-9456-07c5e17b1634", storedFolderUid.toString());
}
use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.
the class FolderAccessTest method canBuildBasicFolderAccessForInsert.
@Test
public void canBuildBasicFolderAccessForInsert() throws IOException {
UUID ehrId = UUID.randomUUID();
Folder folder = generateFolderFromTestFile(FolderTestDataCanonicalJson.FLAT_FOLDER_INSERT);
I_ContributionAccess contributionAccess = I_ContributionAccess.getInstance(testDomainAccess, ehrId);
I_FolderAccess folderAccess = FolderAccess.buildNewFolderAccessHierarchy(testDomainAccess, folder, Timestamp.from(Instant.now()), ehrId, contributionAccess);
assertThat(folderAccess).isNotNull();
assertThat(folderAccess.getSubfoldersList().size()).isEqualTo(0);
assertThat(folderAccess.getFolderName()).isEqualTo("Flat root");
assertThat(folderAccess.isFolderActive()).isTrue();
}
use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.
the class FolderAccessTest method canBuildNestedFolderAccessForInsert.
@Test
public void canBuildNestedFolderAccessForInsert() throws IOException {
UUID ehrId = UUID.randomUUID();
Folder folder = generateFolderFromTestFile(FolderTestDataCanonicalJson.NESTED_FOLDER);
I_ContributionAccess contributionAccess = I_ContributionAccess.getInstance(testDomainAccess, ehrId);
I_FolderAccess folderAccess = FolderAccess.buildNewFolderAccessHierarchy(testDomainAccess, folder, Timestamp.from(Instant.now()), ehrId, contributionAccess);
assertThat(folderAccess).isNotNull();
assertThat(folderAccess.getSubfoldersList().size()).isEqualTo(2);
assertThat(folderAccess.getFolderName()).isEqualTo("hospital episodes");
}
use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.
the class FolderUtilsTest method acceptsFoldersWithoutConflicts.
@Test
public void acceptsFoldersWithoutConflicts() throws IOException {
String value = IOUtils.toString(FolderTestDataCanonicalJson.FOLDER_WITHOUT_DUPLICATE_NAMES.getStream(), UTF_8);
Folder testFolder = canonicalJson.unmarshal(value, Folder.class);
FolderUtils.checkSiblingNameConflicts(testFolder);
}
use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.
the class FolderServiceImpTest method serializesFolderToJson.
@Ignore("the tested example contains the empty attributes serialized but the serialization does not print them. Decide about behaviour. " + "The RM does not constraint occurrences 1..1 so serialization can be empty for these attributes/collections.")
@Test
public void serializesFolderToJson() throws IOException {
String value = IOUtils.toString(FolderTestDataCanonicalJson.SIMPLE_EMPTY_FOLDER.getStream(), UTF_8);
Folder folder = cut.unmarshal(value, Folder.class);
StructuredString result = folderService.serialize(folder, StructuredStringFormat.JSON);
assertThat(result).isNotNull();
assertThat(result.getFormat()).isEqualTo(StructuredStringFormat.JSON);
assertThat(result.getValue()).isEqualToIgnoringWhitespace(value);
}
Aggregations