PowerpointCollector.java
package pro.verron.officestamper.experimental;
import java.util.ArrayList;
import java.util.List;
/// The PowerpointCollector class is used to collect instances of a specific class in a PowerPoint presentation.
///
/// @param <T> the type of instances to collect
public class PowerpointCollector<T>
extends PowerpointVisitor {
private final Class<T> aClass;
private final List<T> list = new ArrayList<>();
/// The PowerpointCollector class is used to collect instances of a specific class in a PowerPoint presentation.
///
/// @param aClass the type of instances to collect
public PowerpointCollector(Class<T> aClass) {
this.aClass = aClass;
}
/// Collects instances of a specific class in a PowerPoint presentation.
///
/// @param <T> the type of instances to collect
/// @param template the PowerPoint presentation template
/// @param aClass the type of instances to collect
///
/// @return a list of instances of the specified class
public static <T> List<T> collect(
Object template,
Class<T> aClass
) {
var collector = new PowerpointCollector<>(aClass);
collector.visit(template);
return collector.collect();
}
/// Retrieves the collected instances of a specific class.
///
/// @return an instance list of the specified class
public List<T> collect() {
return list;
}
@Override
protected void before(Object object) {
if (aClass.isInstance(object))
list.add(aClass.cast(object));
}
}