package fr.ens.biologie.genomique.eoulsan.core;
import static com.google.common.base.CharMatcher.inRange;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.CharMatcher;
/**
* This class contains methods to validate workflow object names.
* @author Laurent Jourdren
* @since 2.0
*/
public class Naming {
public static final CharMatcher ASCII_LETTER_OR_DIGIT =
inRange('a', 'z').or(inRange('A', 'Z')).or(inRange('0', '9'));
/**
* Convert a string to a valid name string that can be used for step id or
* data name.
* @param name the name to convert
* @return a string with only the name characters argument that are allowed by
* the file naming convention
*/
public static final String toValidName(final String name) {
checkNotNull(name, "name argument cannot be null");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < name.length(); i++) {
final char c = name.charAt(i);
if (ASCII_LETTER_OR_DIGIT.matches(c)) {
sb.append(c);
}
}
return sb.toString();
}
//
// Constructor
//
/**
* Private constructor.
*/
private Naming() {
}
}