Skip to content

Commit

Permalink
chore: add zone concepts
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreaGiulianelli committed Feb 23, 2023
1 parent 57aa1f7 commit a508ec9
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions src/main/kotlin/entity/zone/Zone.kt
Original file line number Diff line number Diff line change
@@ -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())
}
}

0 comments on commit a508ec9

Please sign in to comment.