ChunkTaxonomyMapping.php

Code Hygiene Score: 95

Keine Issues gefunden.

Dependencies 2

Klassen 1

Funktionen 16

Verwendet von 3

Code

<?php

declare(strict_types=1);

namespace Domain\Entity;

// @responsibility: Mapping zwischen Chunk und Taxonomie-Begriff

use Domain\ValueObject\Confidence;
use Domain\ValueObject\MappingSource;

class ChunkTaxonomyMapping
{
    private ?int $id = null;
    private int $chunkId;
    private int $taxonomyTermId;
    private Confidence $confidence;
    private MappingSource $source;
    private \DateTimeImmutable $createdAt;

    public function __construct()
    {
        $this->createdAt = new \DateTimeImmutable();
        $this->confidence = Confidence::medium();
        $this->source = MappingSource::AUTO;
    }

    // Getters
    public function getId(): ?int
    {
        return $this->id;
    }

    public function getChunkId(): int
    {
        return $this->chunkId;
    }

    public function getTaxonomyTermId(): int
    {
        return $this->taxonomyTermId;
    }

    public function getConfidence(): Confidence
    {
        return $this->confidence;
    }

    public function getSource(): MappingSource
    {
        return $this->source;
    }

    public function getCreatedAt(): \DateTimeImmutable
    {
        return $this->createdAt;
    }

    // Setters
    public function setId(int $id): self
    {
        $this->id = $id;

        return $this;
    }

    public function setChunkId(int $chunkId): self
    {
        $this->chunkId = $chunkId;

        return $this;
    }

    public function setTaxonomyTermId(int $taxonomyTermId): self
    {
        $this->taxonomyTermId = $taxonomyTermId;

        return $this;
    }

    public function setConfidence(Confidence $confidence): self
    {
        $this->confidence = $confidence;

        return $this;
    }

    public function setConfidenceFromFloat(float $value): self
    {
        $this->confidence = Confidence::fromFloat($value);

        return $this;
    }

    public function setSource(MappingSource $source): self
    {
        $this->source = $source;

        return $this;
    }

    public function setCreatedAt(\DateTimeImmutable $createdAt): self
    {
        $this->createdAt = $createdAt;

        return $this;
    }

    public function toArray(): array
    {
        return [
            'id' => $this->id,
            'chunk_id' => $this->chunkId,
            'taxonomy_term_id' => $this->taxonomyTermId,
            'confidence' => $this->confidence->value(),
            'source' => $this->source->value,
            'created_at' => $this->createdAt->format('Y-m-d H:i:s'),
        ];
    }

    public static function fromArray(array $data): self
    {
        $mapping = new self();

        if (isset($data['id'])) {
            $mapping->setId((int) $data['id']);
        }
        if (isset($data['chunk_id'])) {
            $mapping->setChunkId((int) $data['chunk_id']);
        }
        if (isset($data['taxonomy_term_id'])) {
            $mapping->setTaxonomyTermId((int) $data['taxonomy_term_id']);
        }
        if (isset($data['confidence'])) {
            $mapping->setConfidenceFromFloat((float) $data['confidence']);
        }
        if (isset($data['source'])) {
            $mapping->setSource(MappingSource::from($data['source']));
        }
        if (isset($data['created_at'])) {
            $mapping->setCreatedAt(new \DateTimeImmutable($data['created_at']));
        }

        return $mapping;
    }
}
← Übersicht Graph