ExcelParagraph.java
package pro.verron.officestamper.experimental;
import org.xlsx4j.sml.CTRst;
import pro.verron.officestamper.api.Placeholder;
/// The ExcelParagraph class represents a paragraph in an Excel document.
/// It provides methods to replace expressions and retrieve the aggregated text over all runs.
public class ExcelParagraph {
private final CTRst paragraph;
/// Constructs a new ParagraphWrapper for the given paragraph.
///
/// @param paragraph the paragraph to wrap.
public ExcelParagraph(CTRst paragraph) {
this.paragraph = paragraph;
}
/// Replaces the given expression with the replacement object within
/// the paragraph.
/// The replacement object must be a valid DOCX4J Object.
///
/// @param placeholder the expression to be replaced.
/// @param replacement the object to replace the expression.
public void replace(Placeholder placeholder, String replacement) {
var ctXstringWhitespace = paragraph.getT();
var string = ctXstringWhitespace.getValue();
var start = string.indexOf(placeholder.expression());
var end = start + placeholder.expression()
.length();
var next = string.substring(0, start) + replacement + string.substring(end);
ctXstringWhitespace.setValue(next);
}
/// {@inheritDoc}
@Override
public String toString() {
return asString();
}
/// Returns the aggregated text over all runs.
///
/// @return the text of all runs.
public String asString() {
return paragraph.getR() + ": " + paragraph.getT()
.getValue();
}
}