/******************************************************************************* * Copyright (c) 2007 Cambridge Semantics Incorporated. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cambridge Semantics Incorporated *******************************************************************************/ package org.openanzo.rdf.adapter; import java.io.Writer; import java.util.Map; import org.openanzo.exceptions.AnzoException; import org.openanzo.exceptions.ExceptionConstants; import org.openanzo.rdf.IRDFWriter; import org.openanzo.rdf.RDFFormat; import org.openanzo.rdf.Statement; import org.openrdf.model.Resource; import org.openrdf.model.URI; import org.openrdf.model.impl.ContextStatementImpl; import org.openrdf.rio.RDFHandlerException; import org.openrdf.rio.RDFWriter; import org.openrdf.rio.Rio; /** * RIO to anzo writer */ public class RioToAnzoWriterAdapter implements IRDFWriter { private final RDFWriter writer; private final BasicNodeConverter converter; /** * Convert from anzo data to rio writer * * @param writer * writer data * @param format * format of writer */ public RioToAnzoWriterAdapter(Writer writer, RDFFormat format) { this.writer = Rio.createWriter(BasicNodeConverter.convert(format), writer); converter = new BasicNodeConverter(); } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#endRDF() */ public void endRDF() throws AnzoException { try { writer.endRDF(); } catch (RDFHandlerException e) { throw new AnzoException(ExceptionConstants.IO.RDF_HANDLER_ERROR, e); } } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#handleComment(java.lang.String) */ public void handleComment(String comment) throws AnzoException { try { writer.handleComment(comment); } catch (RDFHandlerException e) { throw new AnzoException(ExceptionConstants.IO.RDF_HANDLER_ERROR, e); } } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#handleNamespace(java.lang.String, java.lang.String) */ public void handleNamespace(String prefix, String uri) throws AnzoException { try { writer.handleNamespace(prefix, uri); } catch (RDFHandlerException e) { throw new AnzoException(ExceptionConstants.IO.RDF_HANDLER_ERROR, e); } } /** * Handle namespaces * * @param prefixes * prefixes to handle * @throws AnzoException */ public void handleNamespaces(Map<String, String> prefixes) throws AnzoException { for (Map.Entry<String, String> prefix : prefixes.entrySet()) { handleNamespace(prefix.getKey(), prefix.getValue()); } } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#handleStatement(org.openanzo.rdf.Statement) */ public void handleStatement(Statement statement) throws AnzoException { org.openrdf.model.Statement stmt = new ContextStatementImpl((Resource) converter.convert(statement.getSubject(), false), (URI) converter.convert(statement.getPredicate(), false), converter.convert(statement.getObject(), false), (Resource) converter.convert(statement.getNamedGraphUri(), false)); try { writer.handleStatement(stmt); } catch (RDFHandlerException e) { throw new AnzoException(ExceptionConstants.IO.DESERIALIZATION_ERROR, e); } } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#startRDF() */ public void startRDF() throws AnzoException { try { writer.startRDF(); } catch (RDFHandlerException e) { throw new AnzoException(ExceptionConstants.IO.RDF_HANDLER_ERROR, e); } } /* (non-Javadoc) * @see org.openanzo.rdf.RDFWriter#getRDFFormat() */ public RDFFormat getRDFFormat() { return BasicNodeConverter.convert(writer.getRDFFormat()); } }