Of Hats and Islandora T h e T u q u e S t o r y 1
Who is this guy? Jonathan Green Chief Technology Officer at jonathan@discoverygarden.ca twitter: @jonawesomegreen slides: http://bit.ly/1atrzte 2
3
Overview 4
Links • http://jenkins.discoverygarden.ca • http://github.com/Islandora/tuque • http://bit.ly/152F7Fl 5
What is Tuque? 6
7
// Get the Tuque object $tuque = islandora_get_tuque_connection(); // Construct a new Fedora Object (but don't ingest it) $object = $tuque ->repository->constructObject("jons:amazingobject"); // Set some properties $object ->label = "An amazing demo object."; $object ->owner = "Jonathan Green"; // Create a new datastream. DSID: AWESOME $datastream = $object ->constructDatastream("AWESOME", "M"); $datastream ->label = 'Cool demo datastream'; $datastream ->mimetype = 'image/jpeg'; $datastream ->setContentFromUrl('http://bit.ly/15walXA'); // Ingest the datastream $object ->ingestDatastream( $datastream ); // Ingest the Object $tuque ->repository->ingestObject( $object ); 8
// Load an existing object $object = islandora_object_load('jons:amazingobject'); // Change some properties $object ->label = 'This is a new label'; // Test is a datastream exists if ( isset ( $object ['DSID'])) { // the datastream exists } // Access datastreams using array notation $object ['AWESOME']->label = 'Change datastream label'; // Iterate over datastreams foreach ( $object as $datastream ) { echo $datastream ->id; } // Add and remove relationships $object ->relationships->remove(FEDORA_MODEL_URI, 'hasModel', 'islandora:collectionCModel'); $object ->relationships->add(FEDORA_MODEL_URI, 'hasModel', 'islandora:imageCModel'); 9
10
• 12 Contributors • 180 Commits • 23,155 Lines Added • 12,896 Lines Deleted 11
12
13
14
15
Fedora Futures! http://fcrepo.org/ 16
17
18
• abstract classes • /implementations • /fedora3 • /fedora4 • /tests • abstract test classes • /implementations • /fedora3 • /fedora4 19
Old Class Structure class IslandoraFedoraRepository extends FedoraRepository {} class IslandoraFedoraObject extends FedoraObject {} $repository = new IslandoraFedoraRepository(...) New Decorator Structure abstract class AbstractRepository extends MagicProperty {} class RepositoryDecorator extends AbstractRepository {} class IslandoraRepositoryDecorator extends RepositoryDecorator {} $general_repo = Tuque::GetRepository('fedora4'); $repository = new IslandoraRepositoryDecorator( $general_repo ); $repository = new CachingRepositoryDecorator( $repository ); 20
21
slides: http://bit.ly/1atrzte 22
Recommend
More recommend