package org.freeplane.core.util;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang.StringUtils;
public class ConfigurationUtils {
private static final String CONFIG_LIST_VALUE_SEPARATOR_STRICT = File.pathSeparator + File.pathSeparator;
private static final String CONFIG_LIST_VALUE_SEPARATOR_ONE_OR_MORE = File.pathSeparator + '+';
/** if not requireTwo one pathseparator suffices otherwise two are required. */
public static List<String> decodeListValue(final String value, boolean requireTwo) {
if (value.length() == 0)
return Collections.emptyList();
final String sep = requireTwo ? CONFIG_LIST_VALUE_SEPARATOR_STRICT : CONFIG_LIST_VALUE_SEPARATOR_ONE_OR_MORE;
return Arrays.asList(value.split("\\s*" + sep + "\\s*"));
}
/** if not requireTwo one pathseparator suffices otherwise two are required. */
public static String encodeListValue(final List<String> list, boolean requireTwo) {
return StringUtils.join(list.iterator(), requireTwo ? CONFIG_LIST_VALUE_SEPARATOR_STRICT
: CONFIG_LIST_VALUE_SEPARATOR_ONE_OR_MORE);
}
public static File getLocalizedFile(final File[] baseDirs, final String document, final String languageCode) {
final int extPosition = document.lastIndexOf('.');
final String localizedDocument;
if (extPosition != -1) {
localizedDocument = document.substring(0, extPosition) + "_" + languageCode + document.substring(extPosition);
}
else{
localizedDocument = document;
}
for(File baseDir : baseDirs){
if(baseDir != null){
final File localFile = new File(baseDir, localizedDocument);
if (localFile.canRead()) {
return localFile;
}
final File file = new File(baseDir, document);
if (file.canRead()) {
return file;
}
}
}
return null;
}
}