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