/** * Copyright (C) 2011-2015 The XDocReport Team <xdocreport@googlegroups.com> * * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.util.Map; import fr.opensagres.xdocreport.core.utils.Base64Utility; import fr.opensagres.xdocreport.document.IXDocReport; import fr.opensagres.xdocreport.document.json.JSONObject; import fr.opensagres.xdocreport.document.registry.XDocReportRegistry; import fr.opensagres.xdocreport.template.formatter.FieldsMetadata; import fr.opensagres.xdocreport.template.formatter.FieldsMetadataXMLSerializer; public class DumTest { public static void main( String[] args ) { try { // Load report String document = "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"; InputStream in = new ByteArrayInputStream( Base64Utility.decode( document ) ); IXDocReport report = XDocReportRegistry.getRegistry().loadReport( in, null, "Velocity" ); // Set FieldsMetadata StringReader fieldsReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><fields templateEngineKind=\"Velocity\" ><description><![CDATA[]]></description><field name=\"developers.Name\" list=\"true\" imageName=\"\" syntaxKind=\"\"><description><![CDATA[]]></description></field><field name=\"developers.LastName\" list=\"true\" imageName=\"\" syntaxKind=\"\"><description><![CDATA[]]></description></field><field name=\"developers.Mail\" list=\"true\" imageName=\"\" syntaxKind=\"\"><description><![CDATA[]]></description></field></fields>"); FieldsMetadata metadata = FieldsMetadataXMLSerializer.getInstance().load( fieldsReader ); report.setFieldsMetadata( metadata ); // Create context String json = "{\"project\":{\"name\":\"XDocReport\"},\"developers\":[{\"mail\":\"angelo.zerr@gmail.com\",\"lastName\":\"Angelo\",\"name\":\"ZERR\"},{\"mail\":\"pascal.leclercq@gmail.com\",\"lastName\":\"Pascal\",\"name\":\"Leclercq\"}]}"; Map context = new JSONObject( json ); // Generate report by merging context and template report. OutputStream out = new FileOutputStream( new File( "DumTest_Out.docx" ) ); report.process( context, out ); } catch ( Exception e ) { e.printStackTrace(); } } }