All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.rdf4j.rio.ParserConfig Maven / Gradle / Ivy

There is a newer version: 5.0.2
Show newest version
/*******************************************************************************
 * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Distribution License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *******************************************************************************/
package org.eclipse.rdf4j.rio;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import org.eclipse.rdf4j.rio.helpers.BasicParserSettings;

/**
 * A container object for easy setting and passing of {@link RDFParser} configuration options.
 *
 * @author Jeen Broekstra
 * @author Peter Ansell
 */
public class ParserConfig extends RioConfig {

	/**
	 *
	 */
	private static final long serialVersionUID = 270L;

	private Set> nonFatalErrors = new HashSet<>();

	/**
	 * Creates a ParserConfig object starting with default settings.
	 */
	public ParserConfig() {
		super();
	}

	/**
	 * This method indicates a list of optional errors that the parser should attempt to recover from.
	 * 

* If recovery is not possible, then the parser will still abort with an exception. *

* Calls to this method will override previous calls, including the backwards-compatibility settings setup in the * deprecated constructor. *

* Non-Fatal errors that are detected MUST be reported to the error listener. * * @param nonFatalErrors The set of parser errors that are relevant to * @return Either a copy of this config, if it is immutable, or this object, to allow chaining of method calls. */ public ParserConfig setNonFatalErrors(Set> nonFatalErrors) { this.nonFatalErrors = new HashSet<>(nonFatalErrors); return this; } /** * Add a non-fatal error to the set used by parsers to determine whether they should attempt to recover from a * particular parsing error. * * @param nextNonFatalError A non-fatal error that a parser should attempt to recover from. * @return Either a copy of this config, if it is immutable, or this object, to allow chaining of method calls. */ public ParserConfig addNonFatalError(RioSetting nextNonFatalError) { this.nonFatalErrors.add(nextNonFatalError); return this; } /** * This method is used by the parser to check whether they should throw an exception or attempt to recover from a * non-fatal error. *

* If this method returns false, then the given non-fatal error will cause the parser to throw an exception. *

* If this method returns true, then the parser will do its best to recover from the error, potentially by dropping * triples or creating triples that do not exactly match the source. *

* By default this method will always return false until {@link #setNonFatalErrors(Set)} is called to specify the * set of errors that are non-fatal in the given context. *

* Non-Fatal errors that are detected MUST be reported to the error listener. * * @param errorToCheck * @return True if the user has setup the parser configuration to indicate that this error is not necessarily fatal * and false if the user has not indicated that this error is fatal. */ public boolean isNonFatalError(RioSetting errorToCheck) { return nonFatalErrors.contains(errorToCheck); } /** * Get the current set of non-fatal errors. * * @return An unmodifiable set containing the current non-fatal errors. */ public Set> getNonFatalErrors() { return Collections.unmodifiableSet(nonFatalErrors); } /** * This method is preserved for backwards compatibility. *

* Code should be gradually migrated to use {@link BasicParserSettings#PRESERVE_BNODE_IDS}. * * @return Returns the {@link BasicParserSettings#PRESERVE_BNODE_IDS} setting. */ public boolean isPreserveBNodeIDs() { return this.get(BasicParserSettings.PRESERVE_BNODE_IDS); } @Override public ParserConfig useDefaults() { super.useDefaults(); this.nonFatalErrors.clear(); return this; } @Override public ParserConfig set(RioSetting setting, T value) { super.set(setting, value); return this; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy