/******************************************************************************* * 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 * * File: $Source$ * Created by: Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>) * Created on: Dec 26, 2007 * Revision: $Id$ * * Contributors: * Cambridge Semantics Incorporated - initial API and implementation *******************************************************************************/ package org.openanzo.services.serialization.transport; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import org.openanzo.exceptions.AnzoException; import org.openanzo.glitter.dataset.DefaultQueryDataset; import org.openanzo.glitter.dataset.QueryDataset; /** * @author Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com</a>) * */ public class QueryUriSetSerializer { /** * Deserialize from a String to type T * * @param serialized * String representation of object type T * @param format * Format of the String * @return T deserialized object * @throws AnzoException * if there was a problem deserializing the object */ static public QueryDataset deserialize(String serialized, String format) throws AnzoException { DefaultQueryDataset queryUriSet = new DefaultQueryDataset(); if (serialized == null || serialized.length() == 0) return queryUriSet; BufferedReader br = new BufferedReader(new StringReader(serialized)); try { String line = br.readLine(); int i = 0; while (line != null) { switch (i++) { case 0: queryUriSet.setDefaultGraphs(org.openanzo.rdf.utils.SerializationUtils.convertStringToSet(serialized, format)); break; case 1: queryUriSet.setNamedGraphs(org.openanzo.rdf.utils.SerializationUtils.convertStringToSet(serialized, format)); break; case 2: queryUriSet.allGraphs = Boolean.parseBoolean(line); break; case 3: queryUriSet.allNamedGraphs = Boolean.parseBoolean(line); break; case 4: queryUriSet.allMetadataGraphs = Boolean.parseBoolean(line); break; case 5: queryUriSet.defaultAllGraphs = Boolean.parseBoolean(line); break; case 6: queryUriSet.defaultAllNamedGraphs = Boolean.parseBoolean(line); break; case 7: queryUriSet.defaultAllMetadataGraphs = Boolean.parseBoolean(line); break; case 8: queryUriSet.fullyExpandedDatasets = Boolean.parseBoolean(line); break; case 9: queryUriSet.datasetFullyResolved = Boolean.parseBoolean(line); break; } } } catch (IOException ioe) { } return queryUriSet; } /** * Serialize the given object to a String * * @param objects * Objects to serialize * @param format * If not null, the format of the serialized String * @return Serialized version of object * @throws AnzoException * if there was a problem serializing the object */ static public String serialize(QueryDataset querySet, String format) throws AnzoException { StringBuilder sb = new StringBuilder(); sb.append(org.openanzo.rdf.utils.SerializationUtils.convertToList(querySet.getDefaultGraphURIs(), format)); sb.append("\n"); sb.append(org.openanzo.rdf.utils.SerializationUtils.convertToList(querySet.getNamedGraphURIs(), format)); sb.append("\n"); sb.append(Boolean.toString(querySet.allGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.allNamedGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.allMetadataGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.defaultAllGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.defaultAllNamedGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.defaultAllMetadataGraphs)); sb.append("\n"); sb.append(Boolean.toString(querySet.fullyExpandedDatasets)); sb.append("\n"); sb.append(Boolean.toString(querySet.datasetFullyResolved)); sb.append("\n"); return sb.toString(); } }