lib/vedeu/repositories/groups.rb in vedeu-0.2.2 vs lib/vedeu/repositories/groups.rb in vedeu-0.2.3

- old
+ new

@@ -3,92 +3,57 @@ # Repository for storing and retrieving interfaces by their group name. # # @api private module Groups - include Vedeu::Common + include Common + include Repository extend self # Add an interface name to a group, creating the group if it doesn't already # exist, and rejecting the interface if it is already known. # # @param attributes [Hash] # @return [Groups|FalseClass] def add(attributes) + validate_attributes!(attributes) + return false unless defined_value?(attributes[:group]) storage[attributes[:group]] << attributes[:name] register_event(attributes) true end - # Return the whole repository. - # - # @return [Set] - def all - storage - end - - # Find a group by name and return all of its associated interfaces. - # - # @param name [String] - # @return [Set] - def find(name) - storage.fetch(name) do - fail GroupNotFound, - "Cannot find interface group with this name: #{name.to_s}." - end - end - - # Returns a collection of the names of all registered groups. - # - # @return [Array] - def registered - storage.keys - end - - # Returns a Boolean indicating whether the named group is registered. - # - # @return [Boolean] - def registered?(name) - storage.key?(name) - end - - # Reset the groups repository; removing all groups. This does not delete - # the interfaces themselves. - # - # @return [Hash] - def reset - @_storage = in_memory - end - private # @see Vedeu::Refresh.register_event # @api private # @param attributes [Hash] # @return [Boolean] def register_event(attributes) - name = attributes[:group] - delay = attributes[:delay] || 0.0 + name = attributes[:group] + delay = attributes[:delay] || 0.0 Vedeu::Refresh.register_event(:by_group, name, delay) end - # Access to the storage for this repository. - # # @api private # @return [Hash] - def storage - @_storage ||= in_memory + def in_memory + Hash.new { |hash, key| hash[key] = Set.new } end # @api private - # @return [Hash] - def in_memory - Hash.new { |hash, key| hash[key] = Set.new } + # @param name [String] + # @raise [GroupNotFound] When the entity cannot be found with this name. + # @return [GroupNotFound] + def not_found(name) + fail GroupNotFound, + "Cannot find interface group with this name: #{name.to_s}." end - end -end + end # Groups + +end # Vedeu