Skip to content

Commit 2abde77

Browse files
committed
Version 2.2.3.1 (2019-12-01)
---------------------------- - Changed type handler registration in [DocHandlerFacade](src/main/java/org/fugerit/java/doc/base/facade/DocHandlerFacade.java)
1 parent d38e538 commit 2abde77

File tree

20 files changed

+152
-26
lines changed

20 files changed

+152
-26
lines changed

fj-doc-base/ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Version 2.2.3.1 (2019-12-01)
2+
----------------------------
3+
- Changed type handler registration in [DocHandlerFacade](src/main/java/org/fugerit/java/doc/base/facade/DocHandlerFacade.java)
4+
15
Version 2.2.2.4 (2019-11-30)
26
----------------------------
37
- Now one element is mandatory in element 'cell' (minOccurs='1')

fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public interface DocTypeHandler extends KeyString {
66

77
String getType();
88

9+
String getModule();
10+
911
String getMime();
1012

1113
void handle( DocInput docInput, DocOutput docOutput ) throws Exception;

fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDefault.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class DocTypeHandlerDefault implements DocTypeHandler, Serializable {
1313

1414
private String type;
1515

16-
private String key;
16+
private String module;
1717

1818
private String mime;
1919

@@ -28,32 +28,37 @@ public String getMime() {
2828

2929
@Override
3030
public String getKey() {
31-
return this.key;
31+
return createKey( this.getType() , this.getModule() ) ;
3232
}
3333

3434
@Override
3535
public String getType() {
3636
return this.type;
3737
}
3838

39+
@Override
40+
public String getModule() {
41+
return module;
42+
}
43+
3944
@Override
4045
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
4146

4247
}
4348

44-
public DocTypeHandlerDefault(String type, String key, String mime) {
49+
public DocTypeHandlerDefault(String type, String module, String mime) {
4550
super();
4651
this.type = type;
47-
this.key = key;
52+
this.module = module;
4853
this.mime = mime;
4954
}
5055

51-
public DocTypeHandlerDefault(String type, String mime) {
52-
this( type, type, mime );
56+
public DocTypeHandlerDefault(String type, String module ) {
57+
this( type, module, null );
5358
}
5459

55-
public DocTypeHandlerDefault(String type) {
56-
this( type, type, null );
60+
public static final String createKey( String type, String mod ) {
61+
return type+"-"+mod;
5762
}
5863

5964
}

fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXML.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ public class DocTypeHandlerXML extends DocTypeHandlerDefault {
1313

1414
public static final DocTypeHandler HANDLER = new DocTypeHandlerXML();
1515

16+
public static final String TYPE = DocConfig.TYPE_XML;
17+
18+
public static final String MODULE = "doc";
19+
1620
public DocTypeHandlerXML() {
17-
super( DocConfig.TYPE_XML );
21+
super( TYPE, MODULE );
1822
}
1923

2024
@Override

fj-doc-base/src/main/java/org/fugerit/java/doc/base/facade/DocHandlerFacade.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,60 @@
99
import org.fugerit.java.doc.base.config.DocInput;
1010
import org.fugerit.java.doc.base.config.DocOutput;
1111
import org.fugerit.java.doc.base.config.DocTypeHandler;
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
1214

15+
/**
16+
* DocHandlerFacade
17+
*
18+
* Starting from versione 2.2.3.1 registration of type handlers changes :
19+
* Now is possible to register a type handler both for type (ex. pdf) or key (ex. pdf-fop, pdf-itext, pdf-box)
20+
*
21+
* @author fugerit
22+
*
23+
*/
1324
public class DocHandlerFacade implements Serializable {
1425

26+
private static final Logger logger = LoggerFactory.getLogger( DocHandlerFacade.class );
27+
1528
/**
1629
*
1730
*/
1831
private static final long serialVersionUID = -8625371479549479952L;
1932

33+
public static final boolean DEFAULT_REGISTER_FOR_TYPE = true;
34+
35+
public static final boolean DEFAULT_ERROR_ON_DUPLICATE = false;
36+
2037
private Map<String, DocTypeHandler> mapHandlers;
2138

2239
public DocHandlerFacade() {
2340
this.mapHandlers = new HashMap<>();
2441
}
42+
43+
private void doRegister( DocTypeHandler handler, String id ) {
44+
logger.info( "Registering handler with id {} : {}", id, handler.getClass().getName() );
45+
this.mapHandlers.put( id, handler );
46+
}
47+
48+
public void registerHandler( DocTypeHandler handler, boolean registerForType, boolean errorOnDuplicate ) throws Exception {
49+
doRegister( handler, handler.getKey() );
50+
if ( registerForType ) {
51+
String type = handler.getType();
52+
DocTypeHandler previous = this.mapHandlers.get( type );
53+
if ( previous != null ) {
54+
if ( errorOnDuplicate ) {
55+
throw new ConfigException( "Duplicate handler for type : "+type );
56+
} else {
57+
logger.warn( "Warning duplicate handler for type, {} will replace {}", type, handler.getKey(), previous.getKey() );
58+
}
59+
}
60+
doRegister(handler, type);
61+
}
62+
}
2563

2664
public void registerHandler( DocTypeHandler handler ) throws Exception {
27-
this.mapHandlers.put( handler.getKey(), handler );
65+
this.registerHandler( handler, DEFAULT_REGISTER_FOR_TYPE, DEFAULT_ERROR_ON_DUPLICATE );
2866
}
2967

3068
public void handle( DocInput docInput, DocOutput docOutput ) throws Exception {
@@ -37,6 +75,9 @@ public void handle( DocInput docInput, DocOutput docOutput ) throws Exception {
3775
}
3876
}
3977

78+
public DocTypeHandler findHandler( String id ) {
79+
return this.mapHandlers.get( id );
80+
}
4081

4182
public void register( String factoryCatalogPath ) {
4283

fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/helper/FreeMarkerDocHelperTypeHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ public class FreeMarkerDocHelperTypeHandler extends DocTypeHandlerDefault {
1414

1515
public static final String ATT_DOCBASE = "docBase";
1616

17+
public static final String MODULE = "fm";
18+
1719
/**
1820
*
1921
*/
2022
private static final long serialVersionUID = -7394516771708L;
2123

2224
public FreeMarkerDocHelperTypeHandler(String type, String fmDocChainId) {
23-
super(type);
25+
super(type, MODULE);
2426
this.fmDocChainId = fmDocChainId;
2527
}
2628

fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class FreeMarkerFopTypeHandler extends DocTypeHandlerDefault {
2020

2121
public static DocTypeHandler HANDLER = new FreeMarkerFopTypeHandler();
2222

23+
public static final String MODULE = "fop";
24+
2325
/**
2426
*
2527
*/
@@ -30,7 +32,7 @@ public FreeMarkerFopTypeHandler() {
3032
}
3133

3234
public FreeMarkerFopTypeHandler(String type) {
33-
super(type);
35+
super(type, MODULE);
3436
}
3537

3638
@Override

fj-doc-mod-itext/src/main/java/org/fugerit/java/doc/mod/itext/HtmlTypeHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class HtmlTypeHandler extends DocTypeHandlerDefault {
2222
public static final DocTypeHandler HANDLER = new HtmlTypeHandler();
2323

2424
public HtmlTypeHandler() {
25-
super( ITextDocHandler.DOC_OUTPUT_HTML );
25+
super( ITextDocHandler.DOC_OUTPUT_HTML, ITextDocHandler.MODULE );
2626
}
2727

2828
@Override

fj-doc-mod-itext/src/main/java/org/fugerit/java/doc/mod/itext/ITextDocHandler.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ The Apache Software Foundation (http://www.apache.org/).
3535

3636
import org.fugerit.java.core.log.LogFacade;
3737
import org.fugerit.java.core.util.regex.ParamFinder;
38+
import org.fugerit.java.doc.base.config.DocConfig;
3839
import org.fugerit.java.doc.base.helper.SourceResolverHelper;
3940
import org.fugerit.java.doc.base.model.DocBarcode;
4041
import org.fugerit.java.doc.base.model.DocBase;
@@ -129,11 +130,13 @@ private static void setStyle( DocStyle parent, DocStyle current ) {
129130

130131
private String docType;
131132

132-
public final static String DOC_OUTPUT_HTML = "html";
133+
public final static String MODULE = "itext";
133134

134-
public final static String DOC_OUTPUT_PDF = "pdf";
135+
public final static String DOC_OUTPUT_HTML = DocConfig.TYPE_HTML;
135136

136-
public final static String DOC_OUTPUT_RTF = "rtf";
137+
public final static String DOC_OUTPUT_PDF = DocConfig.TYPE_PDF;
138+
139+
public final static String DOC_OUTPUT_RTF = DocConfig.TYPE_RTF;
137140

138141
public final static String DOC_DEFAULT_FONT_NAME = "default-font-name";
139142
public final static String DOC_DEFAULT_FONT_SIZE = "default-font-size";

fj-doc-mod-itext/src/main/java/org/fugerit/java/doc/mod/itext/PdfTypeHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class PdfTypeHandler extends DocTypeHandlerDefault {
2323
public static DocTypeHandler HANDLER = new PdfTypeHandler();
2424

2525
public PdfTypeHandler() {
26-
super( ITextDocHandler.DOC_OUTPUT_PDF );
26+
super( ITextDocHandler.DOC_OUTPUT_PDF, ITextDocHandler.MODULE );
2727
}
2828

2929
@Override

0 commit comments

Comments
 (0)