# PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def self.minimum_number_of_seconds 0 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end def setSeconds (newSeconds) end def isNumberOfSecondsValid () end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :second #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_second) @initialized = false @deleted = false @second = nil did_add_second = set_second(a_second) raise "Unable to create first due to @second. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_second @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second @second end def set_second(a_second) was_set = false if a_second.nil? return was_set end existing_second = @second @second = a_second if !existing_second.nil? and !existing_second.eql?(a_second) existing_second.remove_first(self) end @second.add_first(self) was_set = true was_set end def delete @deleted = true @placeholder_second = @second @second = nil @placeholder_second.remove_first(self) end def addSecond (aSecond) end def getSeconds () end def setSeconds (newSeconds) end def numberOfSeconds () end def hasSeconds () end def indexOfSecond (second) end def isNumberOfSecondsValid () end def removeSecond (second) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize(all_seconds) @initialized = false @deleted = false @seconds = [] did_add_seconds = set_seconds(all_seconds) raise "Unable to create First, must have 1 to 5 @seconds. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_seconds @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds and number_of_seconds <= First.maximum_number_of_seconds is_valid end def self.minimum_number_of_seconds 1 end def self.maximum_number_of_seconds 5 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end if number_of_seconds <= First.minimum_number_of_seconds return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if verified_seconds.size != new_seconds.length or verified_seconds.size < First.minimum_number_of_seconds or verified_seconds.size() > First.maximum_number_of_seconds return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if old_seconds.include?(a_new_second) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize(all_seconds) @initialized = false @deleted = false @seconds = [] did_add_seconds = set_seconds(all_seconds) raise "Unable to create First, must have at least 1 @seconds. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_seconds @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds is_valid end def self.minimum_number_of_seconds 1 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end if number_of_seconds <= First.minimum_number_of_seconds return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if verified_seconds.size != new_seconds.size or verified_seconds.size < First.minimum_number_of_seconds return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if old_seconds.include?(a_new_second) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize(all_seconds) @initialized = false @deleted = false @seconds = [] did_add_seconds = set_seconds(all_seconds) raise "Unable to create First, must have 5 @seconds. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_seconds @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds and number_of_seconds <= First.maximum_number_of_seconds is_valid end def self.required_number_of_seconds 5 end def self.minimum_number_of_seconds 5 end def self.maximum_number_of_seconds 5 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end if number_of_seconds <= First.minimum_number_of_seconds return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if verified_seconds.size != new_seconds.length or verified_seconds.size < First.minimum_number_of_seconds or verified_seconds.size() > First.maximum_number_of_seconds return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if old_seconds.include?(a_new_second) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def self.minimum_number_of_seconds 0 end def self.maximum_number_of_seconds 5 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if (verified_seconds.size != new_seconds.size or verified_seconds.size() > First.maximum_number_of_seconds) return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if (old_seconds.include?(a_new_second)) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end def isNumberOfSecondsValid () end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def self.minimum_number_of_seconds 0 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| a_second.remove_first(self) end end def setSecond (aSecond) end def setSeconds (newSeconds) end def isNumberOfSecondsValid () end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :second #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_second) @initialized = false @deleted = false @second = nil unless a_second.nil? @second = a_second a_second.instance_variable_set("@first",self) end @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) @second end def delete @deleted = true raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) existing_second = @second @second = nil unless existing_second.nil? existing_second.delete end end def addSecond (aSecond) result = addSecond_original(aSecond) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def addSecond_original(aSecond) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def getSeconds () result = getSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def getSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def setSecond (aSecond) result = setSecond_original(aSecond) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def setSecond_original(aSecond) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def setSeconds (newSeconds) result = setSeconds_original(newSeconds) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def setSeconds_original(newSeconds) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def numberOfSeconds () result = numberOfSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def numberOfSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def hasSeconds () result = hasSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def hasSeconds_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def indexOfSecond (second) result = indexOfSecond_original(second) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def indexOfSecond_original(second) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def isNumberOfSecondsValid () result = isNumberOfSecondsValid_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def isNumberOfSecondsValid_original() raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end def removeSecond (second) result = removeSecond_original(second) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) return result end def removeSecond_original(second) raise "Mandatory relationship with second not satisfied" if (@initialized and !@deleted and @second.nil?) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds and number_of_seconds <= First.maximum_number_of_seconds is_valid end def self.required_number_of_seconds 5 end def self.minimum_number_of_seconds 5 end def self.maximum_number_of_seconds 5 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end if number_of_seconds <= First.minimum_number_of_seconds return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if verified_seconds.size != new_seconds.length or verified_seconds.size < First.minimum_number_of_seconds or verified_seconds.size() > First.maximum_number_of_seconds return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if old_seconds.include?(a_new_second) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| if a_second.number_of_firsts <= Second.minimum_number_of_firsts a_second.delete else a_second.remove_first(self) end end end def setSecond (aSecond) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds and number_of_seconds <= First.maximum_number_of_seconds is_valid end def self.minimum_number_of_seconds 2 end def self.maximum_number_of_seconds 4 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end @seconds << a_second if a_second.index_of_first(self) != -1 was_added = true else was_added = a_second.add_first(self) unless was_added @seconds.delete(a_second) end end was_added end def remove_second(a_second) was_removed = false unless @seconds.include?(a_second) return was_removed end if number_of_seconds <= First.minimum_number_of_seconds return was_removed end oldIndex = @seconds.index(a_second) @seconds.delete_at(oldIndex) if a_second.index_of_first(self) == -1 was_removed = true else was_removed = a_second.remove_first(self) @seconds.insert(oldIndex,a_second) unless was_removed end was_removed end def set_seconds(new_seconds) was_set = false verified_seconds = [] new_seconds.each do |a_second| next if (verified_seconds.include?(a_second)) verified_seconds << a_second end if verified_seconds.size != new_seconds.length or verified_seconds.size < First.minimum_number_of_seconds or verified_seconds.size() > First.maximum_number_of_seconds return was_set end old_seconds = @seconds.dup @seconds.clear verified_seconds.each do |a_new_second| @seconds << a_new_second if old_seconds.include?(a_new_second) old_seconds.delete(a_new_second) else a_new_second.add_first(self) end end old_seconds.each do |an_old_second| an_old_second.remove_first(self) end was_set = true was_set end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true copy_of_seconds = @seconds.dup @seconds.clear copy_of_seconds.each do |a_second| if a_second.number_of_firsts <= Second.minimum_number_of_firsts a_second.delete else a_second.remove_first(self) end end end def setSecond (aSecond) end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class First < I #------------------------ # MEMBER VARIABLES #------------------------ #First Associations - for documentation purposes #attr_reader :seconds #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false @seconds = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_second(index) a_second = @seconds[index] a_second end def get_seconds new_seconds = @seconds.dup new_seconds end def number_of_seconds number = @seconds.size number end def has_seconds has = @seconds.size > 0 has end def index_of_second(a_second) index = @seconds.index(a_second) index = -1 if index.nil? index end def is_number_of_seconds_valid is_valid = number_of_seconds >= First.minimum_number_of_seconds and number_of_seconds <= First.maximum_number_of_seconds is_valid end def self.minimum_number_of_seconds 1 end def self.maximum_number_of_seconds 4 end def add_second(a_second) was_added = false return false if index_of_second(a_second) != -1 if number_of_seconds >= First.maximum_number_of_seconds return was_added end existing_first = a_second.get_first is_new_first = (!existing_first.nil? and !existing_first.eql?(self)) if is_new_first and existing_first.number_of_seconds <= First.minimum_number_of_seconds return was_added end if is_new_first a_second.set_first(self) else @seconds << a_second end was_added = true was_added end def remove_second(a_second) was_removed = false # Unable to remove a_second, as it must always have a first if a_second.get_first.eql?(self) return was_removed end # first already at minimum (1) if number_of_seconds <= First.minimum_number_of_seconds return was_removed end @seconds.delete(a_second) was_removed = true was_removed end def add_second_at(a_second, index) was_added = false if add_second(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true end was_added end def add_or_move_second_at(a_second, index) was_added = false if @seconds.include?(a_second) if(index < 0) index = 0 end if(index > number_of_seconds()) index = number_of_seconds() - 1 end @seconds.delete(a_second) @seconds.insert(index, a_second) was_added = true else was_added = add_second_at(a_second, index) end was_added end def delete @deleted = true @seconds.each do |a_second| a_second.delete end end def setSecond (aSecond) end def setSeconds (newSeconds) end end