class MY_WET_CLASS

(source code)

description

Example of a class that does not exemplify the DRY principle. Contrast 87 lines with MY_DRY_CLASS.

note
	description: "[
		Example of a class that does not exemplify the
		[https://en.wikipedia.org/wiki/Don%27t_repeat_yourself DRY principle].
		Contrast 87 lines with ${MY_DRY_CLASS}.
	]"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-01-20 19:18:27 GMT (Saturday 20th January 2024)"
	revision: "7"

class
	MY_WET_CLASS

create
	make

feature {NONE} -- Initialization

	make (data_import: like data_export)
		do
			set_from_table (data_import)
		end

feature -- Access

	boolean: BOOLEAN

	data_export: HASH_TABLE [STRING_32, STRING]
		do
			create Result.make (5)
			Result [Field_boolean] := boolean.out
			Result [Field_double] := double.out
			Result [Field_string] := string
			Result [Field_string_32] := string_32
			Result [Field_integer] := integer.out
			Result [Field_natural] := natural.out
			Result [Field_real] := real.out
		end

	double: DOUBLE

	integer: INTEGER

	natural: NATURAL

	real: REAL

	string: STRING

	string_32: STRING_32

feature -- Element change

	reset_fields
		do
			boolean := False
			double := 0
			natural := 0
			integer := 0
			real := 0
			string.wipe_out
			string_32.wipe_out
		end

	set_from_table (data_import: like data_export)
		do
			if data_import.has_key (Field_boolean) then
				boolean := data_import.found_item.to_boolean
			end
			if data_import.has_key (Field_double) then
				double := data_import.found_item.to_double
			end
			if data_import.has_key (Field_integer) then
				integer := data_import.found_item.to_integer
			end
			if data_import.has_key (Field_natural) then
				natural := data_import.found_item.to_natural
			end
			if data_import.has_key (Field_real) then
				real := data_import.found_item.to_real_32
			end
			if data_import.has_key (Field_string) then
				string := data_import.found_item
			else
				create string.make_empty
			end
			if data_import.has_key (Field_string_32) then
				string_32 := data_import.found_item
			else
				create string_32.make_empty
			end
		end

feature -- Basic operations

	print_fields (lio: EL_LOGGABLE)
		do
			across data_export as field loop
				lio.put_labeled_string (field.key, field.item)
				lio.put_new_line
			end
		end

feature {NONE} -- Variables

	Field_boolean: STRING = "boolean"

	Field_double: STRING = "double"

	Field_integer: STRING = "integer"

	Field_natural: STRING = "natural"

	Field_real: STRING = "real"

	Field_string: STRING = "string"

	Field_string_32: STRING = "string_32"

end