Search in sources :

Example 1 with Folder

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());
}
Also used : UIDBasedId(com.nedap.archie.rm.support.identification.UIDBasedId) ArrayList(java.util.ArrayList) ItemStructure(com.nedap.archie.rm.datastructures.ItemStructure) ObjectVersionId(com.nedap.archie.rm.support.identification.ObjectVersionId) Folder(com.nedap.archie.rm.directory.Folder) DvText(com.nedap.archie.rm.datavalues.DvText) I_FolderAccess(org.ehrbase.dao.access.interfaces.I_FolderAccess) Item(com.nedap.archie.rm.datastructures.Item) StringWriter(java.io.StringWriter) UUID(java.util.UUID) PrintWriter(java.io.PrintWriter) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 2 with Folder

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();
}
Also used : I_FolderAccess(org.ehrbase.dao.access.interfaces.I_FolderAccess) I_ContributionAccess(org.ehrbase.dao.access.interfaces.I_ContributionAccess) UUID(java.util.UUID) Folder(com.nedap.archie.rm.directory.Folder) Test(org.junit.Test)

Example 3 with Folder

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");
}
Also used : I_FolderAccess(org.ehrbase.dao.access.interfaces.I_FolderAccess) I_ContributionAccess(org.ehrbase.dao.access.interfaces.I_ContributionAccess) UUID(java.util.UUID) Folder(com.nedap.archie.rm.directory.Folder) Test(org.junit.Test)

Example 4 with Folder

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);
}
Also used : Folder(com.nedap.archie.rm.directory.Folder) Test(org.junit.Test)

Example 5 with Folder

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);
}
Also used : StructuredString(org.ehrbase.response.ehrscape.StructuredString) StructuredString(org.ehrbase.response.ehrscape.StructuredString) Folder(com.nedap.archie.rm.directory.Folder) TemporaryFolder(org.junit.rules.TemporaryFolder) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

Folder (com.nedap.archie.rm.directory.Folder)17 Test (org.junit.Test)12 UUID (java.util.UUID)7 I_FolderAccess (org.ehrbase.dao.access.interfaces.I_FolderAccess)6 DvText (com.nedap.archie.rm.datavalues.DvText)5 Ignore (org.junit.Ignore)5 ObjectVersionId (com.nedap.archie.rm.support.identification.ObjectVersionId)4 ArrayList (java.util.ArrayList)4 ItemStructure (com.nedap.archie.rm.datastructures.ItemStructure)3 UIDBasedId (com.nedap.archie.rm.support.identification.UIDBasedId)3 I_ContributionAccess (org.ehrbase.dao.access.interfaces.I_ContributionAccess)3 Item (com.nedap.archie.rm.datastructures.Item)2 ObjectRef (com.nedap.archie.rm.support.identification.ObjectRef)2 PrintWriter (java.io.PrintWriter)2 StringWriter (java.io.StringWriter)2 VersionUid (org.ehrbase.client.openehrclient.VersionUid)2 StructuredString (org.ehrbase.response.ehrscape.StructuredString)2 TemporaryFolder (org.junit.rules.TemporaryFolder)2 ObjectId (com.nedap.archie.rm.support.identification.ObjectId)1 PartyRef (com.nedap.archie.rm.support.identification.PartyRef)1