Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Configurable "Entities" to DSpace 7 (Part 1: Architecture, Configuration, Search, Display) #2376

Merged
merged 219 commits into from
May 9, 2019

Conversation

tdonohue
Copy link
Member

@tdonohue tdonohue commented Mar 15, 2019

Overview

This PR is the first phase of work from the DSpace 7 Entities Working Group.

Entities are DSpace Item objects which have a specific "type" (e.g. Author Item, Journal Item, Journal Issue Item) and/or defined "relationships" to other Items (e.g. an Author Item is related to the Article Items authored by that person). Both Entity/Item "types" and "relationships" are configurable (via an XML config file) and are persisted in three new database tables (entity_type, relationship_type and relationship).

Additional details on design, use cases and detailed documentation is available in a Google Document. (Note: The phrase "Configurable Entities" is not yet finalized, and this Google Document refers to them as "Configurable Object Models". The DSpace 7 Marketing Working group is working on finalizing terminology)

This PR provides the following features:

This PR does not provide the following (these will be provided in a future PR):

  • Creation of new Entities (via upcoming DSpace 7 submission & workflow functionality). Because Entities cannot be created locally (yet), we've provided a test data set (see "Testing" section below).
  • Importing of Entities (via AIP packager tools or similar)

Companion PRs:

Reviewing

As you can see in the commits, nearly all code written in this PR was written by Atmire. However, the DSpace 7 Entities Working Group used the same code review processes established by the DSpace 7 Working Group.

  • All code in this PR has been reviewed/approved by (at least) two other developers (at separate institutions)
  • Reviewers verified that all code has appropriate JavaDocs / inline comments
  • Reviewers verified that all code has required Unit or Integration Tests
  • Reviewers tested all code

Obviously, other code reviews are always welcome. But, because of the large size of this PR, you are also welcome to provide a detailed review of the following (which together provide a deeper understanding of the feature this PR adds):

Additionally, if you would like to see/review all the past reviews, each of the smaller PRs that make up this larger PR are available in GitHub via this search: https://github.com/DSpace/DSpace/pulls?utf8=%E2%9C%93&q=is%3Apr+base%3Aconfigurable_entities+is%3Amerged+

Testing

This PR can be built and tested locally. However, as you will be unable to create new Entities, we've provided a test data set.

This data set is a full PostgreSQL database dump (as Entities cannot yet be exported/imported). Therefore, for testing, you should build the PR and run it against a fresh database initialized with this test database dump.

This PR (and test content) can also be tested via a new Entities REST API Demo Site available at: https://dspace7-entities.atmire.com/rest/#/rest/api

Acknowledgments

This PR was the collaboration of many individuals (over the span of several PRs to the configurable_entities branch), including @benbosman (developer), @Raf-atmire (developer), @paulo-graca (reviewer), @AlexanderS (reviewer) , @tdonohue (reviewer), @mwoodiupui (early reviewer), and @pnbecker (early reviewer). Many others were also involved in the conception/design/discussion in various DSpace 7 Entities Working Group meetings.

Raf-atmire and others added 30 commits October 24, 2018 10:24
… update the place attributes accordingly. Fixed checkstyle and added license header. Changed cacheable functions to false in relationshipDAO
…option for config to supply virtual metadata throughout many nested relations
…s and getters to the interface. defaulting to false. Added this property to the isAuthorOfPublication config
…on with config and addition of a new uuidvalue bean
…RelationshipMetadata methods in the ItemServiceImpl to use this object instead of it's parent MetadataValue
@tdonohue
Copy link
Member Author

tdonohue commented May 9, 2019

As discussed in today's meeting, this PR is at +2 and we are merging it into master. There still are some unresolved comments which have been turned into JIRA tickets under the "Configurable Entities" component. These unresolved comments will be tackled in follow-up PRs.

If any outstanding comments were accidentally overlooked (as there we many in this PR), please create additional JIRA tickets referencing them, and I'll ensure they are also scheduled for follow-up work.

Thanks again to all the development & review effort that has gone into this large PR! I know the Configurable Entities work is far from "complete", but this first PR is a great accomplishment to build from.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: configurable entities Related to Configurable Entities feature high priority interface: REST API v7+ REST API for v7 and later (dspace-server-webapp module) new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet