code: @Override
     public DataCollector<RD> getDataCollector() throws VectorPrintException {
        try {
           if (!getSettings().containsKey(DATACLASS)) {
              return null;
           }
           Class dataClass = Class.forName(getSettings().getProperty(DATACLASS));
  
           return (DataCollector<RD>) dataClass.newInstance();
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
           throw new VectorPrintException(ex);
        }
     }
docs: Instantiates a datacollector based on a property {@link ReportConstants#DATACLASS}. Providing a data collector is
  obligatory unless you extend {@link BaseReportGenerator#createReportBody(com.itextpdf.text.Document, com.vectorprint.report.data.ReportDataHolder, com.itextpdf.text.pdf.PdfWriter)
  } and provide the name of this class in a setting {@link ReportConstants#REPORTCLASS}.
  
  @return a data collector or null
  @throws com.vectorprint.VectorPrintException