f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden/*
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * The contents of this file are subject to the terms of the Common Development and
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Distribution License (the License). You may not use this file except in compliance with the
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * License.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * specific language governing permission and limitations under the License.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * When distributing Covered Software, include this CDDL Header Notice in each file and include
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Header, with the fields enclosed by brackets [] replaced by your own identifying
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * information: "Portions copyright [year] [name of copyright owner]".
f2fd1e141349fb083bda610ac06557010f0395e4Phill Cunnington *
f2fd1e141349fb083bda610ac06557010f0395e4Phill Cunnington * Copyright 2014-2015 ForgeRock AS.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Maddenpackage org.forgerock.openam.license;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Maddenimport java.util.Iterator;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Maddenimport java.util.List;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden/**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Represents a set of licenses that must be accepted in order for the product to be installed.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @since 12.0.0
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Maddenpublic class LicenseSet implements Iterable<License> {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden private final List<License> licenses;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden /**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Initialises the license set with the given list of required licenses.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @param licenses the licenses that are required.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @throws NullPointerException if the list of licenses is null.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public LicenseSet(List<License> licenses) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden if (licenses == null) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden throw new NullPointerException("Null license set");
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden this.licenses = licenses;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden /**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Returns the list of licenses to be accepted.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @return the list of licenses.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public List<License> getLicenses() {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return licenses;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden /**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Accepts all licenses in the license set.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public void acceptAll() {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden for (License license : licenses) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden license.accept();
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden /**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * Checks whether all of the licenses in the license set have been accepted.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @return true if all licenses have been accepted, otherwise false.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public boolean isAccepted() {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden for (License license : licenses) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden if (!license.isAccepted()) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return false;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return true;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden /**
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * {@inheritDoc}
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden *
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden * @return an iterator over the required licenses, in order.
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden */
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public Iterator<License> iterator() {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return licenses.iterator();
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden @Override
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public boolean equals(Object o) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden if (this == o) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return true;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden if (o == null || !(o instanceof LicenseSet)) {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return false;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden LicenseSet that = (LicenseSet) o;
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return licenses.equals(that.licenses);
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden @Override
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden public int hashCode() {
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden return licenses.hashCode();
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden }
f17d26e15ce909e88e2ee93efde3a8ed3c585f27Neil Madden}