/* Copyright (c) 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.gdata.data.media.mediarss; import com.google.gdata.data.AbstractExtension; import com.google.gdata.data.AttributeGenerator; import com.google.gdata.data.AttributeHelper; import com.google.gdata.data.ExtensionDescription; import com.google.gdata.util.ParseException; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.Collection; /** * {@code <media:keywords>}. * * See description on * <a href="http://search.yahoo.com/mrss">http://search.yahoo.com/mrss</a>. * * */ @ExtensionDescription.Default( nsAlias = MediaRssNamespace.PREFIX, nsUri = MediaRssNamespace.URI, localName = "keywords" ) public class MediaKeywords extends AbstractExtension { private final List<String> keywords = new ArrayList<String>(); /** Describes the tag to an {@link com.google.gdata.data.ExtensionProfile}. */ public static ExtensionDescription getDefaultDescription() { return ExtensionDescription.getDefaultDescription(MediaKeywords.class); } public List<String> getKeywords() { return keywords; } public void addKeyword(String keyword) { keywords.add(keyword); } public void addKeywords(Collection<String> keywords) { this.keywords.addAll(keywords); } public void clearKeywords() { keywords.clear(); } @Override protected void putAttributes(AttributeGenerator generator) { StringBuffer content = new StringBuffer(); boolean isFirst = true; for (String keyword: keywords) { if (isFirst) { isFirst = false; } else { content.append(", "); } content.append(keyword); } generator.setContent(content.toString()); } @Override protected void consumeAttributes(AttributeHelper attrsHelper) throws ParseException { String value = attrsHelper.consumeContent(false); keywords.clear(); if (value != null) { StringTokenizer tokenizer = new StringTokenizer(value, ","); while(tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); keywords.add(token); } } } }