88import java .util .List ;
99import java .util .Properties ;
1010
11- import org . fugerit . java . core . cfg . ConfigRuntimeException ;
11+ import com . lowagie . text .* ;
1212import org .fugerit .java .core .function .SafeFunction ;
1313import org .fugerit .java .core .lang .helpers .StringUtils ;
1414import org .fugerit .java .core .util .regex .ParamFinder ;
1515import org .fugerit .java .doc .base .config .DocConfig ;
1616import org .fugerit .java .doc .base .helper .SourceResolverHelper ;
17- import org .fugerit .java .doc .base .model .DocBarcode ;
18- import org .fugerit .java .doc .base .model .DocBase ;
19- import org .fugerit .java .doc .base .model .DocElement ;
20- import org .fugerit .java .doc .base .model .DocFooter ;
21- import org .fugerit .java .doc .base .model .DocHeader ;
22- import org .fugerit .java .doc .base .model .DocHeaderFooter ;
23- import org .fugerit .java .doc .base .model .DocImage ;
24- import org .fugerit .java .doc .base .model .DocInfo ;
25- import org .fugerit .java .doc .base .model .DocPageBreak ;
26- import org .fugerit .java .doc .base .model .DocPara ;
27- import org .fugerit .java .doc .base .model .DocPhrase ;
28- import org .fugerit .java .doc .base .model .DocStyle ;
29- import org .fugerit .java .doc .base .model .DocTable ;
17+ import org .fugerit .java .doc .base .model .*;
3018import org .fugerit .java .doc .base .typehelper .generic .GenericConsts ;
3119import org .fugerit .java .doc .base .xml .DocModelUtils ;
3220
33- import com .lowagie .text .Anchor ;
34- import com .lowagie .text .BadElementException ;
35- import com .lowagie .text .Chunk ;
36- import com .lowagie .text .Document ;
37- import com .lowagie .text .DocumentException ;
38- import com .lowagie .text .Element ;
39- import com .lowagie .text .Font ;
40- import com .lowagie .text .Header ;
41- import com .lowagie .text .HeaderFooter ;
42- import com .lowagie .text .Image ;
43- import com .lowagie .text .Paragraph ;
44- import com .lowagie .text .Phrase ;
45- import com .lowagie .text .Rectangle ;
4621import com .lowagie .text .html .HtmlTags ;
4722import com .lowagie .text .pdf .Barcode ;
4823import com .lowagie .text .pdf .Barcode128 ;
@@ -277,12 +252,12 @@ private void handleTypeSpecific( Properties info ) {
277252 }
278253
279254 protected void handleHeaderExt ( DocHeader docHeader , PdfHelper pdfHelper , OpenPdfHelper docHelper ) throws DocumentException {
280- log .trace ( "docHelper : {}" , docHelper );
255+ log .trace ( "handleHeaderExt docHelper : {}" , docHelper );
281256 pdfHelper .setDocHeader ( docHeader );
282257 }
283258
284259 protected void handleFooterExt ( DocFooter docFooter , PdfHelper pdfHelper , OpenPdfHelper docHelper ) throws DocumentException {
285- log .trace ( "docHelper : {}" , docHelper );
260+ log .trace ( "handleFooterExt docHelper : {}" , docHelper );
286261 pdfHelper .setDocFooter ( docFooter );
287262 }
288263
@@ -352,11 +327,7 @@ public void handleDoc(DocBase docBase) throws DocumentException, IOException {
352327 }
353328
354329 public static void handleElementsSafe ( Document document , Iterator <DocElement > itDoc , OpenPdfHelper docHelper ) {
355- try {
356- handleElements (document , itDoc , docHelper );
357- } catch (Exception e ) {
358- throw new ConfigRuntimeException ( e );
359- }
330+ SafeFunction .apply ( () -> handleElements (document , itDoc , docHelper ) );
360331 }
361332
362333 public static void handleElements ( Document document , Iterator <DocElement > itDoc , OpenPdfHelper docHelper ) throws DocumentException , IOException {
@@ -365,35 +336,53 @@ public static void handleElements( Document document, Iterator<DocElement> itDoc
365336 getElement (document , docElement , true , docHelper );
366337 }
367338 }
368-
339+
340+ public static void checkAddElement ( DocumentParent documentParent , boolean addElement , Element result ) {
341+ if ( addElement ) {
342+ documentParent .add ( result );
343+ }
344+ }
345+
369346 public static Element getElement ( Document document , DocElement docElement , boolean addElement , OpenPdfHelper docHelper ) throws DocumentException , IOException {
370347 Element result = null ;
371348 DocumentParent documentParent = new DocumentParent ( document );
372349 if ( docElement instanceof DocPhrase ) {
373350 result = createPhrase ( (DocPhrase )docElement , docHelper );
374- if ( addElement ) {
375- documentParent .add ( result );
376- }
351+ checkAddElement ( documentParent , addElement , result );
377352 } else if ( docElement instanceof DocPara ) {
378353 result = createPara ( (DocPara )docElement , docHelper );
379- if ( addElement ) {
380- documentParent .add ( result );
381- }
354+ checkAddElement ( documentParent , addElement , result );
382355 } else if ( docElement instanceof DocTable ) {
383356 result = OpenPdfDocTableHelper .createTable ( (DocTable )docElement , docHelper );
384- if ( addElement ) {
385- document .add ( result );
386- }
357+ checkAddElement ( documentParent , addElement , result );
387358 } else if ( docElement instanceof DocImage ) {
388359 result = createImage ( (DocImage )docElement );
389- if ( addElement ) {
390- documentParent .add ( result );
391- }
360+ checkAddElement ( documentParent , addElement , result );
361+ } else if ( docElement instanceof DocList ) {
362+ result = createList ( (DocList )docElement , docHelper );
363+ checkAddElement ( documentParent , addElement , result );
392364 } else if ( docElement instanceof DocPageBreak ) {
393365 document .newPage ();
394366 }
395367 return result ;
396368 }
369+
370+ private static com .lowagie .text .List createList ( DocList docList , OpenPdfHelper docHelper ) throws IOException {
371+ com .lowagie .text .List list = new com .lowagie .text .List ( docList .isOrdered () );
372+ for ( DocElement element : docList .getElementList () ) {
373+ if ( element instanceof DocLi ) {
374+ DocLi li = (DocLi ) element ;
375+ if ( li .getContent () instanceof DocPara ) {
376+ list .add ( new ListItem ( createPara ( (DocPara )li .getContent (), docHelper ) ) );
377+ } else {
378+ docHelper .handelError ( String .format ( "unsupported type %s" , li .getContent ().getClass ().getSimpleName () ) );
379+ }
380+ } else {
381+ docHelper .handelError ( String .format ( "wrong children%s" , element .getClass ().getSimpleName () ) );
382+ }
383+ }
384+ return list ;
385+ }
397386
398387 private void handleHeaderFooterElement ( DocElement docElement , float inputLeading , OpenPdfHelper docHelper , Phrase phrase ) throws DocumentException , IOException {
399388 float leading = inputLeading ;
0 commit comments