1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.sun.syndication.feed.synd.impl;
18
19 import com.sun.syndication.feed.WireFeed;
20 import com.sun.syndication.feed.module.impl.ModuleUtils;
21 import com.sun.syndication.feed.rss.Channel;
22 import com.sun.syndication.feed.rss.Image;
23 import com.sun.syndication.feed.rss.Item;
24 import com.sun.syndication.feed.synd.*;
25
26 import java.util.ArrayList;
27 import java.util.List;
28
29 /***
30 */
31 public class ConverterForRSS090 implements Converter {
32 private String _type;
33
34 public ConverterForRSS090() {
35 this("rss_0.9");
36 }
37
38 protected ConverterForRSS090(String type) {
39 _type = type;
40 }
41
42 public String getType() {
43 return _type;
44 }
45
46 public void copyInto(WireFeed feed,SyndFeed syndFeed) {
47 syndFeed.setModules(ModuleUtils.cloneModules(feed.getModules()));
48 if (((List)feed.getForeignMarkup()).size() > 0) {
49 syndFeed.setForeignMarkup(feed.getForeignMarkup());
50 }
51 syndFeed.setEncoding(feed.getEncoding());
52 Channel channel = (Channel) feed;
53 syndFeed.setTitle(channel.getTitle());
54 syndFeed.setLink(channel.getLink());
55 syndFeed.setDescription(channel.getDescription());
56
57 Image image = channel.getImage();
58 if (image!=null) {
59 syndFeed.setImage(createSyndImage(image));
60 }
61
62 List items = channel.getItems();
63 if (items!=null) {
64 syndFeed.setEntries(createSyndEntries(items));
65 }
66 }
67
68 protected SyndImage createSyndImage(Image rssImage) {
69 SyndImage syndImage = new SyndImageImpl();
70 syndImage.setTitle(rssImage.getTitle());
71 syndImage.setUrl(rssImage.getUrl());
72 syndImage.setLink(rssImage.getLink());
73 return syndImage;
74 }
75
76 protected List createSyndEntries(List rssItems) {
77 List syndEntries = new ArrayList();
78 for (int i=0;i<rssItems.size();i++) {
79 syndEntries.add(createSyndEntry((Item) rssItems.get(i)));
80 }
81 return syndEntries;
82 }
83
84 protected SyndEntry createSyndEntry(Item item) {
85 SyndEntry syndEntry = new SyndEntryImpl();
86
87 syndEntry.setModules(ModuleUtils.cloneModules(item.getModules()));
88
89 if (((List)item.getForeignMarkup()).size() > 0) {
90 syndEntry.setForeignMarkup(item.getForeignMarkup());
91 }
92
93 syndEntry.setUri(item.getUri());
94 syndEntry.setLink(item.getLink());
95 syndEntry.setTitle(item.getTitle());
96 syndEntry.setLink(item.getLink());
97 return syndEntry;
98 }
99
100 public WireFeed createRealFeed(SyndFeed syndFeed) {
101 return createRealFeed(getType(),syndFeed);
102 }
103
104 protected WireFeed createRealFeed(String type,SyndFeed syndFeed) {
105 Channel channel = new Channel(type);
106 channel.setModules(ModuleUtils.cloneModules(syndFeed.getModules()));
107
108 channel.setEncoding(syndFeed.getEncoding());
109
110 channel.setTitle(syndFeed.getTitle());
111 if (syndFeed.getLink() != null) {
112 channel.setLink(syndFeed.getLink());
113 }
114 else
115 if (syndFeed.getLinks().size() > 0) {
116 channel.setLink(((SyndLink)syndFeed.getLinks().get(0)).getHref());
117 }
118 channel.setDescription(syndFeed.getDescription());
119 SyndImage sImage = syndFeed.getImage();
120 if (sImage!=null) {
121 channel.setImage(createRSSImage(sImage));
122 }
123
124 List sEntries = syndFeed.getEntries();
125 if (sEntries!=null) {
126 channel.setItems(createRSSItems(sEntries));
127 }
128
129 if (((List)syndFeed.getForeignMarkup()).size() > 0) {
130 channel.setForeignMarkup(syndFeed.getForeignMarkup());
131 }
132 return channel;
133 }
134
135 protected Image createRSSImage(SyndImage sImage) {
136 Image image = new Image();
137 image.setTitle(sImage.getTitle());
138 image.setUrl(sImage.getUrl());
139 image.setLink(sImage.getLink());
140 return image;
141 }
142
143 protected List createRSSItems(List sEntries) {
144 List list = new ArrayList();
145 for (int i=0;i<sEntries.size();i++) {
146 list.add(createRSSItem((SyndEntry)sEntries.get(i)));
147 }
148 return list;
149 }
150
151 protected Item createRSSItem(SyndEntry sEntry) {
152 Item item = new Item();
153 item.setModules(ModuleUtils.cloneModules(sEntry.getModules()));
154 item.setTitle(sEntry.getTitle());
155 item.setLink(sEntry.getLink());
156 if (((List)sEntry.getForeignMarkup()).size() > 0) {
157 item.setForeignMarkup(sEntry.getForeignMarkup());
158 }
159
160 String uri = sEntry.getUri();
161 if (uri != null) {
162 item.setUri(uri);
163 }
164
165
166 return item;
167 }
168
169 }