/* 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;
import com.google.gdata.client.Query;
import java.util.List;
/**
* Shared interface for model and data BaseFeed to implement.
*
*
*/
public interface IFeed extends IAtom {
/**
* Returns the value of the atom:logo element.
*/
public String getLogo();
/**
* Sets the value of the logo field on this feed.
*/
public void setLogo(String logo);
/**
* Returns the atom:subtitle element of this feed.
*/
public ITextConstruct getSubtitle();
/**
* Returns the atom:generator element on this feed.
*/
public IGenerator getGenerator();
/**
* Sets the atom:generator element on this feed. This method will create the
* appropriate type of element or extension based on the data model in use.
*/
public IGenerator setGenerator(String version, String uri, String name);
/**
* Returns true if this feed accepts entries POSTed to it.
*/
public boolean getCanPost();
/**
* Sets whether this feed accepts entries POSTed to it.
*/
public void setCanPost(boolean canPost);
/**
* Gets the total number of results associated with this feed. The value
* may be larger than the number of contained entries for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the total size is undefined.
*/
public int getTotalResults();
/**
* Sets the total number of results associated with this feed. The value
* may be larger than the number of contained entries for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the total size is undefined.
*/
public void setTotalResults(int totalResults);
/**
* Gets the starting index of the contained entries for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the start index is undefined.
*/
public int getStartIndex();
/**
* Sets the starting index of the contained entries for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the start index is undefined.
*/
public void setStartIndex(int startIndex);
/**
* Gets the number of items that will be returned per page for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the page item count is
* undefined.
*/
public int getItemsPerPage();
/**
* Sets the number of items that will be returned per page for paged feeds.
* A value of {@link Query#UNDEFINED} indicates the page item count is
* undefined.
*/
public void setItemsPerPage(int numResults);
/**
* Creates a new entry of the appropriate type for this feed.
*/
public IEntry createEntry();
/**
* Returns a list of entries for this feed. The actual type of this list will
* depend on the data model used for the Feed.
*/
public List<? extends IEntry> getEntries();
/** Returns the entry post link for the feed. */
public ILink getEntryPostLink();
/**
* Returns the link that provides the URI of next page in a paged feed.
*
* @return Link that provides the URI of next page in a paged feed or {@code
* null} for none.
*/
public ILink getNextLink();
/**
* Returns the link that provides the URI of previous page in a paged feed.
*
* @return Link that provides the URI of previous page in a paged feed or
* {@code null} for none.
*/
public ILink getPreviousLink();
/**
* Returns the link that provides the URI that can be used to batch operations
* to query, insert, update and delete entries on this feed.
*
* @return Link that provides the URI that can be used to batch operations to
* query, insert, update and delete entries on this feed or {@code null}
* for none.
*/
public ILink getFeedBatchLink();
}