PowerpointStamper.java

1
package pro.verron.officestamper.experimental;
2
3
import org.docx4j.dml.CTRegularTextRun;
4
import org.docx4j.dml.CTTextParagraph;
5
import org.docx4j.openpackaging.exceptions.Docx4JException;
6
import org.docx4j.openpackaging.packages.PresentationMLPackage;
7
import org.springframework.expression.spel.SpelParserConfiguration;
8
import org.springframework.expression.spel.standard.SpelExpressionParser;
9
import org.springframework.expression.spel.support.StandardEvaluationContext;
10
import pro.verron.officestamper.api.OfficeStamper;
11
import pro.verron.officestamper.api.OfficeStamperException;
12
import pro.verron.officestamper.core.Placeholders;
13
14
import java.io.OutputStream;
15
import java.util.List;
16
17
/**
18
 * The PowerpointStamper class implements the OfficeStamper interface
19
 * to provide functionality for stamping Powerpoint presentations with
20
 * context and writing the result to an OutputStream.
21
 */
22
public class PowerpointStamper
23
        implements OfficeStamper<PresentationMLPackage> {
24
25
    @Override
26
    public void stamp(
27
            PresentationMLPackage template,
28
            Object context,
29
            OutputStream outputStream
30
    )
31
            throws OfficeStamperException {
32
        Class<CTTextParagraph> ctTextParagraphClass = CTTextParagraph.class;
33
        List<CTTextParagraph> ctTextParagraphs = PowerpointCollector.collect(template,
34
                ctTextParagraphClass);
35
        for (CTTextParagraph paragraph : ctTextParagraphs) {
36
            PowerpointParagraph paragraph1 = new PowerpointParagraph(
37
                    paragraph);
38
            String string = paragraph1.asString();
39
            for (var variable : Placeholders.findVariables(string)) {
40
                var replacement = new CTRegularTextRun();
41
                var evaluationContext = new StandardEvaluationContext(context);
42
                var parserConfiguration = new SpelParserConfiguration();
43
                var parser = new SpelExpressionParser(parserConfiguration);
44
                var expression = parser.parseExpression(variable.content());
45
                var value = expression.getValue(evaluationContext);
46
47 1 1. stamp : removed call to org/docx4j/dml/CTRegularTextRun::setT → KILLED
                replacement.setT((String) value);
48 1 1. stamp : removed call to pro/verron/officestamper/experimental/PowerpointParagraph::replace → KILLED
                paragraph1.replace(variable, replacement);
49
            }
50
51
        }
52
        try {
53 1 1. stamp : removed call to org/docx4j/openpackaging/packages/PresentationMLPackage::save → KILLED
            template.save(outputStream);
54
        } catch (Docx4JException e) {
55
            throw new OfficeStamperException(e);
56
        }
57
    }
58
59
60
}

Mutations

47

1.1
Location : stamp
Killed by : pro.verron.officestamper.test.BasicPowerpointTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.BasicPowerpointTest]/[method:testStamper()]
removed call to org/docx4j/dml/CTRegularTextRun::setT → KILLED

48

1.1
Location : stamp
Killed by : pro.verron.officestamper.test.BasicPowerpointTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.BasicPowerpointTest]/[method:testStamper()]
removed call to pro/verron/officestamper/experimental/PowerpointParagraph::replace → KILLED

53

1.1
Location : stamp
Killed by : pro.verron.officestamper.test.BasicPowerpointTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.BasicPowerpointTest]/[method:testStamper()]
removed call to org/docx4j/openpackaging/packages/PresentationMLPackage::save → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0