package org.gbif.occurrence.download.license; import org.gbif.api.vocabulary.License; import com.google.common.base.Preconditions; /** * Builder type that returns concrete implementation(s) of LicenseSelector. */ public class LicenseSelectors { /** * Return a LicenseSelector implementation that will collect all licenses and return the most restrictive one * based on the defaultLicense. * Note that null and non-concrete licenses are ignored. * * @param defaultLicense the default (or base) license. */ public static LicenseSelector getMostRestrictiveLicenseSelector(final License defaultLicense) { Preconditions.checkNotNull(defaultLicense, "LicenseSelector requires a default license"); Preconditions.checkArgument(defaultLicense.isConcrete(), "LicenseSelector can only work on concrete license"); return new LicenseSelector() { private License license = defaultLicense; @Override public void collectLicense(License license) { this.license = License.getMostRestrictive(defaultLicense, license, defaultLicense); } @Override public License getSelectedLicense() { return license; } }; } }