001 /* 002 * #%L 003 * License Maven Plugin 004 * 005 * $Id: LicenseMap.java 14409 2011-08-10 15:30:41Z tchemit $ 006 * $HeadURL: http://svn.codehaus.org/mojo/tags/license-maven-plugin-1.0/src/main/java/org/codehaus/mojo/license/model/LicenseMap.java $ 007 * %% 008 * Copyright (C) 2008 - 2011 CodeLutin, Codehaus, Tony Chemit 009 * %% 010 * This program is free software: you can redistribute it and/or modify 011 * it under the terms of the GNU Lesser General Public License as 012 * published by the Free Software Foundation, either version 3 of the 013 * License, or (at your option) any later version. 014 * 015 * This program is distributed in the hope that it will be useful, 016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 018 * GNU General Lesser Public License for more details. 019 * 020 * You should have received a copy of the GNU General Lesser Public 021 * License along with this program. If not, see 022 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 023 * #L% 024 */ 025 package org.codehaus.mojo.license.model; 026 027 import java.util.ArrayList; 028 import java.util.Collections; 029 import java.util.Comparator; 030 import java.util.HashSet; 031 import java.util.List; 032 import java.util.Map; 033 import java.util.Set; 034 import java.util.SortedMap; 035 import java.util.SortedSet; 036 import java.util.TreeMap; 037 import java.util.TreeSet; 038 039 import org.apache.maven.project.MavenProject; 040 import org.codehaus.mojo.license.MojoHelper; 041 042 /** 043 * Map of artifacts (stub in mavenproject) group by their license. 044 * 045 * @author tchemit <chemit@codelutin.com> 046 * @since 1.0 047 */ 048 public class LicenseMap extends TreeMap<String, SortedSet<MavenProject>> { 049 050 private static final long serialVersionUID = 864199843545688069L; 051 052 public static final String unknownLicenseMessage = "Unknown license"; 053 054 private final Comparator<MavenProject> projectComparator; 055 056 public LicenseMap() { 057 projectComparator = MojoHelper.newMavenProjectComparator(); 058 } 059 060 public SortedSet<MavenProject> put(String key, MavenProject value) { 061 062 // handle multiple values as a set to avoid duplicates 063 SortedSet<MavenProject> valueList = get(key); 064 if (valueList == null) { 065 066 valueList = new TreeSet<MavenProject>(projectComparator); 067 } 068 069 valueList.add(value); 070 return put(key, valueList); 071 } 072 073 public SortedMap<MavenProject, String[]> toDependencyMap() { 074 SortedMap<MavenProject, Set<String>> tmp = new TreeMap<MavenProject, Set<String>>(projectComparator); 075 076 for (Map.Entry<String, SortedSet<MavenProject>> entry : entrySet()) { 077 String license = entry.getKey(); 078 SortedSet<MavenProject> set = entry.getValue(); 079 for (MavenProject p : set) { 080 Set<String> list = tmp.get(p); 081 if (list == null) { 082 list = new HashSet<String>(); 083 tmp.put(p, list); 084 } 085 list.add(license); 086 } 087 } 088 089 SortedMap<MavenProject, String[]> result = new TreeMap<MavenProject, String[]>(projectComparator); 090 for (Map.Entry<MavenProject, Set<String>> entry : tmp.entrySet()) { 091 List<String> value = new ArrayList<String>(entry.getValue()); 092 Collections.sort(value); 093 result.put(entry.getKey(), value.toArray(new String[value.size()])); 094 } 095 tmp.clear(); 096 return result; 097 } 098 099 public static String getUnknownLicenseMessage() { 100 return unknownLicenseMessage; 101 } 102 103 }