View Javadoc

1   /*
2    * Copyright 2004 Sun Microsystems, Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   */
17  package com.sun.syndication.feed.synd.impl;
18  
19  import com.sun.syndication.feed.WireFeed;
20  import com.sun.syndication.feed.rss.Channel;
21  import com.sun.syndication.feed.rss.Image;
22  import com.sun.syndication.feed.rss.Item;
23  import com.sun.syndication.feed.synd.SyndFeedI;
24  import com.sun.syndication.feed.synd.Converter;
25  import com.sun.syndication.feed.synd.SyndEntryI;
26  import com.sun.syndication.feed.synd.SyndImageI;
27  import com.sun.syndication.feed.synd.SyndImage;
28  import com.sun.syndication.feed.synd.SyndEntry;
29  
30  import java.util.ArrayList;
31  import java.util.List;
32  
33  /***
34   */
35  public class ConverterForRSS090 implements Converter {
36  
37      public String getType() {
38          return "rss_0.9";
39      }
40  
41  
42      public void copyInto(WireFeed feed,SyndFeedI syndFeed) {
43          syndFeed.setEncoding(feed.getEncoding());
44          Channel channel = (Channel) feed;
45          syndFeed.setTitle(channel.getTitle());
46          syndFeed.setLink(channel.getLink());
47          syndFeed.setDescription(channel.getDescription());
48          syndFeed.setPublishedDate(channel.getPubDate());
49  
50          Image image = channel.getImage();
51          if (image!=null) {
52              syndFeed.setImage(createSyndImage(image));
53          }
54  
55          List items = channel.getItems();
56          if (items!=null) {
57              syndFeed.setEntries(createSyndEntries(items));
58          }
59      }
60  
61      protected SyndImageI createSyndImage(Image rssImage) {
62          SyndImageI syndImage = new SyndImage();
63          syndImage.setTitle(rssImage.getTitle());
64          syndImage.setUrl(rssImage.getUrl());
65          syndImage.setLink(rssImage.getLink());
66          return syndImage;
67      }
68  
69      protected List createSyndEntries(List rssItems) {
70          List syndEntries = new ArrayList();
71          for (int i=0;i<rssItems.size();i++) {
72              syndEntries.add(createSyndEntry((Item) rssItems.get(i)));
73          }
74          return syndEntries;
75      }
76  
77      protected SyndEntryI createSyndEntry(Item item) {
78          SyndEntryI syndEntry = new SyndEntry();
79          syndEntry.setTitle(item.getTitle());
80          syndEntry.setLink(item.getLink());
81          return syndEntry;
82      }
83  
84      public WireFeed createRealFeed(SyndFeedI syndFeed) {
85          return createRealFeed(getType(),syndFeed);
86      }
87  
88      protected WireFeed createRealFeed(String type,SyndFeedI syndFeed) {
89          Channel channel = new Channel(type);
90          channel.setEncoding(syndFeed.getEncoding());
91  
92          channel.setTitle(syndFeed.getTitle());
93          channel.setLink(syndFeed.getLink());
94          channel.setDescription(syndFeed.getDescription());
95  
96          SyndImageI sImage = syndFeed.getImage();
97          if (sImage!=null) {
98              channel.setImage(createRSSImage(sImage));
99          }
100 
101         List sEntries = syndFeed.getEntries();
102         if (sEntries!=null) {
103             channel.setItems(createRSSItems(sEntries));
104         }
105         return channel;
106     }
107 
108     protected Image createRSSImage(SyndImageI sImage) {
109         Image image = new Image();
110         image.setTitle(sImage.getTitle());
111         image.setUrl(sImage.getUrl());
112         image.setLink(sImage.getLink());
113         return image;
114     }
115 
116     protected List createRSSItems(List sEntries) {
117         List list = new ArrayList();
118         for (int i=0;i<sEntries.size();i++) {
119             list.add(createRSSItem((SyndEntryI)sEntries.get(i)));
120         }
121         return list;
122     }
123 
124     protected Item createRSSItem(SyndEntryI sEntry) {
125         Item item = new Item();
126         item.setTitle(sEntry.getTitle());
127         item.setLink(sEntry.getLink());
128         return item;
129     }
130 
131 }