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();
}
}