From a508ec92dc570dcfe9880a73273dc261a9e5da2c Mon Sep 17 00:00:00 2001 From: Andrea Giulianelli Date: Fri, 17 Feb 2023 11:19:17 +0100 Subject: [PATCH] chore: add zone concepts --- src/main/kotlin/entity/zone/Zone.kt | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/kotlin/entity/zone/Zone.kt diff --git a/src/main/kotlin/entity/zone/Zone.kt b/src/main/kotlin/entity/zone/Zone.kt new file mode 100644 index 00000000..381ecafc --- /dev/null +++ b/src/main/kotlin/entity/zone/Zone.kt @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023. Smart Operating Block + * + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ + +package entity.zone + +/** + * It describes a zone inside the Operating block. + * Each zone is identified by an [id] and described + * by a [name] and a [description]. + */ +data class Zone( + val id: ZoneID, + val name: String, + val description: String, +) { + init { + require(this.name.isNotEmpty()) + require(this.description.isNotEmpty()) + } + + override fun equals(other: Any?): Boolean = when { + other === this -> true + other is Zone -> this.id == other.id + else -> false + } + + override fun hashCode(): Int = this.id.hashCode() +} + +/** + * It represents the Operating Block zone ID [value]. + */ +data class ZoneID(val value: String) { + init { + // Constructor validation: the id must not be empty + require(this.value.isNotEmpty()) + } +}