[ https://jira.duraspace.org/browse/DS-893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=24073#comment-24073 ]
Mark Diggory commented on DS-893: --------------------------------- Hey Bill, are you still doing any work in this area? Why not bring a dialog to the community concerning the topic and possible patches? > suggestion for a re-implementation of Bundles in the DSpace data model > ----------------------------------------------------------------------- > > Key: DS-893 > URL: https://jira.duraspace.org/browse/DS-893 > Project: DSpace > Issue Type: Improvement > Components: DSpace API > Affects Versions: 1.8.0 > Reporter: Bill Hays > > Preliminary ideas for a new implementation of "Bundle" in the DSpace data > model > Current database model relationships: > Item <- Item2Bundle -> Bundle <- Bundle2Bitstream -> Bitstream > Current java object model relationships: > Item <-> Bundle <-> Bitstream > Proposed database model relationships (1): > Item <- Item2Bitstream -> Bitstream(id, ..., bundlename, ...) > or even more succinctly: > Item <- Bitstream(id, item_id, bundlename, ...) > In current DSpace, there is no realized benefit from the container complexity > in the current model for Bundles. > This first step in the proposal removes the Bundle table and directly > associates Bitstream to Item. The concept of "bundle" is replaced by an enum > field in the Bitstream that identifies a bundle type (ORIGINAL, THUMBNAIL, > etc). Functionally this is very similar to what we get now: A bitstream > belongs to one item and is associated with one bundle. The bundle names are > not constrained, but some names are expected in various parts of the > codebase. > > Proposed database model relationships (2): > Item <- Bitstream -> MBundle(id, name, collection_id, derivative ...) > This variation replaces the bundlename enum with a new class and database > table "MBundle." Here bundles are not implemented as containers but are an > associated type concept for a bitstream. With the association to a > collection, bundles can be managed per collection or use a default set. > Other properties of MBundle can be added to further enhance management > capabilities, e.g.: > isDerivative - identify bundles for Thumbnails and DerivativeText > isVisible - indicate that the related bitstreams should be visible in > display contexts > isReserved - such as for very large "source" objects not for display or > filtermedia > [needs work - how complex does bundle "metadata" need to be?] > > Issues: > Primary Bitstream Id: This is currently only used for the ORIGINAL bundle, > so conceptually there is one per item. Note that the current model (API and > database) allows for multiple ORIGINAL bundles which therefore allows > multiple primary bitstream ids; however, the implementation doesn't expose > this possibility. > Possible replacement API calls, depending on the implementation: > item.setPrimaryBitstream(Bitstream b) > bitstream.isPrimary(Boolean b) > Various db solutions: > item.primaryBitstreamId - not standard database normalization but > consistent with dspace practice > item2bitstream.primaryBitstream - a boolean, standard normalization but > requires some management to avoid duplicates > mbundle.primaryBitstreamId - not standard database normalization but > consistent with dspace practice > item.primaryBitstream - a boolean, standard normalization but requires > some management to avoid duplicates > > In the event that someone has used primaryBitstreamId in non-ORIGINAL > bundles for special purposes, only 3 or 4 would work. > Affected Java code: Item and Bitstream would need to be adjusted. This is > fairly low-level so should not be visible to much of the API. Group > authorizations would need some work (this has not been fully analyzed). > Custom code that uses the API might be affected. Custom SQL such as for > reporting might break, but the replacement is shorter code. Collection > management of bundles types would need a new tab on the collection page > (XMLUI). > > Upgrading a DSpace instance: The database can be modified with queries. No > affect on assetstores. > > Benefits: > Simpler, more concise model which removes unused/unnecessary containership > structure. > Enhanced bitstream management with bundle properties. > Enumeration of names instead of uncontrolled strings, preventing typos in > bundle names (e.g. from ItemImport) > Provides easy solution to making derivative bitstreams visible. > Moving bitstreams between bundles does not require deleting and re-adding > the bitstream. > Fixes data model problem with primary bitstream and multiple bundles with > the same name > Drawbacks: > Not a backwardly compatible change. A fundamental change to the data > model. > Custom SQL code connecting using bundles will require rework. > Summary: > Bundles are categories for Bitstreams and do not need to be imlemented as > containers. > Bundles could be improved with added metadata and management features. > The current Bundle implementation may not be a priority issue to merit the > work suggested. However, the ideas > above may be suggestive for other work, including metadata for all DSpace > objects and exposing the data model > to external systems (e.g. Fedora) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.duraspace.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 _______________________________________________ Dspace-devel mailing list Dspace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dspace-devel