001: /*
002: * Copyright 2004 Sun Microsystems, Inc.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: *
016: */
017: package com.sun.syndication.feed.synd.impl;
018:
019: import com.sun.syndication.feed.rss.Category;
020: import com.sun.syndication.feed.rss.Item;
021: import com.sun.syndication.feed.rss.Enclosure;
022: import com.sun.syndication.feed.synd.*;
023:
024: import java.util.ArrayList;
025: import java.util.List;
026: import java.util.Set;
027: import java.util.HashSet;
028:
029: /**
030: */
031: public class ConverterForRSS092 extends ConverterForRSS091Userland {
032:
033: public ConverterForRSS092() {
034: this ("rss_0.92");
035: }
036:
037: protected ConverterForRSS092(String type) {
038: super (type);
039: }
040:
041: protected SyndEntry createSyndEntry(Item item) {
042: SyndEntry syndEntry = super .createSyndEntry(item);
043: List cats = item.getCategories();
044: if (cats.size() > 0) {
045: Set s = new HashSet(); // using a set to remove duplicates
046: s.addAll(createSyndCategories(cats)); // feed native categories (as syndcat)
047: s.addAll(syndEntry.getCategories()); // DC subjects (as syndcat)
048: syndEntry.setCategories(new ArrayList(s)); //c
049: }
050: List enclosures = item.getEnclosures();
051: if (enclosures.size() > 0) {
052: syndEntry.setEnclosures(createSyndEnclosures(enclosures));
053: }
054: return syndEntry;
055: }
056:
057: protected List createSyndCategories(List rssCats) {
058: List syndCats = new ArrayList();
059: for (int i = 0; i < rssCats.size(); i++) {
060: Category rssCat = (Category) rssCats.get(i);
061: SyndCategory sCat = new SyndCategoryImpl();
062: sCat.setTaxonomyUri(rssCat.getDomain());
063: sCat.setName(rssCat.getValue());
064: syndCats.add(sCat);
065: }
066: return syndCats;
067: }
068:
069: protected List createSyndEnclosures(List enclosures) {
070: List sEnclosures = new ArrayList();
071: for (int i = 0; i < enclosures.size(); i++) {
072: Enclosure enc = (Enclosure) enclosures.get(i);
073: SyndEnclosure sEnc = new SyndEnclosureImpl();
074: sEnc.setUrl(enc.getUrl());
075: sEnc.setType(enc.getType());
076: sEnc.setLength(enc.getLength());
077: sEnclosures.add(sEnc);
078: }
079: return sEnclosures;
080: }
081:
082: protected Item createRSSItem(SyndEntry sEntry) {
083: Item item = super .createRSSItem(sEntry);
084:
085: List sCats = sEntry.getCategories(); //c
086: if (sCats.size() > 0) {
087: item.setCategories(createRSSCategories(sCats));
088: }
089: List sEnclosures = sEntry.getEnclosures();
090: if (sEnclosures.size() > 0) {
091: item.setEnclosures(createEnclosures(sEnclosures));
092: }
093: return item;
094: }
095:
096: protected List createRSSCategories(List sCats) {
097: List cats = new ArrayList();
098: for (int i = 0; i < sCats.size(); i++) {
099: 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: }
|