1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.creadur.whisker.model;
20
21 import java.util.Set;
22 import java.util.TreeSet;
23
24 /**
25 * Collates licenses and organisations.
26 */
27 public class LicenseAndOrganisationCollator extends Visitor {
28 /** The licenses currently collected. */
29 private final Set<License> licenses = new TreeSet<License>();
30 /** The organisations currently collected. */
31 private final Set<Organisation> organisations = new TreeSet<Organisation>();
32
33 /**
34 * Gets the licenses collected.
35 * @return not null
36 */
37 public Set<License> getLicenses() {
38 return this.licenses;
39 }
40
41 /**
42 * Gets the organisations collected.
43 * @return not null
44 */
45 public Set<Organisation> getOrganisation() {
46 return this.organisations;
47 }
48
49 /**
50 * Don't traverse resources.
51 * @see Visitor#traverseResource()
52 * @return false
53 */
54 @Override
55 public boolean traverseResource() {
56 return false;
57 }
58
59 /**
60 * Visits {@link WithLicense}.
61 * @see Visitor#visit(WithLicense)
62 * @param license not null
63 */
64 @Override
65 public void visit(final WithLicense license) {
66 this.licenses.add(license.getLicense());
67 }
68
69 /**
70 * Was this the only license collected?
71 * @param license not null
72 * @return true when the collection contains just this license,
73 * false when no licenses or any other licenses were collected
74 */
75 public boolean isOnlyLicense(final License license) {
76 return (this.licenses.size() == 1) && this.licenses.contains(license);
77 }
78
79 /**
80 * Visits {@link ByOrganisation}.
81 * @see Visitor#visit(ByOrganisation)
82 * @param byOrganisation not null
83 */
84 @Override
85 public void visit(final ByOrganisation byOrganisation) {
86 this.organisations.add(byOrganisation.getOrganisation());
87 }
88
89 /**
90 * Something useful for logging.
91 * @see java.lang.Object#toString()
92 * @return something for logging
93 */
94 @Override
95 public String toString() {
96 return "LicenseAndOrganisationCollator [licenses=" + this.licenses
97 + ", organisations=" + this.organisations + "]";
98 }
99
100 /**
101 * Is there only one organisation collected with the given id?
102 * @param primaryOrganisationId not null
103 * @return true when only one organisation has been collected
104 * and it has the given id
105 */
106 public boolean isOnlyOrganisation(final String primaryOrganisationId) {
107 return this.organisations.size() == 1
108 && this.organisations.iterator().next().getId()
109 .equals(primaryOrganisationId);
110 }
111 }