![JAR search and dependency download from the Maven repository](/logo.png)
net.sf.yal10n.analyzer.ResourceAnalyzer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of yal10n-maven-plugin Show documentation
Show all versions of yal10n-maven-plugin Show documentation
Yet Another L10N Maven Plugin
The newest version!
package net.sf.yal10n.analyzer;
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sf.yal10n.settings.DashboardConfiguration;
import net.sf.yal10n.settings.Repository;
import net.sf.yal10n.svn.RepositoryUtil;
import net.sf.yal10n.svn.SVNUtil;
import org.apache.maven.plugin.logging.Log;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.FileUtils;
/**
* The {@link ResourceAnalyzer} scans a directory for resource bundles.
*/
@Component( role = ResourceAnalyzer.class, hint = "ResourceAnalyzer" )
public class ResourceAnalyzer
{
@Requirement
private SVNUtil svn;
private Map bundles = new HashMap();
/**
* Instantiates a new resource analyzer.
*/
public ResourceAnalyzer()
{
super();
}
/**
* Creates a new resource analyzer.
* @param svn the svn utility
*/
public ResourceAnalyzer( SVNUtil svn )
{
this.svn = svn;
}
/**
* Gets the found resource bundles sorted by project name.
* @return a list of the found resource bundles.
*/
public List getBundles()
{
List result = new ArrayList( bundles.values() );
Collections.sort( result, new Comparator() {
@Override
public int compare( ResourceBundle o1, ResourceBundle o2 )
{
return o1.getLocaleBasePath().compareTo( o2.getLocaleBasePath() );
}
} );
return result;
}
/**
* Analyzes the given dstPath and adds any resource bundles found.
*
* @param log the log
* @param svnUrl the svn url
* @param dstPath the dst path
* @param config the config
* @param repo the repo
* @param repoId the repo id
*/
public void analyze( Log log, String svnUrl, String dstPath, DashboardConfiguration config, Repository repo,
String repoId )
{
DirectoryScanner scanner = new DirectoryScanner();
Set allIncludes = new HashSet();
if ( config.getIncludes() != null )
{
allIncludes.addAll( config.getIncludes() );
}
if ( repo.getIncludes() != null )
{
allIncludes.addAll( repo.getIncludes() );
}
Set allExcludes = new HashSet();
if ( config.getExcludes() != null )
{
allExcludes.addAll( config.getExcludes() );
}
if ( repo.getExcludes() != null )
{
allExcludes.addAll( repo.getExcludes() );
}
scanner.setBasedir( dstPath );
scanner.setIncludes( allIncludes.toArray( new String[allIncludes.size()] ) );
scanner.setExcludes( allExcludes.toArray( new String[allExcludes.size()] ) );
scanner.scan();
String[] includedFiles = scanner.getIncludedFiles();
Arrays.sort( includedFiles );
for ( String s : includedFiles )
{
try
{
log.debug( "found: " + s );
String fullDstPath = new File( dstPath ).getCanonicalPath();
String svnPath = RepositoryUtil.getCheckoutUrl( config, repo ) + "/" + s;
ResourceFile resourceFile = new ResourceFile( config, repo, svnUrl, dstPath, s, svn, svnPath );
String baseBundleName = resourceFile.getBundleBaseName();
ResourceBundle bundle = bundles.get( baseBundleName );
if ( bundle == null )
{
String svnBaseUrl = svnUrl + "/" + FileUtils.basename( s );
if ( svnBaseUrl.endsWith( "." ) )
{
svnBaseUrl = svnBaseUrl.substring( 0, svnBaseUrl.length() - 1 );
}
bundle = new ResourceBundle( config, svnBaseUrl, repoId, baseBundleName, fullDstPath );
bundles.put( baseBundleName, bundle );
}
bundle.addFile( resourceFile );
}
catch ( Exception e )
{
throw new RuntimeException( e );
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy