Password.kt

package de.pflugradts.passbird.domain.model.egg

import de.pflugradts.passbird.domain.model.ddd.DomainEntity
import de.pflugradts.passbird.domain.model.shell.EncryptedShell

class Password private constructor(private var encryptedShell: EncryptedShell) : DomainEntity {
    fun update(newEncryptedShell: EncryptedShell) {
        encryptedShell = newEncryptedShell.copy()
    }
    fun discard() = encryptedShell.scramble()
    fun view() = encryptedShell.copy()
    override fun equals(other: Any?) = (other as? Password)?.view() == encryptedShell
    override fun hashCode() = encryptedShell.hashCode()
    companion object {
        fun createPassword(encryptedShell: EncryptedShell) = Password(encryptedShell.copy())
    }
}