001 /* 002 * #%L 003 * License Maven Plugin 004 * 005 * $Id: AbstractLicenseNameMojo.java 13616 2011-02-14 11:38:39Z tchemit $ 006 * $HeadURL: http://svn.codehaus.org/mojo/tags/license-maven-plugin-1.0/src/main/java/org/codehaus/mojo/license/AbstractLicenseNameMojo.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; 027 028 import org.apache.commons.lang.StringUtils; 029 import org.codehaus.mojo.license.model.License; 030 import org.codehaus.mojo.license.model.LicenseStore; 031 032 import java.util.Arrays; 033 034 /** 035 * Abstract mojo which using a {@link #licenseName} and owns a 036 * {@link #licenseStore}. 037 * 038 * @author tchemit <chemit@codelutin.com> 039 * @since 1.0 040 */ 041 public abstract class AbstractLicenseNameMojo 042 extends AbstractLicenseMojo 043 { 044 045 /** 046 * To specify an external extra licenses repository resolver (says the base 047 * url of the repository where the {@code license.properties} is present). 048 * 049 * @parameter expression="${license.licenseResolver}" 050 * @since 1.0 051 */ 052 private String licenseResolver; 053 054 /** 055 * A flag to keep a backup of every modified file. 056 * 057 * @parameter expression="${license.keepBackup}" default-value="false" 058 * @since 1.0 059 */ 060 private boolean keepBackup; 061 062 /** 063 * Name of the license to use in the project. 064 * 065 * @parameter expression="${license.licenseName}" 066 * @since 1.0 067 */ 068 private String licenseName; 069 070 /** 071 * License loaded from the {@link #licenseName}. 072 */ 073 private License license; 074 075 /** 076 * Store of available licenses. 077 */ 078 private LicenseStore licenseStore; 079 080 /** 081 * When is sets to {@code true}, will skip execution. 082 * <p/> 083 * This will take effects in method {@link #checkSkip()}. 084 * So the method {@link #doAction()} will never be invoked. 085 * 086 * @return {@code true} if goal will not be executed 087 */ 088 public abstract boolean isSkip(); 089 090 /** 091 * Changes internal state {@code skip} to execute (or not) goal. 092 * 093 * @param skip new state value 094 */ 095 public abstract void setSkip( boolean skip ); 096 097 @Override 098 protected boolean checkSkip() 099 { 100 if ( isSkip() ) 101 { 102 getLog().info( "skip flag is on, will skip goal." ); 103 return false; 104 } 105 return super.checkSkip(); 106 } 107 108 @Override 109 protected void init() 110 throws Exception 111 { 112 113 if ( isSkip() ) 114 { 115 return; 116 } 117 118 // init licenses store 119 licenseStore = LicenseStore.createLicenseStore( getLog(), getLicenseResolver() ); 120 121 // check licenseName exists 122 license = getLicense( licenseName, true ); 123 } 124 125 public License getLicense( String licenseName, boolean checkIfExists ) 126 throws IllegalArgumentException, IllegalStateException 127 { 128 if ( StringUtils.isEmpty( licenseName ) ) 129 { 130 throw new IllegalArgumentException( "licenseName can not be null, nor empty" ); 131 } 132 LicenseStore licenseStore = getLicenseStore(); 133 if ( licenseStore == null ) 134 { 135 throw new IllegalStateException( "No license store initialized!" ); 136 } 137 License license = licenseStore.getLicense( licenseName ); 138 if ( checkIfExists && license == null ) 139 { 140 throw new IllegalArgumentException( "License named '" + licenseName + "' is unknown, use one of " + 141 Arrays.toString( licenseStore.getLicenseNames() ) ); 142 } 143 return license; 144 } 145 146 public boolean isKeepBackup() 147 { 148 return keepBackup; 149 } 150 151 public String getLicenseName() 152 { 153 return licenseName; 154 } 155 156 public String getLicenseResolver() 157 { 158 return licenseResolver; 159 } 160 161 public LicenseStore getLicenseStore() 162 { 163 return licenseStore; 164 } 165 166 public License getLicense() 167 { 168 return license; 169 } 170 171 public void setKeepBackup( boolean keepBackup ) 172 { 173 this.keepBackup = keepBackup; 174 } 175 176 public void setLicenseResolver( String licenseResolver ) 177 { 178 this.licenseResolver = licenseResolver; 179 } 180 181 public void setLicenseName( String licenseName ) 182 { 183 this.licenseName = licenseName; 184 } 185 186 public void setLicenseStore( LicenseStore licenseStore ) 187 { 188 this.licenseStore = licenseStore; 189 } 190 191 }