package com.inet.gradle.setup.abstracts;
import java.io.File;
import java.util.List;
import java.util.Locale;
import org.gradle.util.ConfigureUtil;
import com.inet.gradle.setup.SetupBuilder;
import groovy.lang.Closure;
/**
* Stub Object for localized resources
* @author Gerry Weißbach
*
*/
public class LocalizedResource {
private Locale locale;
private Object resource;
private SetupBuilder setup;
/**
* Stub Object for localized resources
* @param setup the setup
*/
public LocalizedResource( SetupBuilder setup ) {
this.setup = setup;
}
/**
* @return the resource as file
*/
public File getResource() {
if ( resource != null ) {
return setup.getProject().file( resource );
}
return null;
}
/**
* @return the locale
*/
public Locale getLocale() {
return locale;
}
/**
* @return the language
*/
public String getLanguage() {
return locale.getLanguage();
}
/**
* @param locale the locale to set
*/
public void setLocale(String locale) {
this.locale = new Locale( locale );
}
/**
* @param resource the resource to set
*/
public void setResource(Object resource) {
this.resource = resource;
}
/**
* Return the localized file for a specific locale
* @param list from which to receive the resource
* @param locale for which to get the file
* @return license file
*/
public static File getLocalizedResourceFile( List<LocalizedResource> list, String locale ) {
for (LocalizedResource res : list) {
if ( locale.equalsIgnoreCase( res.getLanguage()) ) {
return res.getResource();
}
}
return null;
}
/**
* Set the license file
* @param parent the setup builder
* @param holder the list to add the entry to
* @param resource file file or closure
*/
public static void addLocalizedResource( SetupBuilder parent, List<LocalizedResource> holder, Object resource ) {
LocalizedResource res = new LocalizedResource( parent );
if ( resource instanceof Closure<?> ) {
res = ConfigureUtil.configure((Closure<?>)resource, res);
} else {
res.setLocale( parent.getDefaultResourceLanguage() );
res.setResource( resource );
}
holder.add( res );
}
}