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/2.0.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/2.0.0 http://maven.apache.org/xsd/decoration-2.0.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.getPublishDate() != null )
239 {
240 writePublishDate( (PublishDate) decorationModel.getPublishDate(), "publishDate", serializer );
241 }
242 if ( decorationModel.getVersion() != null )
243 {
244 writeVersion( (Version) decorationModel.getVersion(), "version", serializer );
245 }
246 if ( decorationModel.getEdit() != null )
247 {
248 serializer.startTag( NAMESPACE, "edit" ).text( decorationModel.getEdit() ).endTag( NAMESPACE, "edit" );
249 }
250 if ( ( decorationModel.getPoweredBy() != null ) && ( decorationModel.getPoweredBy().size() > 0 ) )
251 {
252 serializer.startTag( NAMESPACE, "poweredBy" );
253 for ( Iterator iter = decorationModel.getPoweredBy().iterator(); iter.hasNext(); )
254 {
255 Logo o = (Logo) iter.next();
256 writeLogo( o, "logo", serializer );
257 }
258 serializer.endTag( NAMESPACE, "poweredBy" );
259 }
260 if ( decorationModel.getSkin() != null )
261 {
262 writeSkin( (Skin) decorationModel.getSkin(), "skin", serializer );
263 }
264 if ( decorationModel.getBody() != null )
265 {
266 writeBody( (Body) decorationModel.getBody(), "body", serializer );
267 }
268 if ( decorationModel.getCustom() != null )
269 {
270 ((Xpp3Dom) decorationModel.getCustom()).writeToSerializer( NAMESPACE, serializer );
271 }
272 serializer.endTag( NAMESPACE, tagName );
273 }
274
275
276
277
278
279
280
281
282
283 private void writeLinkItem( LinkItem linkItem, String tagName, XmlSerializer serializer )
284 throws java.io.IOException
285 {
286 serializer.startTag( NAMESPACE, tagName );
287 if ( linkItem.getName() != null )
288 {
289 serializer.attribute( NAMESPACE, "name", linkItem.getName() );
290 }
291 if ( linkItem.getHref() != null )
292 {
293 serializer.attribute( NAMESPACE, "href", linkItem.getHref() );
294 }
295 if ( linkItem.getImg() != null )
296 {
297 serializer.attribute( NAMESPACE, "img", linkItem.getImg() );
298 }
299 if ( ( linkItem.getPosition() != null ) && !linkItem.getPosition().equals( "left" ) )
300 {
301 serializer.attribute( NAMESPACE, "position", linkItem.getPosition() );
302 }
303 if ( linkItem.getAlt() != null )
304 {
305 serializer.attribute( NAMESPACE, "alt", linkItem.getAlt() );
306 }
307 if ( linkItem.getBorder() != null )
308 {
309 serializer.attribute( NAMESPACE, "border", linkItem.getBorder() );
310 }
311 if ( linkItem.getWidth() != null )
312 {
313 serializer.attribute( NAMESPACE, "width", linkItem.getWidth() );
314 }
315 if ( linkItem.getHeight() != null )
316 {
317 serializer.attribute( NAMESPACE, "height", linkItem.getHeight() );
318 }
319 if ( linkItem.getTarget() != null )
320 {
321 serializer.attribute( NAMESPACE, "target", linkItem.getTarget() );
322 }
323 if ( linkItem.getTitle() != null )
324 {
325 serializer.attribute( NAMESPACE, "title", linkItem.getTitle() );
326 }
327 serializer.endTag( NAMESPACE, tagName );
328 }
329
330
331
332
333
334
335
336
337
338 private void writeLogo( Logo logo, String tagName, XmlSerializer serializer )
339 throws java.io.IOException
340 {
341 serializer.startTag( NAMESPACE, tagName );
342 if ( logo.getName() != null )
343 {
344 serializer.attribute( NAMESPACE, "name", logo.getName() );
345 }
346 if ( logo.getHref() != null )
347 {
348 serializer.attribute( NAMESPACE, "href", logo.getHref() );
349 }
350 if ( logo.getImg() != null )
351 {
352 serializer.attribute( NAMESPACE, "img", logo.getImg() );
353 }
354 if ( ( logo.getPosition() != null ) && !logo.getPosition().equals( "left" ) )
355 {
356 serializer.attribute( NAMESPACE, "position", logo.getPosition() );
357 }
358 if ( logo.getAlt() != null )
359 {
360 serializer.attribute( NAMESPACE, "alt", logo.getAlt() );
361 }
362 if ( logo.getBorder() != null )
363 {
364 serializer.attribute( NAMESPACE, "border", logo.getBorder() );
365 }
366 if ( logo.getWidth() != null )
367 {
368 serializer.attribute( NAMESPACE, "width", logo.getWidth() );
369 }
370 if ( logo.getHeight() != null )
371 {
372 serializer.attribute( NAMESPACE, "height", logo.getHeight() );
373 }
374 if ( logo.getTarget() != null )
375 {
376 serializer.attribute( NAMESPACE, "target", logo.getTarget() );
377 }
378 if ( logo.getTitle() != null )
379 {
380 serializer.attribute( NAMESPACE, "title", logo.getTitle() );
381 }
382 serializer.endTag( NAMESPACE, tagName );
383 }
384
385
386
387
388
389
390
391
392
393 private void writeMenu( Menu menu, String tagName, XmlSerializer serializer )
394 throws java.io.IOException
395 {
396 serializer.startTag( NAMESPACE, tagName );
397 if ( menu.getName() != null )
398 {
399 serializer.attribute( NAMESPACE, "name", menu.getName() );
400 }
401 if ( menu.getInherit() != null )
402 {
403 serializer.attribute( NAMESPACE, "inherit", menu.getInherit() );
404 }
405 if ( menu.isInheritAsRef() != false )
406 {
407 serializer.attribute( NAMESPACE, "inheritAsRef", String.valueOf( menu.isInheritAsRef() ) );
408 }
409 if ( menu.getRef() != null )
410 {
411 serializer.attribute( NAMESPACE, "ref", menu.getRef() );
412 }
413 if ( menu.getImg() != null )
414 {
415 serializer.attribute( NAMESPACE, "img", menu.getImg() );
416 }
417 if ( menu.getAlt() != null )
418 {
419 serializer.attribute( NAMESPACE, "alt", menu.getAlt() );
420 }
421 if ( ( menu.getPosition() != null ) && !menu.getPosition().equals( "left" ) )
422 {
423 serializer.attribute( NAMESPACE, "position", menu.getPosition() );
424 }
425 if ( menu.getBorder() != null )
426 {
427 serializer.attribute( NAMESPACE, "border", menu.getBorder() );
428 }
429 if ( menu.getWidth() != null )
430 {
431 serializer.attribute( NAMESPACE, "width", menu.getWidth() );
432 }
433 if ( menu.getHeight() != null )
434 {
435 serializer.attribute( NAMESPACE, "height", menu.getHeight() );
436 }
437 if ( menu.getTitle() != null )
438 {
439 serializer.attribute( NAMESPACE, "title", menu.getTitle() );
440 }
441 if ( ( menu.getItems() != null ) && ( menu.getItems().size() > 0 ) )
442 {
443 for ( Iterator iter = menu.getItems().iterator(); iter.hasNext(); )
444 {
445 MenuItem o = (MenuItem) iter.next();
446 writeMenuItem( o, "item", serializer );
447 }
448 }
449 serializer.endTag( NAMESPACE, tagName );
450 }
451
452
453
454
455
456
457
458
459
460 private void writeMenuItem( MenuItem menuItem, String tagName, XmlSerializer serializer )
461 throws java.io.IOException
462 {
463 serializer.startTag( NAMESPACE, tagName );
464 if ( menuItem.isCollapse() != false )
465 {
466 serializer.attribute( NAMESPACE, "collapse", String.valueOf( menuItem.isCollapse() ) );
467 }
468 if ( menuItem.getRef() != null )
469 {
470 serializer.attribute( NAMESPACE, "ref", menuItem.getRef() );
471 }
472 if ( menuItem.getName() != null )
473 {
474 serializer.attribute( NAMESPACE, "name", menuItem.getName() );
475 }
476 if ( menuItem.getHref() != null )
477 {
478 serializer.attribute( NAMESPACE, "href", menuItem.getHref() );
479 }
480 if ( menuItem.getImg() != null )
481 {
482 serializer.attribute( NAMESPACE, "img", menuItem.getImg() );
483 }
484 if ( ( menuItem.getPosition() != null ) && !menuItem.getPosition().equals( "left" ) )
485 {
486 serializer.attribute( NAMESPACE, "position", menuItem.getPosition() );
487 }
488 if ( menuItem.getAlt() != null )
489 {
490 serializer.attribute( NAMESPACE, "alt", menuItem.getAlt() );
491 }
492 if ( menuItem.getBorder() != null )
493 {
494 serializer.attribute( NAMESPACE, "border", menuItem.getBorder() );
495 }
496 if ( menuItem.getWidth() != null )
497 {
498 serializer.attribute( NAMESPACE, "width", menuItem.getWidth() );
499 }
500 if ( menuItem.getHeight() != null )
501 {
502 serializer.attribute( NAMESPACE, "height", menuItem.getHeight() );
503 }
504 if ( menuItem.getTarget() != null )
505 {
506 serializer.attribute( NAMESPACE, "target", menuItem.getTarget() );
507 }
508 if ( menuItem.getTitle() != null )
509 {
510 serializer.attribute( NAMESPACE, "title", menuItem.getTitle() );
511 }
512 if ( menuItem.getDescription() != null )
513 {
514 serializer.startTag( NAMESPACE, "description" ).text( menuItem.getDescription() ).endTag( NAMESPACE, "description" );
515 }
516 if ( ( menuItem.getItems() != null ) && ( menuItem.getItems().size() > 0 ) )
517 {
518 for ( Iterator iter = menuItem.getItems().iterator(); iter.hasNext(); )
519 {
520 MenuItem o = (MenuItem) iter.next();
521 writeMenuItem( o, "item", serializer );
522 }
523 }
524 serializer.endTag( NAMESPACE, tagName );
525 }
526
527
528
529
530
531
532
533
534
535 private void writePublishDate( PublishDate publishDate, String tagName, XmlSerializer serializer )
536 throws java.io.IOException
537 {
538 serializer.startTag( NAMESPACE, tagName );
539 if ( ( publishDate.getPosition() != null ) && !publishDate.getPosition().equals( "left" ) )
540 {
541 serializer.attribute( NAMESPACE, "position", publishDate.getPosition() );
542 }
543 if ( ( publishDate.getFormat() != null ) && !publishDate.getFormat().equals( "yyyy-MM-dd" ) )
544 {
545 serializer.attribute( NAMESPACE, "format", publishDate.getFormat() );
546 }
547 if ( ( publishDate.getTimezone() != null ) && !publishDate.getTimezone().equals( "Etc/UTC" ) )
548 {
549 serializer.attribute( NAMESPACE, "timezone", publishDate.getTimezone() );
550 }
551 serializer.endTag( NAMESPACE, tagName );
552 }
553
554
555
556
557
558
559
560
561
562 private void writeSkin( Skin skin, String tagName, XmlSerializer serializer )
563 throws java.io.IOException
564 {
565 serializer.startTag( NAMESPACE, tagName );
566 if ( skin.getGroupId() != null )
567 {
568 serializer.startTag( NAMESPACE, "groupId" ).text( skin.getGroupId() ).endTag( NAMESPACE, "groupId" );
569 }
570 if ( skin.getArtifactId() != null )
571 {
572 serializer.startTag( NAMESPACE, "artifactId" ).text( skin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
573 }
574 if ( skin.getVersion() != null )
575 {
576 serializer.startTag( NAMESPACE, "version" ).text( skin.getVersion() ).endTag( NAMESPACE, "version" );
577 }
578 serializer.endTag( NAMESPACE, tagName );
579 }
580
581
582
583
584
585
586
587
588
589 private void writeVersion( Version version, String tagName, XmlSerializer serializer )
590 throws java.io.IOException
591 {
592 serializer.startTag( NAMESPACE, tagName );
593 if ( ( version.getPosition() != null ) && !version.getPosition().equals( "left" ) )
594 {
595 serializer.attribute( NAMESPACE, "position", version.getPosition() );
596 }
597 serializer.endTag( NAMESPACE, tagName );
598 }
599
600 }