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