Search in sources :

Example 11 with Folder

use of com.nedap.archie.rm.directory.Folder in project openEHR_SDK by ehrbase.

the class FolderSerializerTest method marshalBasicJsonFolder.

@Test
public void marshalBasicJsonFolder() throws IOException {
    String value = IOUtils.toString(FolderTestDataCanonicalJson.SIMPLE_EMPTY_FOLDER.getStream(), UTF_8);
    CanonicalJson canonicalJson = new CanonicalJson();
    Folder folder = canonicalJson.unmarshal(value, Folder.class);
    String marshalled = canonicalJson.marshal(folder);
    assertThat(marshalled).isNotEmpty();
    assertThat(marshalled).containsSubsequence("\"_type\"", "\"FOLDER\"");
    assertThat(marshalled).containsSubsequence("\"name\"", "{", "\"_type\"", "\"DV_TEXT\"", "\"value\"", "\"Simple empty folder\"");
}
Also used : CanonicalJson(org.ehrbase.serialisation.jsonencoding.CanonicalJson) FolderTestDataCanonicalJson(org.ehrbase.test_data.folder.FolderTestDataCanonicalJson) Folder(com.nedap.archie.rm.directory.Folder) Test(org.junit.Test)

Example 12 with Folder

use of com.nedap.archie.rm.directory.Folder in project openEHR_SDK by ehrbase.

the class CanonicalXMLTest method marshalInline.

@Test
public void marshalInline() {
    Folder folder = new Folder();
    folder.setName(new DvText("folder name"));
    folder.addItem(new PartyRef());
    CanonicalXML canonicalXML = new CanonicalXML();
    String inline = canonicalXML.marshalInline(folder, new QName(null, "folder"));
    System.out.println(inline);
}
Also used : PartyRef(com.nedap.archie.rm.support.identification.PartyRef) QName(javax.xml.namespace.QName) CompositionTestDataCanonicalXML(org.ehrbase.test_data.composition.CompositionTestDataCanonicalXML) Folder(com.nedap.archie.rm.directory.Folder) DvText(com.nedap.archie.rm.datavalues.DvText) Test(org.junit.Test)

Example 13 with Folder

use of com.nedap.archie.rm.directory.Folder in project openEHR_SDK by ehrbase.

the class FolderSerializerTest method unmarshalBasicJsonFolder.

@Test
public void unmarshalBasicJsonFolder() throws IOException {
    String value = IOUtils.toString(FolderTestDataCanonicalJson.SIMPLE_EMPTY_FOLDER.getStream(), UTF_8);
    CanonicalJson canonicalJson = new CanonicalJson();
    Folder folder = canonicalJson.unmarshal(value, Folder.class);
    assertThat(folder.getNameAsString()).isEqualTo("Simple empty folder");
}
Also used : CanonicalJson(org.ehrbase.serialisation.jsonencoding.CanonicalJson) FolderTestDataCanonicalJson(org.ehrbase.test_data.folder.FolderTestDataCanonicalJson) Folder(com.nedap.archie.rm.directory.Folder) Test(org.junit.Test)

Example 14 with Folder

use of com.nedap.archie.rm.directory.Folder in project openEHR_SDK by ehrbase.

the class FolderSerializerTest method marshalBasicXmlFolder.

@Test
@Ignore("Possible bug at Archie with missing XMLRootElement annotation for folders.")
public void marshalBasicXmlFolder() throws IOException {
    String value = IOUtils.toString(FolderTestDataCanonicalXML.SIMPLE_EMPTY_FOLDER.getStrean(), UTF_8);
    CanonicalXML canonicalXML = new CanonicalXML();
    Folder folder = canonicalXML.unmarshal(value, Folder.class);
    String marshalled = canonicalXML.marshal(folder);
    assertThat(marshalled).containsSubsequence("<name>", "<value>", "Simple empty folder", "</value>", "</name>");
}
Also used : FolderTestDataCanonicalXML(org.ehrbase.test_data.folder.FolderTestDataCanonicalXML) CanonicalXML(org.ehrbase.serialisation.xmlencoding.CanonicalXML) Folder(com.nedap.archie.rm.directory.Folder) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 15 with Folder

use of com.nedap.archie.rm.directory.Folder in project ehrbase by ehrbase.

the class FolderAccess method internalUpdate.

private Boolean internalUpdate(final Timestamp transactionTime, boolean rootFolder, UUID parentFolder, UUID oldContribution, UUID newContribution, UUID systemId, UUID committerId, String description, ContributionChangeType contributionChangeType) {
    boolean result;
    // Set new Contribution for MODIFY
    this.setInContribution(newContribution);
    // create new folder audit with given values
    auditDetailsAccess = new AuditDetailsAccess(this);
    auditDetailsAccess.setSystemId(systemId);
    auditDetailsAccess.setCommitter(committerId);
    auditDetailsAccess.setDescription(description);
    auditDetailsAccess.setChangeType(I_ConceptAccess.fetchContributionChangeType(this, contributionChangeType));
    UUID auditId = this.auditDetailsAccess.commit();
    if (rootFolder) {
        // if it is the root folder preserve the original id, otherwise let the DB provide a new one for the overridden subfolders.
        folderRecord.setInContribution(newContribution);
        folderRecord.setSysTransaction(transactionTime);
        getContext().attach(folderRecord);
        result = folderRecord.update() > 0;
    } else {
        // Copy into new instance and attach to DB context.
        var updatedFolderRecord = new FolderRecord();
        updatedFolderRecord.setInContribution(newContribution);
        updatedFolderRecord.setName(this.getFolderName());
        updatedFolderRecord.setArchetypeNodeId(this.getFolderArchetypeNodeId());
        updatedFolderRecord.setActive(this.isFolderActive());
        updatedFolderRecord.setDetails(this.getFolderDetails());
        updatedFolderRecord.setSysTransaction(transactionTime);
        updatedFolderRecord.setSysPeriod(this.getFolderSysPeriod());
        updatedFolderRecord.setHasAudit(auditId);
        // attach to context DB
        getContext().attach(updatedFolderRecord);
        // Save new Folder entry to the database
        result = updatedFolderRecord.insert() > 0;
        // Finally overwrite original FolderRecord on this FolderAccess instance to have the
        // new data available at service layer. Thus we do not need to re-fetch the updated folder
        // tree from DB
        this.folderRecord = updatedFolderRecord;
        // Create FolderHierarchy entries this sub folder instance
        var updatedFhR = new FolderHierarchyRecord();
        updatedFhR.setParentFolder(parentFolder);
        updatedFhR.setChildFolder(updatedFolderRecord.getId());
        updatedFhR.setInContribution(newContribution);
        updatedFhR.setSysTransaction(transactionTime);
        updatedFhR.setSysPeriod(folderRecord.getSysPeriod());
        getContext().attach(updatedFhR);
        updatedFhR.store();
    }
    // Get new folder id for folder items and hierarchy
    UUID updatedFolderId = this.folderRecord.getId();
    // Update items -> Save new list of all items in this folder
    this.saveFolderItems(updatedFolderId, oldContribution, newContribution, transactionTime, getContext());
    boolean anySubfolderModified = // Map of sub folders with UUID
    this.getSubfoldersList().values().stream().map(subfolder -> (// Update each entry and return if there has been at least one entry updated
    ((FolderAccess) subfolder).internalUpdate(transactionTime, false, updatedFolderId, oldContribution, newContribution, systemId, committerId, description, contributionChangeType))).reduce((b1, b2) -> b1 || b2).orElse(false);
    return result || anySubfolderModified;
}
Also used : FOLDER_HISTORY(org.ehrbase.jooq.pg.Tables.FOLDER_HISTORY) Date(java.util.Date) DSL.field(org.jooq.impl.DSL.field) ObjectNotFoundException(org.ehrbase.api.exception.ObjectNotFoundException) Table(org.jooq.Table) Folder(com.nedap.archie.rm.directory.Folder) UIDBasedId(com.nedap.archie.rm.support.identification.UIDBasedId) FolderRecord(org.ehrbase.jooq.pg.tables.records.FolderRecord) OtherDetailsJsonbBinder(org.ehrbase.jooq.binding.OtherDetailsJsonbBinder) Map(java.util.Map) DSLContext(org.jooq.DSLContext) ObjectVersionId(com.nedap.archie.rm.support.identification.ObjectVersionId) ContributionDataType(org.ehrbase.jooq.pg.enums.ContributionDataType) Record8(org.jooq.Record8) I_ContributionAccess(org.ehrbase.dao.access.interfaces.I_ContributionAccess) ObjectRef(com.nedap.archie.rm.support.identification.ObjectRef) DSL.name(org.jooq.impl.DSL.name) Timestamp(java.sql.Timestamp) Set(java.util.Set) Field(org.jooq.Field) DSL.select(org.jooq.impl.DSL.select) UUID(java.util.UUID) I_DomainAccess(org.ehrbase.dao.access.interfaces.I_DomainAccess) CONTRIBUTION(org.ehrbase.jooq.pg.Tables.CONTRIBUTION) Instant(java.time.Instant) Result(org.jooq.Result) I_AuditDetailsAccess(org.ehrbase.dao.access.interfaces.I_AuditDetailsAccess) I_ConceptAccess(org.ehrbase.dao.access.interfaces.I_ConceptAccess) List(java.util.List) OffsetDateTime(java.time.OffsetDateTime) InternalServerException(org.ehrbase.api.exception.InternalServerException) TransactionTime(org.ehrbase.dao.access.util.TransactionTime) FolderUtils(org.ehrbase.dao.access.util.FolderUtils) FolderHistoryRecord(org.ehrbase.jooq.pg.tables.records.FolderHistoryRecord) LocalDateTime(java.time.LocalDateTime) HashMap(java.util.HashMap) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ObjectId(com.nedap.archie.rm.support.identification.ObjectId) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ContributionRecord(org.ehrbase.jooq.pg.tables.records.ContributionRecord) ContributionChangeType(org.ehrbase.dao.access.interfaces.I_ConceptAccess.ContributionChangeType) ContributionDef(org.ehrbase.dao.access.util.ContributionDef) ItemStructure(com.nedap.archie.rm.datastructures.ItemStructure) Record(org.jooq.Record) FOLDER_ITEMS(org.ehrbase.jooq.pg.Tables.FOLDER_ITEMS) ObjectRefRecord(org.ehrbase.jooq.pg.tables.records.ObjectRefRecord) DateTime(org.joda.time.DateTime) Record13(org.jooq.Record13) FolderHierarchy(org.ehrbase.jooq.pg.tables.FolderHierarchy) FolderHierarchyRecord(org.ehrbase.jooq.pg.tables.records.FolderHierarchyRecord) OBJECT_REF(org.ehrbase.jooq.pg.Tables.OBJECT_REF) DataAccess(org.ehrbase.dao.access.support.DataAccess) SysPeriodBinder(org.ehrbase.jooq.binding.SysPeriodBinder) AbstractMap(java.util.AbstractMap) TreeMap(java.util.TreeMap) I_FolderAccess(org.ehrbase.dao.access.interfaces.I_FolderAccess) FOLDER_HIERARCHY(org.ehrbase.jooq.pg.Tables.FOLDER_HIERARCHY) JSONB(org.jooq.JSONB) FOLDER(org.ehrbase.jooq.pg.Tables.FOLDER) FolderItemsRecord(org.ehrbase.jooq.pg.tables.records.FolderItemsRecord) DSL.table(org.jooq.impl.DSL.table) I_AuditDetailsAccess(org.ehrbase.dao.access.interfaces.I_AuditDetailsAccess) FolderRecord(org.ehrbase.jooq.pg.tables.records.FolderRecord) FolderHierarchyRecord(org.ehrbase.jooq.pg.tables.records.FolderHierarchyRecord) UUID(java.util.UUID) I_FolderAccess(org.ehrbase.dao.access.interfaces.I_FolderAccess)

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