1
2
3
4
5
6 package org.apache.maven.doxia.site.decoration.io.xpp3;
7
8
9
10
11
12 import java.io.OutputStream;
13 import java.io.Writer;
14 import java.util.Iterator;
15 import org.apache.maven.doxia.site.decoration.Banner;
16 import org.apache.maven.doxia.site.decoration.Body;
17 import org.apache.maven.doxia.site.decoration.DecorationModel;
18 import org.apache.maven.doxia.site.decoration.LinkItem;
19 import org.apache.maven.doxia.site.decoration.Logo;
20 import org.apache.maven.doxia.site.decoration.Menu;
21 import org.apache.maven.doxia.site.decoration.MenuItem;
22 import org.apache.maven.doxia.site.decoration.PublishDate;
23 import org.apache.maven.doxia.site.decoration.Skin;
24 import org.apache.maven.doxia.site.decoration.Version;
25 import org.codehaus.plexus.util.xml.Xpp3Dom;
26 import org.codehaus.plexus.util.xml.pull.MXSerializer;
27 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
28
29
30
31
32
33
34 @SuppressWarnings( "all" )
35 public class DecorationXpp3Writer
36 {
37
38
39
40
41
42
43
44
45 private static final String NAMESPACE = null;
46
47
48
49
50 private String fileComment = null;
51
52
53
54
55
56
57
58
59
60
61
62 public void setFileComment( String fileComment )
63 {
64 this.fileComment = fileComment;
65 }
66
67
68
69
70
71
72
73
74 public void write( Writer writer, DecorationModel decorationModel )
75 throws java.io.IOException
76 {
77 XmlSerializer serializer = new MXSerializer();
78 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
79 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
80 serializer.setOutput( writer );
81 serializer.startDocument( decorationModel.getModelEncoding(), null );
82 writeDecorationModel( decorationModel, "project", serializer );
83 serializer.endDocument();
84 }
85
86
87
88
89
90
91
92
93 public void write( OutputStream stream, DecorationModel decorationModel )
94 throws java.io.IOException
95 {
96 XmlSerializer serializer = new MXSerializer();
97 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
98 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
99 serializer.setOutput( stream, decorationModel.getModelEncoding() );
100 serializer.startDocument( decorationModel.getModelEncoding(), null );
101 writeDecorationModel( decorationModel, "project", serializer );
102 serializer.endDocument();
103 }
104
105
106
107
108
109
110
111
112
113 private void writeBanner( Banner banner, String tagName, XmlSerializer serializer )
114 throws java.io.IOException
115 {
116 serializer.startTag( NAMESPACE, tagName );
117 if ( banner.getName() != null )
118 {
119 serializer.startTag( NAMESPACE, "name" ).text( banner.getName() ).endTag( NAMESPACE, "name" );
120 }
121 if ( banner.getSrc() != null )
122 {
123 serializer.startTag( NAMESPACE, "src" ).text( banner.getSrc() ).endTag( NAMESPACE, "src" );
124 }
125 if ( banner.getAlt() != null )
126 {
127 serializer.startTag( NAMESPACE, "alt" ).text( banner.getAlt() ).endTag( NAMESPACE, "alt" );
128 }
129 if ( banner.getHref() != null )
130 {
131 serializer.startTag( NAMESPACE, "href" ).text( banner.getHref() ).endTag( NAMESPACE, "href" );
132 }
133 if ( banner.getBorder() != null )
134 {
135 serializer.startTag( NAMESPACE, "border" ).text( banner.getBorder() ).endTag( NAMESPACE, "border" );
136 }
137 if ( banner.getWidth() != null )
138 {
139 serializer.startTag( NAMESPACE, "width" ).text( banner.getWidth() ).endTag( NAMESPACE, "width" );
140 }
141 if ( banner.getHeight() != null )
142 {
143 serializer.startTag( NAMESPACE, "height" ).text( banner.getHeight() ).endTag( NAMESPACE, "height" );
144 }
145 if ( banner.getTitle() != null )
146 {
147 serializer.startTag( NAMESPACE, "title" ).text( banner.getTitle() ).endTag( NAMESPACE, "title" );
148 }
149 serializer.endTag( NAMESPACE, tagName );
150 }
151
152
153
154
155
156
157
158
159
160 private void writeBody( Body body, String tagName, XmlSerializer serializer )
161 throws java.io.IOException
162 {
163 serializer.startTag( NAMESPACE, tagName );
164 if ( body.getHead() != null )
165 {
166 serializer.startTag( NAMESPACE, "head" ).text( body.getHead() ).endTag( NAMESPACE, "head" );
167 }
168 if ( ( body.getLinks() != null ) && ( body.getLinks().size() > 0 ) )
169 {
170 serializer.startTag( NAMESPACE, "links" );
171 for ( Iterator iter = body.getLinks().iterator(); iter.hasNext(); )
172 {
173 LinkItem o = (LinkItem) iter.next();
174 writeLinkItem( o, "item", serializer );
175 }
176 serializer.endTag( NAMESPACE, "links" );
177 }
178 if ( ( body.getBreadcrumbs() != null ) && ( body.getBreadcrumbs().size() > 0 ) )
179 {
180 serializer.startTag( NAMESPACE, "breadcrumbs" );
181 for ( Iterator iter = body.getBreadcrumbs().iterator(); iter.hasNext(); )
182 {
183 LinkItem o = (LinkItem) iter.next();
184 writeLinkItem( o, "item", serializer );
185 }
186 serializer.endTag( NAMESPACE, "breadcrumbs" );
187 }
188 if ( ( body.getMenus() != null ) && ( body.getMenus().size() > 0 ) )
189 {
190 for ( Iterator iter = body.getMenus().iterator(); iter.hasNext(); )
191 {
192 Menu o = (Menu) iter.next();
193 writeMenu( o, "menu", serializer );
194 }
195 }
196 if ( body.getFooter() != null )
197 {
198 serializer.startTag( NAMESPACE, "footer" ).text( body.getFooter() ).endTag( NAMESPACE, "footer" );
199 }
200 serializer.endTag( NAMESPACE, tagName );
201 }
202
203
204
205
206
207
208
209
210
211 private void writeDecorationModel( DecorationModel decorationModel, String tagName, XmlSerializer serializer )
212 throws java.io.IOException
213 {
214 if ( this.fileComment != null )
215 {
216 serializer.comment(this.fileComment);
217 }
218 serializer.setPrefix( "", "http://maven.apache.org/DECORATION/1.8.0" );
219 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
220 serializer.startTag( NAMESPACE, tagName );
221 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/DECORATION/1.8.0 http://maven.apache.org/xsd/decoration-1.8.0.xsd" );
222 if ( decorationModel.getName() != null )
223 {
224 serializer.attribute( NAMESPACE, "name", decorationModel.getName() );
225 }
226 if ( ( decorationModel.getCombineSelf() != null ) && !decorationModel.getCombineSelf().equals( "merge" ) )
227 {
228 serializer.attribute( NAMESPACE, "combine.self", decorationModel.getCombineSelf() );
229 }
230 if ( decorationModel.getBannerLeft() != null )
231 {
232 writeBanner( (Banner) decorationModel.getBannerLeft(), "bannerLeft", serializer );
233 }
234 if ( decorationModel.getBannerRight() != null )
235 {
236 writeBanner( (Banner) decorationModel.getBannerRight(), "bannerRight", serializer );
237 }
238 if ( decorationModel.getGoogleAdSenseClient() != null )
239 {
240 serializer.startTag( NAMESPACE, "googleAdSenseClient" ).text( decorationModel.getGoogleAdSenseClient() ).endTag( NAMESPACE, "googleAdSenseClient" );
241 }
242 if ( decorationModel.getGoogleAdSenseSlot() != null )
243 {
244 serializer.startTag( NAMESPACE, "googleAdSenseSlot" ).text( decorationModel.getGoogleAdSenseSlot() ).endTag( NAMESPACE, "googleAdSenseSlot" );
245 }
246 if ( decorationModel.getGoogleAnalyticsAccountId() != null )
247 {
248 serializer.startTag( NAMESPACE, "googleAnalyticsAccountId" ).text( decorationModel.getGoogleAnalyticsAccountId() ).endTag( NAMESPACE, "googleAnalyticsAccountId" );
249 }
250 if ( decorationModel.getPublishDate() != null )
251 {
252 writePublishDate( (PublishDate) decorationModel.getPublishDate(), "publishDate", serializer );
253 }
254 if ( decorationModel.getVersion() != null )
255 {
256 writeVersion( (Version) decorationModel.getVersion(), "version", serializer );
257 }
258 if ( decorationModel.getEdit() != null )
259 {
260 serializer.startTag( NAMESPACE, "edit" ).text( decorationModel.getEdit() ).endTag( NAMESPACE, "edit" );
261 }
262 if ( ( decorationModel.getPoweredBy() != null ) && ( decorationModel.getPoweredBy().size() > 0 ) )
263 {
264 serializer.startTag( NAMESPACE, "poweredBy" );
265 for ( Iterator iter = decorationModel.getPoweredBy().iterator(); iter.hasNext(); )
266 {
267 Logo o = (Logo) iter.next();
268 writeLogo( o, "logo", serializer );
269 }
270 serializer.endTag( NAMESPACE, "poweredBy" );
271 }
272 if ( decorationModel.getSkin() != null )
273 {
274 writeSkin( (Skin) decorationModel.getSkin(), "skin", serializer );
275 }
276 if ( decorationModel.getBody() != null )
277 {
278 writeBody( (Body) decorationModel.getBody(), "body", serializer );
279 }
280 if ( decorationModel.getCustom() != null )
281 {
282 ((Xpp3Dom) decorationModel.getCustom()).writeToSerializer( NAMESPACE, serializer );
283 }
284 serializer.endTag( NAMESPACE, tagName );
285 }
286
287
288
289
290
291
292
293
294
295 private void writeLinkItem( LinkItem linkItem, String tagName, XmlSerializer serializer )
296 throws java.io.IOException
297 {
298 serializer.startTag( NAMESPACE, tagName );
299 if ( linkItem.getName() != null )
300 {
301 serializer.attribute( NAMESPACE, "name", linkItem.getName() );
302 }
303 if ( linkItem.getHref() != null )
304 {
305 serializer.attribute( NAMESPACE, "href", linkItem.getHref() );
306 }
307 if ( linkItem.getImg() != null )
308 {
309 serializer.attribute( NAMESPACE, "img", linkItem.getImg() );
310 }
311 if ( ( linkItem.getPosition() != null ) && !linkItem.getPosition().equals( "left" ) )
312 {
313 serializer.attribute( NAMESPACE, "position", linkItem.getPosition() );
314 }
315 if ( linkItem.getAlt() != null )
316 {
317 serializer.attribute( NAMESPACE, "alt", linkItem.getAlt() );
318 }
319 if ( linkItem.getBorder() != null )
320 {
321 serializer.attribute( NAMESPACE, "border", linkItem.getBorder() );
322 }
323 if ( linkItem.getWidth() != null )
324 {
325 serializer.attribute( NAMESPACE, "width", linkItem.getWidth() );
326 }
327 if ( linkItem.getHeight() != null )
328 {
329 serializer.attribute( NAMESPACE, "height", linkItem.getHeight() );
330 }
331 if ( linkItem.getTarget() != null )
332 {
333 serializer.attribute( NAMESPACE, "target", linkItem.getTarget() );
334 }
335 if ( linkItem.getTitle() != null )
336 {
337 serializer.attribute( NAMESPACE, "title", linkItem.getTitle() );
338 }
339 serializer.endTag( NAMESPACE, tagName );
340 }
341
342
343
344
345
346
347
348
349
350 private void writeLogo( Logo logo, String tagName, XmlSerializer serializer )
351 throws java.io.IOException
352 {
353 serializer.startTag( NAMESPACE, tagName );
354 if ( logo.getName() != null )
355 {
356 serializer.attribute( NAMESPACE, "name", logo.getName() );
357 }
358 if ( logo.getHref() != null )
359 {
360 serializer.attribute( NAMESPACE, "href", logo.getHref() );
361 }
362 if ( logo.getImg() != null )
363 {
364 serializer.attribute( NAMESPACE, "img", logo.getImg() );
365 }
366 if ( ( logo.getPosition() != null ) && !logo.getPosition().equals( "left" ) )
367 {
368 serializer.attribute( NAMESPACE, "position", logo.getPosition() );
369 }
370 if ( logo.getAlt() != null )
371 {
372 serializer.attribute( NAMESPACE, "alt", logo.getAlt() );
373 }
374 if ( logo.getBorder() != null )
375 {
376 serializer.attribute( NAMESPACE, "border", logo.getBorder() );
377 }
378 if ( logo.getWidth() != null )
379 {
380 serializer.attribute( NAMESPACE, "width", logo.getWidth() );
381 }
382 if ( logo.getHeight() != null )
383 {
384 serializer.attribute( NAMESPACE, "height", logo.getHeight() );
385 }
386 if ( logo.getTarget() != null )
387 {
388 serializer.attribute( NAMESPACE, "target", logo.getTarget() );
389 }
390 if ( logo.getTitle() != null )
391 {
392 serializer.attribute( NAMESPACE, "title", logo.getTitle() );
393 }
394 serializer.endTag( NAMESPACE, tagName );
395 }
396
397
398
399
400
401
402
403
404
405 private void writeMenu( Menu menu, String tagName, XmlSerializer serializer )
406 throws java.io.IOException
407 {
408 serializer.startTag( NAMESPACE, tagName );
409 if ( menu.getName() != null )
410 {
411 serializer.attribute( NAMESPACE, "name", menu.getName() );
412 }
413 if ( menu.getInherit() != null )
414 {
415 serializer.attribute( NAMESPACE, "inherit", menu.getInherit() );
416 }
417 if ( menu.isInheritAsRef() != false )
418 {
419 serializer.attribute( NAMESPACE, "inheritAsRef", String.valueOf( menu.isInheritAsRef() ) );
420 }
421 if ( menu.getRef() != null )
422 {
423 serializer.attribute( NAMESPACE, "ref", menu.getRef() );
424 }
425 if ( menu.getImg() != null )
426 {
427 serializer.attribute( NAMESPACE, "img", menu.getImg() );
428 }
429 if ( menu.getAlt() != null )
430 {
431 serializer.attribute( NAMESPACE, "alt", menu.getAlt() );
432 }
433 if ( ( menu.getPosition() != null ) && !menu.getPosition().equals( "left" ) )
434 {
435 serializer.attribute( NAMESPACE, "position", menu.getPosition() );
436 }
437 if ( menu.getBorder() != null )
438 {
439 serializer.attribute( NAMESPACE, "border", menu.getBorder() );
440 }
441 if ( menu.getWidth() != null )
442 {
443 serializer.attribute( NAMESPACE, "width", menu.getWidth() );
444 }
445 if ( menu.getHeight() != null )
446 {
447 serializer.attribute( NAMESPACE, "height", menu.getHeight() );
448 }
449 if ( menu.getTitle() != null )
450 {
451 serializer.attribute( NAMESPACE, "title", menu.getTitle() );
452 }
453 if ( ( menu.getItems() != null ) && ( menu.getItems().size() > 0 ) )
454 {
455 for ( Iterator iter = menu.getItems().iterator(); iter.hasNext(); )
456 {
457 MenuItem o = (MenuItem) iter.next();
458 writeMenuItem( o, "item", serializer );
459 }
460 }
461 serializer.endTag( NAMESPACE, tagName );
462 }
463
464
465
466
467
468
469
470
471
472 private void writeMenuItem( MenuItem menuItem, String tagName, XmlSerializer serializer )
473 throws java.io.IOException
474 {
475 serializer.startTag( NAMESPACE, tagName );
476 if ( menuItem.isCollapse() != false )
477 {
478 serializer.attribute( NAMESPACE, "collapse", String.valueOf( menuItem.isCollapse() ) );
479 }
480 if ( menuItem.getRef() != null )
481 {
482 serializer.attribute( NAMESPACE, "ref", menuItem.getRef() );
483 }
484 if ( menuItem.getName() != null )
485 {
486 serializer.attribute( NAMESPACE, "name", menuItem.getName() );
487 }
488 if ( menuItem.getHref() != null )
489 {
490 serializer.attribute( NAMESPACE, "href", menuItem.getHref() );
491 }
492 if ( menuItem.getImg() != null )
493 {
494 serializer.attribute( NAMESPACE, "img", menuItem.getImg() );
495 }
496 if ( ( menuItem.getPosition() != null ) && !menuItem.getPosition().equals( "left" ) )
497 {
498 serializer.attribute( NAMESPACE, "position", menuItem.getPosition() );
499 }
500 if ( menuItem.getAlt() != null )
501 {
502 serializer.attribute( NAMESPACE, "alt", menuItem.getAlt() );
503 }
504 if ( menuItem.getBorder() != null )
505 {
506 serializer.attribute( NAMESPACE, "border", menuItem.getBorder() );
507 }
508 if ( menuItem.getWidth() != null )
509 {
510 serializer.attribute( NAMESPACE, "width", menuItem.getWidth() );
511 }
512 if ( menuItem.getHeight() != null )
513 {
514 serializer.attribute( NAMESPACE, "height", menuItem.getHeight() );
515 }
516 if ( menuItem.getTarget() != null )
517 {
518 serializer.attribute( NAMESPACE, "target", menuItem.getTarget() );
519 }
520 if ( menuItem.getTitle() != null )
521 {
522 serializer.attribute( NAMESPACE, "title", menuItem.getTitle() );
523 }
524 if ( menuItem.getDescription() != null )
525 {
526 serializer.startTag( NAMESPACE, "description" ).text( menuItem.getDescription() ).endTag( NAMESPACE, "description" );
527 }
528 if ( ( menuItem.getItems() != null ) && ( menuItem.getItems().size() > 0 ) )
529 {
530 for ( Iterator iter = menuItem.getItems().iterator(); iter.hasNext(); )
531 {
532 MenuItem o = (MenuItem) iter.next();
533 writeMenuItem( o, "item", serializer );
534 }
535 }
536 serializer.endTag( NAMESPACE, tagName );
537 }
538
539
540
541
542
543
544
545
546
547 private void writePublishDate( PublishDate publishDate, String tagName, XmlSerializer serializer )
548 throws java.io.IOException
549 {
550 serializer.startTag( NAMESPACE, tagName );
551 if ( ( publishDate.getPosition() != null ) && !publishDate.getPosition().equals( "left" ) )
552 {
553 serializer.attribute( NAMESPACE, "position", publishDate.getPosition() );
554 }
555 if ( ( publishDate.getFormat() != null ) && !publishDate.getFormat().equals( "yyyy-MM-dd" ) )
556 {
557 serializer.attribute( NAMESPACE, "format", publishDate.getFormat() );
558 }
559 serializer.endTag( NAMESPACE, tagName );
560 }
561
562
563
564
565
566
567
568
569
570 private void writeSkin( Skin skin, String tagName, XmlSerializer serializer )
571 throws java.io.IOException
572 {
573 serializer.startTag( NAMESPACE, tagName );
574 if ( skin.getGroupId() != null )
575 {
576 serializer.startTag( NAMESPACE, "groupId" ).text( skin.getGroupId() ).endTag( NAMESPACE, "groupId" );
577 }
578 if ( skin.getArtifactId() != null )
579 {
580 serializer.startTag( NAMESPACE, "artifactId" ).text( skin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
581 }
582 if ( skin.getVersion() != null )
583 {
584 serializer.startTag( NAMESPACE, "version" ).text( skin.getVersion() ).endTag( NAMESPACE, "version" );
585 }
586 serializer.endTag( NAMESPACE, tagName );
587 }
588
589
590
591
592
593
594
595
596
597 private void writeVersion( Version version, String tagName, XmlSerializer serializer )
598 throws java.io.IOException
599 {
600 serializer.startTag( NAMESPACE, tagName );
601 if ( ( version.getPosition() != null ) && !version.getPosition().equals( "left" ) )
602 {
603 serializer.attribute( NAMESPACE, "position", version.getPosition() );
604 }
605 serializer.endTag( NAMESPACE, tagName );
606 }
607
608 }