-
Notifications
You must be signed in to change notification settings - Fork 5
myrho/scape-platform-datamodel
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
SCAPE Data transfer objects
===========================
This is the implementation of the Scape Digital Object Model, for exchanging data in the SCAPE platform. It is built on top of various metadata standards like textmd, NISO/MIX and PREMIS.
+-----------------------+
| Intellectual Entity |
+-----------------------+
1/ \1
/ \
1/ \*
+--------------+ +------------------+
| Desc. MD | | Representation |
+--------------+ +------------------+
1/ \1
/ \
1/ \*
+-----------------+ +----------+
| Adm. Metadata | | File |
+-----------------+ +----------+
\1
\
\*
+-------------+
| Bitstream |
+-------------+
Immutability & Builders
=======================
All objects are immutable and are constructed using their respective inner Builder classes, and allow for method chaining.
IntellectualEntity entity = new IntellectualEntity.Builder()
.identifier(new Identifier("minimal-1"))
.descriptive(TestUtil.createMinimalDC())
.build();
Deep Copying
============
All copies should be deep copy for thread safety issues.
In order to get a copy of an Object you can either create a new Builder from it's respective outer class,
or employ the Utility class CopyUtil to get a plain deep copy without the Builder:
IntellectualEntity orig = new IntellectualEntity.Builder()
.identifier(new Identifier("minimal-1"))
.descriptive(TestUtil.createMinimalDC())
.build();
IntellectualEntity copy1=new IntellectualEntity.Builder(orig)
.identifier(new Identifier("copy-1"))
.build();
IntellectualEntity copy2 = CopyUtil.deepCopy(IntellectualEntity.class, orig);
Serialization/Deserialization
=============================
An example for serialization of an Intellectual Entity into it's METS representation looks like this:
IntellectualEntity entity = TestUtil.createRandomEntity();
SCAPEMarshaller.getInstance().serialize(entity, System.out);
An example for deseriialization looks like this:
InputStream in = new FileInputStream("entity-1.xml");
IntellectualEntity deserialized=SCAPEMarshaller.getInstance().deserialize(IntellectualEntity.class, in);
About
Data transfer objects for the SCAPE platform
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published