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