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

org.linuxstuff.mojo.licensing.model.LicensingRequirements Maven / Gradle / Ivy

package org.linuxstuff.mojo.licensing.model;

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

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("licensing-requirements")
public class LicensingRequirements {

	@XStreamAlias("missing-licenses")
	private Set missingLicenses = new HashSet();

	@XStreamAlias("coalesced-licenses")
	private Set coalescedLicenses = new HashSet();

	@XStreamAlias("disliked-licenses")
	@XStreamImplicit(itemFieldName = "disliked-license")
	private Set dislikedLicenses = new HashSet();

	@XStreamAlias("dislike-exemptions")
	@XStreamImplicit(itemFieldName = "dislike-exemption")
	private Set dislikeExemptions = new HashSet();

	public void addArtifactMissingLicense(ArtifactWithLicenses missingLicense) {
		missingLicenses.add(missingLicense);
	}

	public void addCoalescedLicense(CoalescedLicense coalescedLicense) {
		coalescedLicenses.add(coalescedLicense);
	}

	public void addDislikedLicense(String licenseName) {
		dislikedLicenses.add(licenseName);
	}

	public void addDislikeExemption(String artifactId) {
		dislikeExemptions.add(artifactId);
	}

	public boolean isDislikedLicense(String license) {
		return dislikedLicenses.contains(license);
	}

	public String getCorrectLicenseName(String name) {
		for (CoalescedLicense coalesced : coalescedLicenses) {
			if (coalesced.getFinalName().equalsIgnoreCase(name.trim()))
				return name;
			for (String otherName : coalesced.getOtherNames()) {
				if (otherName.equalsIgnoreCase(name.trim()))
					return coalesced.getFinalName();
			}
		}

		return name;
	}

	public boolean isExemptFromDislike(String artifactId) {
		if (dislikeExemptions == null) {
			return false;
		}

		return dislikeExemptions.contains(artifactId);
	}

	public Set getLicenseNames(String id) {
		Set licenses = new HashSet();
		for (ArtifactWithLicenses missing : missingLicenses) {
			if (missing.getArtifactId().equals(id)) {
				licenses.addAll(missing.getLicenses());
			}
		}

		return licenses;
	}

	public boolean containsDislikedLicenses() {
		return !dislikedLicenses.isEmpty();
	}

	public Set getMissingLicenses() {
		return missingLicenses;
	}

	public Set getCoalescedLicenses() {
		return coalescedLicenses;
	}

	public Set getDislikedLicenses() {
		return dislikedLicenses;
	}

	public Set getDislikeExemptions() {
		return dislikeExemptions;
	}

	public void combineWith(LicensingRequirements req) {

		if (req.getDislikedLicenses() != null) {
			for (String source : req.getDislikedLicenses()) {
				addDislikedLicense(source);
			}
		}

		if (req.getDislikeExemptions() != null) {
			for (String source : req.getDislikeExemptions()) {
				addDislikeExemption(source);
			}
		}

		if (req.getMissingLicenses() != null) {
			for (ArtifactWithLicenses source : req.getMissingLicenses()) {
				if (getMissingLicenses().contains(source)) {
					for (ArtifactWithLicenses destination : getMissingLicenses()) {
						if (source.equals(destination)) {
							destination.combineWith(source);
						}
					}
				} else {
					addArtifactMissingLicense(source);
				}
			}
		}

		if (req.getCoalescedLicenses() != null) {

			for (CoalescedLicense source : req.getCoalescedLicenses()) {
				if (getCoalescedLicenses().contains(source)) {
					for (CoalescedLicense destination : getCoalescedLicenses()) {
						if (source.equals(destination)) {
							destination.combineWith(source);
						}
					}
				} else {
					addCoalescedLicense(source);
				}
			}
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy