Package org.openrdf.query.dawg

Source Code of org.openrdf.query.dawg.DAWGTestBooleanParser

/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.query.dawg;

import static org.openrdf.query.dawg.DAWGTestResultSetSchema.BOOLEAN;
import static org.openrdf.query.dawg.DAWGTestResultSetSchema.RESULTSET;

import java.util.Set;

import org.openrdf.model.Model;
import org.openrdf.model.Resource;
import org.openrdf.model.Statement;
import org.openrdf.model.Value;
import org.openrdf.model.impl.LinkedHashModel;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.rio.RDFHandlerException;
import org.openrdf.rio.helpers.RDFHandlerBase;

/**
* @author Arjohn Kampman
*/
public class DAWGTestBooleanParser extends RDFHandlerBase {

  /*-----------*
   * Variables *
   *-----------*/

  private Model model = new LinkedHashModel();

  private boolean value;

  /*--------------*
   * Constructors *
   *--------------*/

  public DAWGTestBooleanParser() {
  }

  /*---------*
   * Methods *
   *---------*/

  public boolean getValue() {
    return value;
  }

  @Override
  public void startRDF()
    throws RDFHandlerException
  {
    model.clear();
  }

  @Override
  public void handleStatement(Statement st)
    throws RDFHandlerException
  {
    model.add(st);
  }

  @Override
  public void endRDF()
    throws RDFHandlerException
  {
    Set<Resource> resultSetNodes = model.filter(null, RDF.TYPE, RESULTSET).subjects();
    if (resultSetNodes.size() != 1) {
      throw new RDFHandlerException("Expected 1 subject of type ResultSet, found: "
          + resultSetNodes.size());
    }

    Resource resultSetNode = resultSetNodes.iterator().next();

    Set<Value> resultValues = model.filter(resultSetNode, BOOLEAN, null).objects();
    if (resultValues.size() != 1) {
      throw new RDFHandlerException("Expected 1 boolean result value, found: " + resultValues.size());
    }

    Value booleanLit = resultValues.iterator().next();

    if (booleanLit.equals(DAWGTestResultSetSchema.TRUE)) {
      value = true;
    }
    else if (booleanLit.equals(DAWGTestResultSetSchema.FALSE)) {
      value = false;
    }
    else {
      throw new RDFHandlerException("Invalid boolean value: " + booleanLit);
    }
  }
}
TOP

Related Classes of org.openrdf.query.dawg.DAWGTestBooleanParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.