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.atom.Content;
21 import com.sun.syndication.feed.atom.Entry;
22 import com.sun.syndication.feed.atom.Feed;
23 import com.sun.syndication.feed.atom.Link;
24 import com.sun.syndication.feed.atom.Person;
25 import com.sun.syndication.feed.module.impl.ModuleUtils;
26 import com.sun.syndication.feed.synd.SyndFeedI;
27 import com.sun.syndication.feed.synd.Converter;
28 import com.sun.syndication.feed.synd.SyndEntryI;
29 import com.sun.syndication.feed.synd.SyndContent;
30 import com.sun.syndication.feed.synd.SyndEntry;
31 import com.sun.syndication.feed.synd.SyndContentI;
32
33 import java.util.ArrayList;
34 import java.util.List;
35 import java.util.Date;
36
37 /***
38 */
39 public class ConverterForAtom03 implements Converter {
40
41 public String getType() {
42 return "atom_0.3";
43 }
44
45 public void copyInto(WireFeed feed,SyndFeedI syndFeed) {
46 syndFeed.setEncoding(feed.getEncoding());
47 Feed aFeed = (Feed) feed;
48 syndFeed.setTitle(aFeed.getTitle());
49
50 Link link = (Link) aFeed.getAlternateLinks().get(0);
51 syndFeed.setLink(link.getHref());
52
53 Content info = aFeed.getInfo();
54 if (info!=null) {
55 syndFeed.setDescription(info.getValue());
56 }
57
58 syndFeed.setModules(ModuleUtils.cloneModules(aFeed.getModules()));
59
60 List aEntries = aFeed.getEntries();
61 if (aEntries!=null) {
62 syndFeed.setEntries(createSyndEntries(aEntries));
63 }
64
65
66
67
68 String language = aFeed.getLanguage();
69 if (language!=null) {
70 syndFeed.setLanguage(language);
71 }
72
73 Person author = aFeed.getAuthor();
74 if (author!=null && author.getName()!=null) {
75 syndFeed.setAuthor(author.getName());
76 }
77
78 String copyright = aFeed.getCopyright();
79 if (copyright!=null) {
80 syndFeed.setCopyright(copyright);
81 }
82
83 Date date = aFeed.getModified();
84 if (date!=null) {
85 syndFeed.setPublishedDate(date);
86 }
87
88 }
89
90 protected List createSyndEntries(List atomEntries) {
91 List syndEntries = new ArrayList();
92 for (int i=0;i<atomEntries.size();i++) {
93 syndEntries.add(createSyndEntry((Entry) atomEntries.get(i)));
94 }
95 return syndEntries;
96 }
97
98 protected SyndEntryI createSyndEntry(Entry entry) {
99 SyndEntryI syndEntry = new SyndEntry();
100
101 syndEntry.setTitle(entry.getTitle());
102
103 Link link = (Link) entry.getAlternateLinks().get(0);
104 syndEntry.setLink(link.getHref());
105
106 Content content = entry.getSummary();
107 if (content==null) {
108 List contents = entry.getContents();
109 if (contents!=null && contents.size()>0) {
110 content = (Content) contents.get(0);
111 }
112 }
113
114 List contents = entry.getContents();
115 if (contents.size()>0) {
116 List sContents = new ArrayList();
117 for (int i=0;i<contents.size();i++) {
118 content = (Content) contents.get(i);
119 SyndContentI sContent = new SyndContent();
120 sContent.setType(content.getType());
121 sContent.setValue(content.getValue());
122 sContents.add(sContent);
123 }
124 syndEntry.setContents(sContents);
125 }
126
127 syndEntry.setModules(ModuleUtils.cloneModules(entry.getModules()));
128
129
130
131
132 Person author = entry.getAuthor();
133 if (author!=null && author.getName()!=null) {
134 syndEntry.setAuthor(author.getName());
135 }
136
137 Date date = entry.getModified();
138 if (date!=null) {
139 syndEntry.setPublishedDate(date);
140 }
141
142
143 return syndEntry;
144 }
145
146 public WireFeed createRealFeed(SyndFeedI syndFeed) {
147 Feed aFeed = new Feed(getType());
148 aFeed.setEncoding(syndFeed.getEncoding());
149
150 aFeed.setTitle(syndFeed.getTitle());
151
152 String sLink = syndFeed.getLink();
153 if (sLink!=null) {
154 Link link = new Link();
155 link.setRel(Link.ALTERNATE);
156 link.setHref(sLink);
157 List list = new ArrayList();
158 list.add(link);
159 aFeed.setAlternateLinks(list);
160 }
161
162 String sDesc = syndFeed.getDescription();
163 if (sDesc!=null) {
164 Content info = new Content();
165 info.setValue(sDesc);
166 aFeed.setInfo(info);
167 }
168
169 aFeed.setModules(ModuleUtils.cloneModules(syndFeed.getModules()));
170
171 aFeed.setLanguage(syndFeed.getLanguage());
172
173 String sAuthor = syndFeed.getAuthor();
174 if (sAuthor!=null) {
175 Person person = new Person();
176 person.setName(sAuthor);
177 aFeed.setAuthor(person);
178 }
179
180 aFeed.setCopyright(syndFeed.getCopyright());
181
182 aFeed.setModified(syndFeed.getPublishedDate());
183
184 List sEntries = syndFeed.getEntries();
185 if (sEntries!=null) {
186 aFeed.setEntries(createAtomEntries(sEntries));
187 }
188
189 return aFeed;
190 }
191
192
193 protected List createAtomEntries(List syndEntries) {
194 List atomEntries = new ArrayList();
195 for (int i=0;i<syndEntries.size();i++) {
196 atomEntries.add(createAtomEntry((SyndEntryI)syndEntries.get(i)));
197 }
198 return atomEntries;
199 }
200
201 protected Entry createAtomEntry(SyndEntryI sEntry) {
202 Entry aEntry = new Entry();
203
204 aEntry.setTitle(sEntry.getTitle());
205
206 String sLink = sEntry.getLink();
207 if (sLink!=null) {
208 Link link = new Link();
209 link.setRel(Link.ALTERNATE);
210 link.setHref(sLink);
211 List list = new ArrayList();
212 list.add(link);
213 aEntry.setAlternateLinks(list);
214 }
215
216 SyndContentI sContent = sEntry.getDescription();
217 if (sContent!=null) {
218 Content content = new Content();
219 content.setType(sContent.getType());
220 content.setValue(sContent.getValue());
221 content.setMode(Content.ESCAPED);
222 aEntry.setSummary(content);
223 }
224
225 List contents = sEntry.getContents();
226 if (contents.size()>0) {
227 List aContents = new ArrayList();
228 for (int i=0;i<contents.size();i++) {
229 sContent = (SyndContent) contents.get(i);
230 Content content = new Content();
231 content.setType(sContent.getType());
232 content.setValue(sContent.getValue());
233 content.setMode(Content.ESCAPED);
234 aContents.add(content);
235
236 }
237 aEntry.setContents(aContents);
238 }
239
240 aEntry.setModules(ModuleUtils.cloneModules(sEntry.getModules()));
241
242 String sAuthor = sEntry.getAuthor();
243 if (sAuthor!=null) {
244 Person person = new Person();
245 person.setName(sAuthor);
246 aEntry.setAuthor(person);
247 }
248
249 aEntry.setModified(sEntry.getPublishedDate());
250
251 return aEntry;
252 }
253
254 }