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.rss.Category;
20  import com.sun.syndication.feed.rss.Item;
21  import com.sun.syndication.feed.rss.Enclosure;
22  import com.sun.syndication.feed.synd.*;
23  
24  import java.util.ArrayList;
25  import java.util.List;
26  import java.util.Set;
27  import java.util.HashSet;
28  
29  /**
30   */
31  public class ConverterForRSS092 extends ConverterForRSS091Userland {
32  
33      public ConverterForRSS092() {
34          this("rss_0.92");
35      }
36  
37      protected ConverterForRSS092(String type) {
38          super(type);
39      }
40  
41      protected SyndEntry createSyndEntry(Item item) {
42          SyndEntry syndEntry = super.createSyndEntry(item);
43          List cats =  item.getCategories();
44          if (cats.size()>0) {
45              Set s = new HashSet();                // using a set to remove duplicates
46              s.addAll(createSyndCategories(cats)); // feed native categories (as syndcat)
47              s.addAll(syndEntry.getCategories());   // DC subjects (as syndcat)
48              syndEntry.setCategories(new ArrayList(s));    //c
49          }
50          List enclosures = item.getEnclosures();
51          if (enclosures.size()>0) {
52              syndEntry.setEnclosures(createSyndEnclosures(enclosures));
53          }
54          return syndEntry;
55      }
56  
57      protected List createSyndCategories(List rssCats) {
58          List syndCats = new ArrayList();
59          for (int i=0;i<rssCats.size();i++) {
60              Category rssCat = (Category) rssCats.get(i);
61              SyndCategory sCat = new SyndCategoryImpl();
62              sCat.setTaxonomyUri(rssCat.getDomain());
63              sCat.setName(rssCat.getValue());
64              syndCats.add(sCat);
65          }
66          return syndCats;
67      }
68  
69      protected List createSyndEnclosures(List enclosures) {
70          List sEnclosures = new ArrayList();
71          for (int i=0;i<enclosures.size();i++) {
72              Enclosure enc = (Enclosure) enclosures.get(i);
73              SyndEnclosure sEnc = new SyndEnclosureImpl();
74              sEnc.setUrl(enc.getUrl());
75              sEnc.setType(enc.getType());
76              sEnc.setLength(enc.getLength());
77              sEnclosures.add(sEnc);
78          }
79          return sEnclosures;
80      }
81  
82      protected Item createRSSItem(SyndEntry sEntry) {
83          Item item = super.createRSSItem(sEntry);
84  
85          List sCats =  sEntry.getCategories();    //c
86          if (sCats.size()>0) {
87              item.setCategories(createRSSCategories(sCats));
88          }
89          List sEnclosures = sEntry.getEnclosures();
90          if (sEnclosures.size()>0) {
91              item.setEnclosures(createEnclosures(sEnclosures));
92          }
93          return item;
94      }
95  
96      protected List createRSSCategories(List sCats) {
97          List cats = new ArrayList();
98          for (int i=0;i<sCats.size();i++) {
99              SyndCategory sCat = (SyndCategory) sCats.get(i);
100             Category cat = new Category();
101             cat.setDomain(sCat.getTaxonomyUri());
102             cat.setValue(sCat.getName());
103             cats.add(cat);
104         }
105         return cats;
106     }
107 
108     protected List createEnclosures(List sEnclosures) {
109         List enclosures = new ArrayList();
110         for (int i=0;i<sEnclosures.size();i++) {
111             SyndEnclosure sEnc = (SyndEnclosure) sEnclosures.get(i);
112             Enclosure enc = new Enclosure();
113             enc.setUrl(sEnc.getUrl());
114             enc.setType(sEnc.getType());
115             enc.setLength(sEnc.getLength());
116             enclosures.add(enc);
117         }
118         return enclosures;
119     }
120 
121 }