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          Channel channel = (Channel) feed;
44          syndFeed.setTitle(channel.getTitle());
45          syndFeed.setLink(channel.getLink());
46          syndFeed.setDescription(channel.getDescription());
47          syndFeed.setPublishedDate(channel.getPubDate());
48  
49          Image image = channel.getImage();
50          if (image!=null) {
51              syndFeed.setImage(createSyndImage(image));
52          }
53  
54          List items = channel.getItems();
55          if (items!=null) {
56              syndFeed.setEntries(createSyndEntries(items));
57          }
58      }
59  
60      protected SyndImageI createSyndImage(Image rssImage) {
61          SyndImageI syndImage = new SyndImage();
62          syndImage.setTitle(rssImage.getTitle());
63          syndImage.setUrl(rssImage.getUrl());
64          syndImage.setLink(rssImage.getLink());
65          return syndImage;
66      }
67  
68      protected List createSyndEntries(List rssItems) {
69          List syndEntries = new ArrayList();
70          for (int i=0;i<rssItems.size();i++) {
71              syndEntries.add(createSyndEntry((Item) rssItems.get(i)));
72          }
73          return syndEntries;
74      }
75  
76      protected SyndEntryI createSyndEntry(Item item) {
77          SyndEntryI syndEntry = new SyndEntry();
78          syndEntry.setTitle(item.getTitle());
79          syndEntry.setLink(item.getLink());
80          return syndEntry;
81      }
82  
83      public WireFeed createRealFeed(SyndFeedI syndFeed) {
84          return createRealFeed(getType(),syndFeed);
85      }
86  
87      protected WireFeed createRealFeed(String type,SyndFeedI syndFeed) {
88          Channel channel = new Channel(type);
89  
90          channel.setTitle(syndFeed.getTitle());
91          channel.setLink(syndFeed.getLink());
92          channel.setDescription(syndFeed.getDescription());
93  
94          SyndImageI sImage = syndFeed.getImage();
95          if (sImage!=null) {
96              channel.setImage(createRSSImage(sImage));
97          }
98  
99          List sEntries = syndFeed.getEntries();
100         if (sEntries!=null) {
101             channel.setItems(createRSSItems(sEntries));
102         }
103         return channel;
104     }
105 
106     protected Image createRSSImage(SyndImageI sImage) {
107         Image image = new Image();
108         image.setTitle(sImage.getTitle());
109         image.setUrl(sImage.getUrl());
110         image.setLink(sImage.getLink());
111         return image;
112     }
113 
114     protected List createRSSItems(List sEntries) {
115         List list = new ArrayList();
116         for (int i=0;i<sEntries.size();i++) {
117             list.add(createRSSItem((SyndEntryI)sEntries.get(i)));
118         }
119         return list;
120     }
121 
122     protected Item createRSSItem(SyndEntryI sEntry) {
123         Item item = new Item();
124         item.setTitle(sEntry.getTitle());
125         item.setLink(sEntry.getLink());
126         return item;
127     }
128 
129 }