001 /*
002 * Copyright 1999,2004 The Apache Software Foundation.
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 org.apache.commons.feedparser;
018
019 import java.util.Date;
020 import java.util.Locale;
021
022 /**
023 *
024 * Provides a MetaData event listener for RSS 0.9x, RSS 1.0, 2.0 and Atom
025 * metadata values.
026 *
027 * Each format provides mechanisms to represent copyright strings, dates,
028 * modified times, etc. This interface provides a generic implementation for
029 * each.
030 *
031 * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
032 * @version $Id: MetaFeedParserListener.java 373614 2006-01-30 22:31:21Z mvdb $
033 */
034 public interface MetaFeedParserListener {
035
036 public void onCopyright( FeedParserState state, String content ) throws FeedParserException;
037 public void onCopyrightEnd() throws FeedParserException;
038
039 /**
040 *
041 * --- ATOM SUPPORT ---
042 *
043 * The "atom:created" element's content indicates the time that the entry
044 * was created. Entries MAY contain an atom:created element, but MUST NOT
045 * contain more than one. When this element is present, its content MUST be
046 * a W3C Date-Time string [[ref]]. The date SHOULD be expressed in the "UTC"
047 * time zone [[reword?]].
048 *
049 * If atom:created is not present, CONSUMERS MUST consider its value to be
050 * the same as that of atom:modified.
051 *
052 * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.8
053 *
054 * --- RSS 2.0 SUPPORT ---
055 *
056 * <pubDate> is an optional sub-element of <item>.
057 *
058 * Its value is a date, indicating when the item was published. If it's a
059 * date in the future, aggregators may choose to not display the item until
060 * that date.
061 *
062 * <pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
063 *
064 * http://feedvalidator.org/docs/rss2.html#ltpubdategtSubelementOfLtitemgt
065 *
066 * --- RSS 1.0 SUPPORT ---
067 *
068 * We use dc:date which is ISO 8601 compliant.
069 *
070 * http://www.w3.org/TR/NOTE-datetime
071 * http://web.resource.org/rss/1.0/modules/dc/
072 *
073 *
074 */
075 public void onCreated( FeedParserState state, Date date ) throws FeedParserException;
076 public void onCreatedEnd() throws FeedParserException;
077
078 /**
079 * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.7
080 *
081 *
082 */
083 public void onIssued( FeedParserState state, String content ) throws FeedParserException;
084 public void onIssuedEnd() throws FeedParserException;
085
086 /**
087 * RSS 2.0 category. Dublin Core.
088 */
089 public void onSubject( FeedParserState state, String content ) throws FeedParserException;
090 public void onSubjectEnd() throws FeedParserException;
091
092 /**
093 * Called when we've found an xml:lang or a dc:lang on Atom and RSS feeds.
094 *
095 *
096 */
097 public void onLocale( FeedParserState state, Locale locale ) throws FeedParserException;
098 public void onLocaleEnd() throws FeedParserException;
099
100 /**
101 * Used to represent RSS 2.0 GUIDs and atom:id constructs. For Atom
102 * isPermalink should be ignored.
103 *
104 *
105 */
106 public void onGUID( FeedParserState state,
107 String value,
108 boolean isPermalink ) throws FeedParserException;
109
110 public void onGUIDEnd() throws FeedParserException;
111
112 /**
113 * Called when a generator contruct is found within Atom or RSS 2.0
114 *
115 *
116 */
117 public void onGenerator( FeedParserState state, String content ) throws FeedParserException;
118 public void onGeneratorEnd() throws FeedParserException;
119
120 /**
121 * Provided for author information across RSS 2.0, atom, dc:creator in RSS
122 * 1.0. Both email, and resource may be null if not specified.
123 *
124 * TODO: what does RSS 0.91, 0.9, etc provide?
125 *
126 * NOTE that this is not yet 100% compatible with FOAF person constructs.
127 * FOAF provides additional metadata including title, firstName, surname,
128 * nick, etc which we don't provide with this method. We'll probably add
129 * additional events for this in the future.
130 *
131 *
132 */
133 public void onAuthor( FeedParserState state,
134 String name,
135 String email,
136 String resource ) throws FeedParserException;
137
138 public void onAuthorEnd() throws FeedParserException;
139
140 public void onComments( FeedParserState state,
141 String resource ) throws FeedParserException;
142
143 public void onCommentsEnd() throws FeedParserException;
144
145 public void onCommentsFeed( FeedParserState state,
146 String resource ) throws FeedParserException;
147
148 public void onCommentsFeedEnd() throws FeedParserException;
149
150 }