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

nl.vpro.domain.classification.ClassificationServiceWrapper Maven / Gradle / Ivy

package nl.vpro.domain.classification;

import java.net.URI;
import java.time.Instant;
import java.util.Collection;
import java.util.List;

/**
 * Wraps another ClassifcationService. The goal is that this can implicitely use an {@link URLClassificationServiceImpl} (using cache headers), or a simple {@link ClassificationServiceImpl}.
 * @author Michiel Meeuwissen
 * @since 3.2
 */
public class ClassificationServiceWrapper implements ClassificationService {

    private final ClassificationService service;

    public ClassificationServiceWrapper(ClassificationService wrapped) {
        this.service = wrapped;
    }

    public ClassificationServiceWrapper(URI url) {
        this.service = new URLClassificationServiceImpl(url);
    }

    public ClassificationServiceWrapper(String url) {
        this.service = getService(url);
    }

    private static ClassificationService getService(String url) {
        if (url.startsWith("http")) {
            return new CachedURLClassificationServiceImpl(URI.create(url));
        } else {
            return new ClassificationServiceImpl(url);
        }
    }

    @Override
    public Term getTerm(String termId) throws TermNotFoundException {
        return service.getTerm(termId);
    }

    @Override
    public List getTermsByReference(String reference) {
        return service.getTermsByReference(reference);
    }

    @Override
    public boolean hasTerm(String termId) {
        return service.hasTerm(termId);
    }

    @Override
    public Collection values() {
        return service.values();
    }

    @Override
    public Collection valuesOf(String termId) {
        return service.valuesOf(termId);
    }

    @Override
    public ClassificationScheme getClassificationScheme() {
        return service.getClassificationScheme();
    }

    @Override
    public Instant getLastModified() {
        return service.getLastModified();
    }

    @Override
    public String toString() {
        return "" + service;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy