note
	description: "Summary description for {DOWNLOAD_PRODUCT_OPTIONS}."
	date: "$Date$"
	revision: "$Revision$"

class
	DOWNLOAD_PRODUCT_OPTIONS

feature -- Access

	key: detachable READABLE_STRING_32
			-- Associated key

	hash: detachable READABLE_STRING_32
			-- Associated hash.

	size: INTEGER_64
			-- Product size.

	filename: detachable READABLE_STRING_32
			-- Product filename.

	platform: detachable READABLE_STRING_8
			-- Product platform.

	os_family: detachable READABLE_STRING_32
			-- Os Family		

feature -- Element change

	set_key (a_key: like key)
			-- Assign `key' with `a_key'.
		do
			key := a_key
		ensure
			key_assigned: key = a_key
		end

	set_hash (a_hash: like hash)
			-- Assign `hash' with `a_hash'.
		do
			hash := a_hash
		ensure
			hash_assigned: hash = a_hash
		end

	set_size (a_size: like size)
			-- Assign `size' with `a_size'.
		do
			size := a_size
		ensure
			size_assigned: size = a_size
		end

	set_filename (a_filename: like filename)
			-- Assign `filename' with `a_filename'.
		do
			filename := a_filename
		ensure
			filename_assigned: filename = a_filename
		end

	set_platform (a_platform: detachable READABLE_STRING_8)
			-- Assign `platform' with `a_platform'.
		do
			platform := a_platform
			if a_platform /= Void then
				if a_platform.starts_with ("win") then
					os_family := "windows"
				elseif a_platform.starts_with ("solaris") then
					os_family := "solaris"
				elseif a_platform.starts_with ("openbsd")	then
					os_family := "openbsd"
				elseif a_platform.starts_with ("macos")	then
					os_family := "mac"
				elseif a_platform.starts_with ("linux")	then
					os_family := "linux"
				elseif a_platform.starts_with ("freebsd")	then
					os_family := "freebsd"
				else
					os_family := "unknow"
				end
			end
		ensure
			platform_assigned: (a_platform = Void implies platform = Void) or (a_platform /= Void implies attached platform as p and then a_platform.same_string (p))
		end

end