package dk.itu.smdp.group2.converter;
import org.eclipse.xtext.conversion.IValueConverter;
import org.eclipse.xtext.conversion.ValueConverter;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.util.Strings;
/**
* A value converter responsible for converting the keywords 'long' and 'short'
* to integers
*/
public class TextQuestionLengthConverter extends org.eclipse.xtext.common.services.DefaultTerminalConverters{
@ValueConverter(rule = "SHORT_LONG")
public IValueConverter<Integer> SHORT_LONG() {
return new IValueConverter<Integer>() {
public Integer toValue(String string, INode node) {
if (Strings.isEmpty(string))
throw new ValueConverterException("Couldn't convert empty string to int", node, null);
else if ("short".equals(string.trim()))
return 1;
else if ("long".equals(string.trim()))
return 5;
try {
return Integer.parseInt(string);
} catch (NumberFormatException e) {
throw new ValueConverterException("Couldn't convert '"+string+"' to int", node, e);
}
}
public String toString(Integer value) {
return Integer.toString(value);
}
};
}
}