@@ -206,11 +206,11 @@ public class Worksheet implements Closeable {
206206 /**
207207 * Header map for left, central and right field text.
208208 */
209- private Map <Position ,String > header = new LinkedHashMap ();
209+ private final Map <Position , MarginalInformation > header = new LinkedHashMap <> ();
210210 /**
211211 * Footer map for left, central and right field text.
212212 */
213- private Map <Position ,String > footer = new LinkedHashMap ();
213+ private final Map <Position , MarginalInformation > footer = new LinkedHashMap <> ();
214214 /**
215215 * Range of repeating rows for the print setup.
216216 * (Those rows will be repeated on each page when document is printed.)
@@ -907,14 +907,14 @@ public void finish() throws IOException {
907907 /* write to header and footer */
908908 writer .append ("<headerFooter differentFirst=\" false\" differentOddEven=\" false\" >" );
909909 writer .append ("<oddHeader>" );
910- if ( header . get ( Position . LEFT ) != null ) writer . append ( header .get ( Position . LEFT ));
911- if ( header . get ( Position . CENTER ) != null ) writer . append ( header . get ( Position . CENTER ) );
912- if ( header . get ( Position . RIGHT ) != null ) writer . append ( header . get ( Position . RIGHT ));
910+ for ( MarginalInformation headerEntry : header .values ()) {
911+ headerEntry . write ( writer );
912+ }
913913 writer .append ("</oddHeader>" );
914914 writer .append ("<oddFooter>" );
915- if ( footer . get ( Position . LEFT ) != null ) writer . append ( footer .get ( Position . LEFT ));
916- if ( footer . get ( Position . CENTER ) != null ) writer . append ( footer . get ( Position . CENTER ) );
917- if ( footer . get ( Position . RIGHT ) != null ) writer . append ( footer . get ( Position . RIGHT ));
915+ for ( MarginalInformation footerEntry : footer .values ()) {
916+ footerEntry . write ( writer );
917+ }
918918 writer .append ("</oddFooter></headerFooter>" );
919919
920920
@@ -1266,35 +1266,13 @@ public void repeatCols(int col) {
12661266 this .repeatingCols = new RepeatColRange (col , col );
12671267 }
12681268
1269- /**
1270- * Gets input text form and converts it into what will be written in the
1271- * <header>/<footer> xml tag
1272- * @param text Header/footer text input form
1273- * @return (partial) String content of <header> or <footer> XML tag
1274- */
1275- private String prepareForXml (String text ) {
1276- switch (text .toLowerCase ()) {
1277- case "page 1 of ?" :
1278- return "Page &P of &N" ;
1279- case "page 1, sheetname" :
1280- return "Page &P, &A" ;
1281- case "page 1" :
1282- return "Page &P" ;
1283- case "sheetname" :
1284- return "&A" ;
1285- default :
1286- return text ;
1287- }
1288- }
1289-
12901269 /**
12911270 * Set footer text.
12921271 * @param text - text input form or custom text
12931272 * @param position - Position.LEFT/RIGHT/CENTER enum
12941273 */
12951274 public void footer (String text , Position position ) {
1296- this .footer .put (position , "&" + position .getPos () +
1297- prepareForXml (text ));
1275+ this .footer .put (position , new MarginalInformation (text , position ));
12981276 }
12991277
13001278 /**
@@ -1304,9 +1282,8 @@ public void footer(String text, Position position) {
13041282 * @param fontSize - integer describing font size
13051283 */
13061284 public void footer (String text , Position position , int fontSize ) {
1307- this .footer .put (position , "&" + position .getPos () +
1308- "&"Times New Roman,Regular"&" + fontSize +
1309- "&K000000" + prepareForXml (text ));
1285+ this .footer .put (position , new MarginalInformation (text , position )
1286+ .withFontSize (fontSize ));
13101287 }
13111288
13121289 /**
@@ -1317,9 +1294,9 @@ public void footer(String text, Position position, int fontSize) {
13171294 * @param fontSize - integer describing font size
13181295 */
13191296 public void footer (String text , Position position , String fontName , int fontSize ) {
1320- this .footer .put (position , "&" + position . getPos () +
1321- "&"" + fontName + ",Regular"&" + fontSize +
1322- "&K000000" + prepareForXml ( text ));
1297+ this .footer .put (position , new MarginalInformation ( text , position )
1298+ . withFont ( fontName )
1299+ . withFontSize ( fontSize ));
13231300 }
13241301
13251302 /**
@@ -1330,9 +1307,9 @@ public void footer(String text, Position position, String fontName, int fontSize
13301307 * @param fontSize - integer describing font size
13311308 */
13321309 public void header (String text , Position position , String fontName , int fontSize ) {
1333- this .header .put (position , "&" + position . getPos () +
1334- "&"" + fontName + ",Regular"&" + fontSize +
1335- "&K000000" + prepareForXml ( text ));
1310+ this .header .put (position , new MarginalInformation ( text , position )
1311+ . withFont ( fontName )
1312+ . withFontSize ( fontSize ));
13361313 }
13371314
13381315 /**
@@ -1342,9 +1319,8 @@ public void header(String text, Position position, String fontName, int fontSize
13421319 * @param fontSize - integer describing font size
13431320 */
13441321 public void header (String text , Position position , int fontSize ) {
1345- this .header .put (position , "&" + position .getPos () +
1346- "&"Times New Roman,Regular"&" + fontSize +
1347- "&K000000" + prepareForXml (text ));
1322+ this .header .put (position , new MarginalInformation (text , position )
1323+ .withFontSize (fontSize ));
13481324 }
13491325
13501326 /**
@@ -1353,8 +1329,7 @@ public void header(String text, Position position, int fontSize) {
13531329 * @param position - Position.LEFT/RIGHT/CENTER enum
13541330 */
13551331 public void header (String text , Position position ) {
1356- this .header .put (position , "&" + position .getPos () +
1357- prepareForXml (text ));
1332+ this .header .put (position , new MarginalInformation (text , position ));
13581333 }
13591334
13601335 /**
0 commit comments