001 /* 002 * #%L 003 * License Maven Plugin 004 * 005 * $Id: License.java 14664 2011-09-09 07:47:49Z tchemit $ 006 * $HeadURL: http://svn.codehaus.org/mojo/tags/license-maven-plugin-1.0/src/main/java/org/codehaus/mojo/license/model/License.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 026 package org.codehaus.mojo.license.model; 027 028 import org.apache.commons.lang.builder.ToStringBuilder; 029 import org.apache.commons.lang.builder.ToStringStyle; 030 import org.codehaus.mojo.license.MojoHelper; 031 import org.codehaus.plexus.util.IOUtil; 032 033 import java.io.BufferedReader; 034 import java.io.IOException; 035 import java.io.InputStreamReader; 036 import java.io.Reader; 037 import java.net.URL; 038 039 /** 040 * The model of a license. 041 * 042 * @author tchemit <chemit@codelutin.com> 043 * @since 1.0 044 */ 045 public class License 046 { 047 048 public static final String LICENSE_HEADER_FILE = "header.txt"; 049 050 public static final String LICENSE_CONTENT_FILE = "license.txt"; 051 052 /** 053 * base url of license (directory where to find license files) 054 */ 055 protected URL baseURL; 056 057 /** 058 * the name of the licenses (ex lgpl-3.0) 059 */ 060 protected String name; 061 062 /** 063 * the description of the license 064 */ 065 protected String description; 066 067 /** 068 * url of the license's content 069 */ 070 protected URL licenseURL; 071 072 /** 073 * url of the license header's content 074 */ 075 protected URL headerURL; 076 077 public License() 078 { 079 } 080 081 public String getName() 082 { 083 return name; 084 } 085 086 public URL getLicenseURL() 087 { 088 if ( licenseURL == null ) 089 { 090 licenseURL = MojoHelper.getUrl( getBaseURL(), LICENSE_CONTENT_FILE ); 091 } 092 return licenseURL; 093 } 094 095 public URL getHeaderURL() 096 { 097 if ( headerURL == null ) 098 { 099 headerURL = MojoHelper.getUrl( getBaseURL(), LICENSE_HEADER_FILE ); 100 } 101 return headerURL; 102 } 103 104 public String getDescription() 105 { 106 return description; 107 } 108 109 public URL getBaseURL() 110 { 111 return baseURL; 112 } 113 114 public String getLicenseContent( String encoding ) 115 throws IOException 116 { 117 if ( baseURL == null ) 118 { 119 throw new IllegalStateException( "no baseURL defined, can not obtain license content in " + this ); 120 } 121 122 Reader r = new BufferedReader( new InputStreamReader( getLicenseURL().openStream(), encoding ) ); 123 try 124 { 125 return IOUtil.toString( r ); 126 } 127 finally 128 { 129 r.close(); 130 } 131 } 132 133 public String getHeaderContent( String encoding ) 134 throws IOException 135 { 136 if ( baseURL == null ) 137 { 138 throw new IllegalStateException( "no baseURL defined, can not obtain header content in " + this ); 139 } 140 Reader r = new BufferedReader( new InputStreamReader( getHeaderURL().openStream(), encoding ) ); 141 try 142 { 143 return IOUtil.toString( r ); 144 } 145 finally 146 { 147 r.close(); 148 } 149 } 150 151 public void setName( String name ) 152 { 153 this.name = name; 154 } 155 156 public void setDescription( String description ) 157 { 158 this.description = description; 159 } 160 161 public void setBaseURL( URL baseURL ) 162 { 163 this.baseURL = baseURL; 164 } 165 166 public void setLicenseURL( URL licenseURL ) 167 { 168 this.licenseURL = licenseURL; 169 } 170 171 public void setHeaderURL( URL headerURL ) 172 { 173 this.headerURL = headerURL; 174 } 175 176 @Override 177 public String toString() 178 { 179 ToStringBuilder builder = new ToStringBuilder( this, ToStringStyle.MULTI_LINE_STYLE ); 180 builder.append( "name", name ); 181 builder.append( "description", description ); 182 builder.append( "licenseURL", licenseURL ); 183 builder.append( "headerURL", headerURL ); 184 return builder.toString(); 185 } 186 }