/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */

package org.dspace.rdf.factory;

import org.apache.log4j.Logger;
import org.dspace.rdf.conversion.RDFConverter;
import org.dspace.rdf.storage.RDFStorage;
import org.dspace.rdf.storage.URIGenerator;
import org.springframework.beans.factory.annotation.Required;

/**
 *
 * @author Pascal-Nicolas Becker (p dot becker at tu hyphen berlin dot de)
 */
public class RDFFactoryImpl extends RDFFactory
{
    // we have several URIGenerators that use each other as fallback
    // following we have to instantiate all of them and cannot use autowiring
    // by type here. So we use setters and properties in spring configuration
    // instead.

    private static final Logger log = Logger.getLogger(RDFFactoryImpl.class);

    private RDFStorage storage;
    private URIGenerator generator;
    private RDFConverter converter;

    @Required
    public void setStorage(RDFStorage storage) {
        this.storage = storage;
    }

    @Required
    public void setGenerator(URIGenerator generator) {
        if (log.isDebugEnabled())
        {
            log.debug("Using '" + generator.getClass().getCanonicalName() 
                    + "' as URIGenerator.");
        }
        this.generator = generator;
    }

    @Required
    public void setConverter(RDFConverter converter) {
        this.converter = converter;
    }

    @Override
    public RDFStorage getRDFStorage() {
        return storage;
    }

    @Override
    public URIGenerator getURIGenerator() {
        return generator;
    }

    @Override
    public RDFConverter getRDFConverter() {
        return converter;
    }
    
}
