org.codehaus.mojo.license.spdx.SpdxLicenseInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of license-maven-plugin Show documentation
Show all versions of license-maven-plugin Show documentation
Maven plugin to download and collect license files from project dependencies.
package org.codehaus.mojo.license.spdx;
/*
* #%L
* License Maven Plugin
* %%
* Copyright (C) ${year} Codehaus
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* .
* #L%
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.codehaus.mojo.license.spdx.SpdxLicenseInfo.Attachments.UrlInfo;
/**
* A license item from
* SPDX licenses.json. {@link #attachments} is an enhancement done by us during processing of the JSON input.
*
* @author Peter Palaga
* @since 1.18
*/
public class SpdxLicenseInfo
{
private final String reference;
private final boolean isDeprecatedLicenseId;
private final String detailsUrl;
private final int referenceNumber;
private final String name;
private final String licenseId;
private final List seeAlso;
private final boolean isOsiApproved;
private final boolean isFsfLibre;
private final Attachments attachments;
public static Builder builder()
{
return new Builder();
}
// CHECKSTYLE_OFF: ParameterNumber
public SpdxLicenseInfo( String reference, boolean isDeprecatedLicenseId, boolean isFsfLibre, String detailsUrl,
int referenceNumber, String name, String licenseId, List seeAlso,
boolean isOsiApproved, Attachments attachments )
{
super();
this.reference = reference;
this.isDeprecatedLicenseId = isDeprecatedLicenseId;
this.isFsfLibre = isFsfLibre;
this.detailsUrl = detailsUrl;
this.referenceNumber = referenceNumber;
this.name = name;
this.licenseId = licenseId;
this.seeAlso = seeAlso;
this.isOsiApproved = isOsiApproved;
this.attachments = attachments;
}
public boolean isFsfLibre()
{
return isFsfLibre;
}
public String getReference()
{
return reference;
}
public boolean isDeprecatedLicenseId()
{
return isDeprecatedLicenseId;
}
public String getDetailsUrl()
{
return detailsUrl;
}
public int getReferenceNumber()
{
return referenceNumber;
}
public String getName()
{
return name;
}
public String getLicenseId()
{
return licenseId;
}
public List getSeeAlso()
{
return seeAlso;
}
public boolean isOsiApproved()
{
return isOsiApproved;
}
/**
* @return the {@link Attachments} - i.e. the data that does not come directly from spdx.org
*/
public Attachments getAttachments()
{
return attachments;
}
/**
* Data not coming directly from
* SPDX
* licenses.json but enhanced by us.
*
* @since 1.18
*/
public static class Attachments
{
private final Map urlInfos;
Attachments( Map urlInfos )
{
super();
this.urlInfos = urlInfos;
}
public Map getUrlInfos()
{
return urlInfos;
}
/**
* A sha1 checksum and mime type associated with an URL.
*
* @since 1.18
*/
public static class UrlInfo
{
private final String sha1;
private final String mimeType;
private final boolean stable;
public UrlInfo( String sha1, String mimeType, boolean stable )
{
super();
this.sha1 = sha1;
this.mimeType = mimeType;
this.stable = stable;
}
public boolean isStable()
{
return stable;
}
public String getSha1()
{
return sha1;
}
public String getMimeType()
{
return mimeType;
}
}
}
/**
* A {@link SpdxLicenseInfo} builder.
*
* @since 1.18
*/
public static class Builder
{
private Boolean isDeprecatedLicenseId;
private boolean isFsfLibre;
private String detailsUrl;
private Integer referenceNumber;
private String name;
private String reference;
private String licenseId;
private List seeAlso = new ArrayList<>();
private Boolean isOsiApproved;
private Map urlInfos = new LinkedHashMap<>();
public Builder isDeprecatedLicenseId( boolean isDeprecatedLicenseId )
{
this.isDeprecatedLicenseId = isDeprecatedLicenseId;
return this;
}
public Builder isFsfLibre( boolean isFsfLibre )
{
this.isFsfLibre = isFsfLibre;
return this;
}
public Builder detailsUrl( String detailsUrl )
{
this.detailsUrl = detailsUrl;
return this;
}
public Builder reference( String reference )
{
this.reference = reference;
return this;
}
public Builder referenceNumber( int referenceNumber )
{
this.referenceNumber = referenceNumber;
return this;
}
public Builder name( String name )
{
this.name = name;
return this;
}
public Builder licenseId( String licenseId )
{
this.licenseId = licenseId;
return this;
}
public Builder seeAlso( String seeAlso )
{
this.seeAlso.add( seeAlso );
return this;
}
public Builder urlInfo( String url, String sha1, String mimeType, boolean stable )
{
this.urlInfos.put( url, new UrlInfo( sha1, mimeType, stable ) );
return this;
}
public Builder isOsiApproved( boolean isOsiApproved )
{
this.isOsiApproved = isOsiApproved;
return this;
}
public SpdxLicenseInfo build()
{
Objects.requireNonNull( isDeprecatedLicenseId, "isDeprecatedLicenseId" );
Objects.requireNonNull( detailsUrl, "detailsUrl" );
Objects.requireNonNull( reference, "reference" );
Objects.requireNonNull( referenceNumber, "referenceNumber" );
Objects.requireNonNull( name, "name" );
Objects.requireNonNull( licenseId, "licenseId" );
Objects.requireNonNull( isOsiApproved, "isOsiApproved" );
if ( seeAlso.isEmpty() )
{
throw new IllegalStateException( "seeAlso cannot be empty" );
}
final List sa = Collections.unmodifiableList( seeAlso );
seeAlso = null;
final Map uis = Collections.unmodifiableMap( urlInfos );
urlInfos = null;
return new SpdxLicenseInfo( reference, isDeprecatedLicenseId, isFsfLibre, detailsUrl, referenceNumber, name,
licenseId, sa, isOsiApproved, new Attachments( uis ) );
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy