com.rometools.propono.blogclient.atomprotocol.AtomBlog Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rome-propono Show documentation
Show all versions of rome-propono Show documentation
The ROME Propono subproject is a Java class library that
supports publishing protocols, specifically the Atom Publishing Protocol
and the legacy MetaWeblog API. Propono includes an Atom client library,
Atom server framework and a Blog client that supports both Atom protocol
and the MetaWeblog API.
/*
* Copyright 2007 Dave Johnson (Blogapps project)
*
* 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.rometools.propono.blogclient.atomprotocol;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.rometools.propono.atom.client.ClientAtomService;
import com.rometools.propono.atom.client.ClientCollection;
import com.rometools.propono.atom.client.ClientEntry;
import com.rometools.propono.atom.client.ClientMediaEntry;
import com.rometools.propono.atom.client.ClientWorkspace;
import com.rometools.propono.blogclient.Blog;
import com.rometools.propono.blogclient.BlogClientException;
import com.rometools.propono.blogclient.BlogEntry;
import com.rometools.propono.blogclient.BlogResource;
import com.rometools.propono.utils.ProponoException;
/**
* Atom protocol implementation of the BlogClient Blog interface.
*
* @deprecated Propono will be removed in Rome 2.
*/
@Deprecated
public class AtomBlog implements Blog {
private String name = null;
private ClientAtomService service;
private ClientWorkspace workspace = null;
private AtomCollection entriesCollection = null;
private AtomCollection resourcesCollection = null;
private final Map collections = new TreeMap();
/**
* Create AtomBlog using specified HTTPClient, user account and workspace, called by
* AtomConnection. Fetches Atom Service document and creates an AtomCollection object for each
* collection found. The first entry collection is considered the primary entry collection. And
* the first resource collection is considered the primary resource collection.
*/
AtomBlog(final ClientAtomService service, final ClientWorkspace workspace) {
setService(service);
setWorkspace(workspace);
name = workspace.getTitle();
final List collect = workspace.getCollections();
final Iterator members = collect.iterator();
while (members.hasNext()) {
final ClientCollection col = (ClientCollection) members.next();
if (col.accepts("entry") && entriesCollection == null) {
// first entry collection is primary entry collection
entriesCollection = new AtomCollection(this, col);
} else if (!col.accepts("entry") && resourcesCollection == null) {
// first non-entry collection is primary resource collection
resourcesCollection = new AtomCollection(this, col);
}
collections.put(col.getHrefResolved(), new AtomCollection(this, col));
}
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return name;
}
/**
* String display of blog, returns name.
*/
@Override
public String toString() {
return getName();
}
/**
* {@inheritDoc}
*/
@Override
public String getToken() {
return entriesCollection.getToken();
}
/**
* {@inheritDoc}
*/
@Override
public BlogEntry newEntry() throws BlogClientException {
if (entriesCollection == null) {
throw new BlogClientException("No entry collection");
}
return entriesCollection.newEntry();
}
/**
* {@inheritDoc}
*/
@Override
public BlogEntry getEntry(final String token) throws BlogClientException {
ClientEntry clientEntry = null;
try {
clientEntry = getService().getEntry(token);
} catch (final ProponoException ex) {
throw new BlogClientException("ERROR: fetching entry", ex);
}
if (clientEntry != null && clientEntry instanceof ClientMediaEntry) {
return new AtomResource(this, (ClientMediaEntry) clientEntry);
} else if (clientEntry != null && clientEntry instanceof ClientEntry) {
return new AtomEntry(this, clientEntry);
} else {
throw new BlogClientException("ERROR: unknown object type returned");
}
}
/**
* {@inheritDoc}
*/
@Override
public Iterator getEntries() throws BlogClientException {
if (entriesCollection == null) {
throw new BlogClientException("No primary entry collection");
}
return new AtomEntryIterator(entriesCollection);
}
/**
* {@inheritDoc}
*/
@Override
public Iterator getResources() throws BlogClientException {
if (resourcesCollection == null) {
throw new BlogClientException("No primary entry collection");
}
return new AtomEntryIterator(resourcesCollection);
}
String saveEntry(final BlogEntry entry) throws BlogClientException {
if (entriesCollection == null) {
throw new BlogClientException("No primary entry collection");
}
return entriesCollection.saveEntry(entry);
}
void deleteEntry(final BlogEntry entry) throws BlogClientException {
if (entriesCollection == null) {
throw new BlogClientException("No primary entry collection");
}
entriesCollection.deleteEntry(entry);
}
/**
* {@inheritDoc}
*/
@Override
public List getCategories() throws BlogClientException {
if (entriesCollection == null) {
throw new BlogClientException("No primary entry collection");
}
return entriesCollection.getCategories();
}
/**
* {@inheritDoc}
*/
@Override
public BlogResource newResource(final String name, final String contentType, final byte[] bytes) throws BlogClientException {
if (resourcesCollection == null) {
throw new BlogClientException("No resource collection");
}
return resourcesCollection.newResource(name, contentType, bytes);
}
String saveResource(final BlogResource res) throws BlogClientException {
if (resourcesCollection == null) {
throw new BlogClientException("No primary resource collection");
}
return resourcesCollection.saveResource(res);
}
void deleteResource(final BlogResource resource) throws BlogClientException {
deleteEntry(resource);
}
/**
* {@inheritDoc}
*/
@Override
public List getCollections() throws BlogClientException {
return new ArrayList(collections.values());
}
/**
* {@inheritDoc}
*/
@Override
public Blog.Collection getCollection(final String token) throws BlogClientException {
return collections.get(token);
}
ClientAtomService getService() {
return service;
}
void setService(final ClientAtomService service) {
this.service = service;
}
ClientWorkspace getWorkspace() {
return workspace;
}
void setWorkspace(final ClientWorkspace workspace) {
this.workspace = workspace;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy