package de.duehl.basics.replacements.data;

/*
 * Copyright 2026 Christian Dühl. All rights reserved.
 *
 * This program is free software. You can redistribute it and/or
 * modify it under the same terms as perl:
 *
 * general:  http://dev.perl.org/licenses/
 * GPL:      http://dev.perl.org/licenses/gpl1.html
 * artistic: http://dev.perl.org/licenses/artistic.html
 */

/**
 * Diese Klasse steht für einen gefundenen Platzhalter der Form <<begriff:1>>.
 *
 * @version 1.01     2026-08-06
 * @author Christian Dühl
 */

public class FoundPlaceholder {

    /** Der Index, an dem der Platzhalter gefunden wurde. */
    private final int index;

    /** Der gefundene Platzhalter (z.B. "<<town:3>>"). */
    private final String placeholder;

    /** Der Name am Anfang des Platzhalters zwischen "<<" und ":" (z.B. "town"). */
    private final String name;

    /** Die Angabe zur Position am Ende des Platzhalters zwischen ":" und ">>" (z.B. 3). */
    private final int position;

    /** Der Text im Satz, der durch den Platzhalter ersetzt wurde (z.B. "Hamburg"). */
    private String replacedText;

    /**
     * Konstruktor.
     *
     * @param index
     *            Der Index, an dem der Platzhalter gefunden wurde.
     * @param placeholder
     *            Der gefundene Platzhalter (z.B. "<<town:3>>").
     * @param name
     *            Der Name am Anfang des Platzhalters zwischen "<<" und ":" (z.B. "town").
     * @param position
     *            Die Angabe zur Position am Ende des Platzhalters zwischen ":" und ">>" (z.B. 3).
     */
    public FoundPlaceholder(int index, String placeholder, String name, int position) {
        this.index = index;
        this.placeholder = placeholder;
        this.name = name;
        this.position = position;
        replacedText = "";
    }

    /** Getter für den Index, an dem der Platzhalter gefunden wurde. */
    public int getIndex() {
        return index;
    }

    /** Getter für den gefundenen Platzhalter (z.B. "<<town:3>>"). */
    public String getPlaceholder() {
        return placeholder;
    }

    /** Getter für den Namen am Anfang des Platzhalters zwischen "<<" und ":" (z.B. "town"). */
    public String getName() {
        return name;
    }

    /**
     * Getter für die Angabe zur Position am Ende des Platzhalters zwischen ":" und ">>" (z.B. 3).
     */
    public int getPosition() {
        return position;
    }

    /** Getter für den Text im Satz, der durch den Platzhalter ersetzt wurde (z.B. "Hamburg"). */
    public String getReplacedText() {
        return replacedText;
    }

    /** Setter für den Text im Satz, der durch den Platzhalter ersetzt wurde (z.B. "Hamburg"). */
    public void setReplacedText(String replacedText) {
        this.replacedText = replacedText;
    }

    @Override
    public String toString() {
        return "FoundPlaceholder [index=" + index + ", placeholder=" + placeholder + ", name="
                + name + ", position=" + position + ", replacedText=" + replacedText + "]";
    }

}
