EntityStatus.php
- Pfad:
src/Domain/ValueObject/EntityStatus.php - Namespace: Domain\ValueObject
- Zeilen: 93 | Größe: 2,310 Bytes
- Geändert: 2025-12-25 10:43:10 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Klassen 1
-
EntityStatusenum Zeile 9
Funktionen 7
-
canTransitionTo()public Zeile 20 -
getAllowedTransitions()public Zeile 30 -
isTerminal()public Zeile 44 -
isActive()public Zeile 52 -
isValidated()public Zeile 60 -
label()public Zeile 68 -
badgeClass()public Zeile 82
Code
<?php
declare(strict_types=1);
namespace Domain\ValueObject;
// @responsibility: Entity-Status-Enum für Wissensgraph-Entitäten
enum EntityStatus: string
{
case EXTRACTED = 'extracted';
case NORMALIZED = 'normalized';
case VALIDATED = 'validated';
case DEPRECATED = 'deprecated';
case MERGED = 'merged';
/**
* Check if transition to target status is allowed.
*/
public function canTransitionTo(self $target): bool
{
return in_array($target, $this->getAllowedTransitions(), true);
}
/**
* Get all allowed transitions from current status.
*
* @return array<self>
*/
public function getAllowedTransitions(): array
{
return match ($this) {
self::EXTRACTED => [self::NORMALIZED, self::DEPRECATED],
self::NORMALIZED => [self::VALIDATED, self::DEPRECATED, self::MERGED],
self::VALIDATED => [self::DEPRECATED, self::MERGED],
self::DEPRECATED => [],
self::MERGED => [],
};
}
/**
* Check if this is a terminal status.
*/
public function isTerminal(): bool
{
return in_array($this, [self::DEPRECATED, self::MERGED], true);
}
/**
* Check if entity is actively usable.
*/
public function isActive(): bool
{
return in_array($this, [self::EXTRACTED, self::NORMALIZED, self::VALIDATED], true);
}
/**
* Check if entity is fully processed.
*/
public function isValidated(): bool
{
return $this === self::VALIDATED;
}
/**
* Get human-readable label.
*/
public function label(): string
{
return match ($this) {
self::EXTRACTED => 'Extrahiert',
self::NORMALIZED => 'Normalisiert',
self::VALIDATED => 'Validiert',
self::DEPRECATED => 'Veraltet',
self::MERGED => 'Zusammengeführt',
};
}
/**
* Get CSS class for badge styling.
*/
public function badgeClass(): string
{
return match ($this) {
self::EXTRACTED => 'pending',
self::NORMALIZED => 'info',
self::VALIDATED => 'completed',
self::DEPRECATED => 'warning',
self::MERGED => 'secondary',
};
}
}