-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New Services: * RemoveCollectionFromCollection * RemoveObjectFromCollection * RemoveRelatedObjectFromCollection * RemoveObjectFromObject * RemoveRelatedObjectFromObject Updated Services: * GetRelatedObjectsFromCollection - return array * GetRelatedObjectsFromObject - return array
- Loading branch information
Showing
16 changed files
with
948 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
module Hydra::PCDM | ||
class RemoveCollectionFromCollection | ||
|
||
## | ||
# Remove a collection from a collection. | ||
# | ||
# @param [Hydra::PCDM::Collection] :parent_collection from which to remove collection | ||
# @param [Hydra::PCDM::Collection] :child_collection being removed | ||
# | ||
# @return [Hydra::PCDM::Collection] the updated pcdm collection | ||
|
||
def self.call( parent_collection, child_collection ) | ||
raise ArgumentError, "parent_collection must be a pcdm collection" unless Hydra::PCDM.collection? parent_collection | ||
raise ArgumentError, "child_collection must be a pcdm collection" unless Hydra::PCDM.collection? child_collection | ||
|
||
|
||
# TODO FIX when members is empty, members.delete raises ActiveFedora::ObjectNotFoundError "Can't reload an object that hasn't been saved" (activefedora-aggregation issue #35) | ||
|
||
# TODO members.delete should... (issue #103)(activefedora-aggregation issue #34) | ||
# * return child_collection when successful delete | ||
# * return nil if child_collection does not exist in parent_collection | ||
# * raise error for any other problems | ||
|
||
# parent_collection.members.delete child_collection # TODO Uncomment | ||
|
||
return nil unless Hydra::PCDM::GetCollectionsFromCollection.call( parent_collection ).include? child_collection # TODO Remove | ||
removed_collection = parent_collection.members.delete child_collection # TODO Remove | ||
removed_collection = removed_collection.first if removed_collection.is_a? Array # TODO Remove | ||
removed_collection # TODO Remove | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
module Hydra::PCDM | ||
class RemoveObjectFromCollection | ||
|
||
## | ||
# Remove an object from a collection. | ||
# | ||
# @param [Hydra::PCDM::Collection] :parent_collection from which to remove object | ||
# @param [Hydra::PCDM::Object] :child_object being removed | ||
# @param [Fixnum] :nth_occurrence remove nth occurrence of this object in the list (default=1) | ||
# | ||
# @return [Hydra::PCDM::Collection] the updated pcdm collection | ||
|
||
def self.call( parent_collection, child_object, nth_occurrence=1 ) | ||
raise ArgumentError, "parent_collection must be a pcdm collection" unless Hydra::PCDM.collection? parent_collection | ||
raise ArgumentError, "child_object must be a pcdm object" unless Hydra::PCDM.object? child_object | ||
|
||
|
||
# TODO FIX when members is empty, members.delete raises ActiveFedora::ObjectNotFoundError "Can't reload an object that hasn't been saved" (activefedora-aggregation issue #35) | ||
|
||
# TODO members.delete should... (issue #103)(activefedora-aggregation issue #34) | ||
# * return child_object when successful delete | ||
# * return nil if child_object does not exist in parent_collection | ||
# * raise error for any other problems | ||
|
||
# parent_collection.members.delete child_object # TODO Uncomment | ||
|
||
return nil unless parent_collection.members.include? child_object # TODO Remove | ||
removed_object = parent_collection.members.delete child_object # TODO Remove | ||
removed_object = removed_object.first if removed_object.is_a? Array # TODO Remove | ||
removed_object # TODO Remove | ||
|
||
|
||
# TODO -- The same object may be in the list multiple times. (issue #102) | ||
# * How to remove nth occurrence? | ||
# * Default to removing 1st occurrence from the beginning of the list. | ||
|
||
end | ||
|
||
end | ||
end |
33 changes: 33 additions & 0 deletions
33
lib/hydra/pcdm/services/collection/remove_related_object.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
module Hydra::PCDM | ||
class RemoveRelatedObjectFromCollection | ||
|
||
## | ||
# Remove an object from a collection. | ||
# | ||
# @param [Hydra::PCDM::Collection] :parent_collection from which to remove the related object | ||
# @param [Hydra::PCDM::Object] :child_related_object being removed | ||
# | ||
# @return [Hydra::PCDM::Collection] the updated pcdm collection | ||
|
||
def self.call( parent_collection, child_related_object ) | ||
raise ArgumentError, "parent_collection must be a pcdm collection" unless Hydra::PCDM.collection? parent_collection | ||
raise ArgumentError, "child_related_object must be a pcdm object" unless Hydra::PCDM.object? child_related_object | ||
|
||
|
||
# TODO FIX when related_objects is empty, related_objects.delete raises ActiveFedora::ObjectNotFoundError "Can't reload an object that hasn't been saved" (activefedora-aggregation issue #35) | ||
|
||
# TODO members.delete should... (issue #103)(activefedora-aggregation issue #34) | ||
# * return child_collection when successful delete | ||
# * return nil if child_collection does not exist in parent_collection | ||
# * raise error for any other problems | ||
|
||
# parent_collection.related_objects.delete child_related_object # TODO Uncomment | ||
|
||
return nil unless Hydra::PCDM::GetRelatedObjectsFromCollection.call( parent_collection ).include? child_related_object # TODO Remove | ||
removed_related_object = parent_collection.related_objects.delete child_related_object # TODO Remove | ||
removed_related_object = removed_related_object.first if removed_related_object.is_a? Array # TODO Remove | ||
removed_related_object # TODO Remove | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
module Hydra::PCDM | ||
class RemoveObjectFromObject | ||
|
||
## | ||
# Remove an object from an object. | ||
# | ||
# @param [Hydra::PCDM::Object] :parent_object from which to remove object | ||
# @param [Hydra::PCDM::Object] :child_object being removed | ||
# @param [Fixnum] :nth_occurrence remove nth occurrence of this object in the list (default=1) | ||
# | ||
# @return [Hydra::PCDM::Object] the updated pcdm object | ||
|
||
def self.call( parent_object, child_object, nth_occurrence=1 ) | ||
raise ArgumentError, "parent_object must be a pcdm object" unless Hydra::PCDM.object? parent_object | ||
raise ArgumentError, "child_object must be a pcdm object" unless Hydra::PCDM.object? child_object | ||
|
||
|
||
# TODO FIX when members is empty, members.delete raises ActiveFedora::ObjectNotFoundError "Can't reload an object that hasn't been saved" (activefedora-aggregation issue #35) | ||
|
||
# TODO members.delete should... (issue #103)(activefedora-aggregation issue #34) | ||
# * return child_object when successful delete | ||
# * return nil if child_object does not exist in parent_object | ||
# * raise error for any other problems | ||
|
||
# parent_object.members.delete child_object # TODO Uncomment | ||
|
||
return nil unless parent_object.members.include? child_object # TODO Remove | ||
removed_object = parent_object.members.delete child_object # TODO Remove | ||
removed_object = removed_object.first if removed_object.is_a? Array # TODO Remove | ||
removed_object # TODO Remove | ||
|
||
|
||
# TODO -- The same object may be in the list multiple times. (issue #102) | ||
# * How to remove nth occurrence? | ||
# * Default to removing 1st occurrence from the beginning of the list. | ||
|
||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
module Hydra::PCDM | ||
class RemoveRelatedObjectFromObject | ||
|
||
## | ||
# Remove an object from an object. | ||
# | ||
# @param [Hydra::PCDM::Object] :parent_object from which to remove the related object | ||
# @param [Hydra::PCDM::Object] :child_related_object being removed | ||
# | ||
# @return [Hydra::PCDM::Collection] the updated pcdm collection | ||
|
||
def self.call( parent_object, child_related_object ) | ||
raise ArgumentError, "parent_object must be a pcdm object" unless Hydra::PCDM.object? parent_object | ||
raise ArgumentError, "child_related_object must be a pcdm object" unless Hydra::PCDM.object? child_related_object | ||
|
||
|
||
# TODO FIX when related_objects is empty, related_objects.delete raises ActiveFedora::ObjectNotFoundError "Can't reload an object that hasn't been saved" (activefedora-aggregation issue #35) | ||
|
||
# TODO members.delete should... (issue #103)(activefedora-aggregation issue #34) | ||
# * return child_related_object when successful delete | ||
# * return nil if child_related_object does not exist in parent_object | ||
# * raise error for any other problems | ||
|
||
# parent_object.related_objects.delete child_related_object # TODO Uncomment | ||
|
||
return nil unless Hydra::PCDM::GetRelatedObjectsFromObject.call( parent_object ).include? child_related_object # TODO Remove | ||
removed_related_object = parent_object.related_objects.delete child_related_object # TODO Remove | ||
removed_related_object = removed_related_object.first if removed_related_object.is_a? Array # TODO Remove | ||
removed_related_object # TODO Remove | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.