indexing description: "Release retrieve reply message." author: "Peter Wyss " date: "$Date: 2007-05-12 19:57:51 +0200 (Sat, 12 May 2007) $" revision: "$Revision: 257 $" class O_RELEASE_RETRIEVE_REPLY_MESSAGE inherit O_MESSAGE rename make as make_message redefine make_from_generic end O_RELEASE_CONSTANTS undefine out end create make create {O_MESSAGE_FACTORY} make_from_generic feature {NONE} -- Initialization make (a_project: like project; a_creation_time: like creation_time; a_name: like name; a_description: like description; a_version: like version; a_files: like files) is -- Create. require a_project_ok: a_project > 0 a_creation_time_ok: a_creation_time > 0 a_name_ok: a_name /= Void and then not a_name.is_empty a_description_ok: a_description /= Void and then not a_description.is_empty a_version_ok: a_version /= Void and then not a_version.is_empty a_files_ok: a_files /= Void and then not a_files.is_empty do make_message project := a_project creation_time := a_creation_time name := a_name description := a_description version := a_version files := a_files ensure project_set: project = a_project creation_time_set: creation_time = a_creation_time name_set: name = a_name description_set: description = a_description version_set: version = a_version files_set: files = a_files end make_from_generic (a_msg: O_GENERIC_MESSAGE) is -- Create from a generic message. local l_args: HASH_TABLE [STRING, STRING] i: INTEGER l_tuple: TUPLE[name: STRING; platform: STRING] l_elements: LIST[STRING] do Precursor (a_msg) l_args := a_msg.arguments project := l_args.item (project_argument).to_integer creation_time := l_args.item (creation_time_argument).to_integer name := l_args.item (name_argument) description := l_args.item (description_argument) version := l_args.item (version_argument) from i := 1 create files.make (l_args.count - 5) until i > l_args.count - 5 loop l_elements := l_args.item (files_argument + i.out).split ('%N') check l_elements_count_correct: l_elements.count = 2 end create l_tuple l_tuple.name := l_elements.i_th (1) l_tuple.platform := l_elements.i_th (2) files.force (l_tuple) i := i + 1 end end feature -- Access namespace: STRING is -- Namespace of the message type. once Result := release_namespace end type: STRING is -- Type of the message. once Result := release_retrieve_reply_type end project: INTEGER -- id of the project creation_time: INTEGER -- creation time name: STRING -- Name of the release description: STRING -- Description of the release version: STRING -- Version of the release files: ARRAYED_LIST [TUPLE [name: STRING; platform: STRING]] -- List of files with [name, platform] arguments: HASH_TABLE [STRING, STRING] is -- Named arguments. local i: INTEGER do create Result.make (5) Result.force (project.out, project_argument) Result.force (creation_time.out, creation_time_argument) Result.force (name, name_argument) Result.force (description, description_argument) Result.force (version, version_argument) from files.start i := 1 until files.after loop Result.force (files.item.name + "%N" + files.item.platform, files_argument + i.out) files.forth i := i + 1 end end feature {NONE} -- Implementation project_argument: STRING is "project" creation_time_argument: STRING is "creation_time" name_argument: STRING is "name" description_argument: STRING is "description" version_argument: STRING is "version" files_argument: STRING is "files" invariant name_ok: name /= Void and then not name.is_empty end