package net.techreadiness.ui.tags.datagrid;
import java.util.List;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.ValidationMessage;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.Lists;
public class DataGridTagExtraInfo extends TagExtraInfo {
private static final String SELECTABLE = "selectable";
private static final String ROW_VALUE = "rowValue";
private static final String INLINE_EDITABLE = "inlineEditable";
private static final String INLINE_SAVE_ACTION = "inlineSaveAction";
@Override
public ValidationMessage[] validate(TagData data) {
List<ValidationMessage> messages = Lists.newArrayList();
if (!isRequestTimeValue(data, SELECTABLE)) {
boolean selectable = Boolean.parseBoolean(data.getAttributeString(SELECTABLE));
if (selectable && StringUtils.isBlank(data.getAttributeString(ROW_VALUE))) {
ValidationMessage message = new ValidationMessage(ROW_VALUE,
"If the data grid is selectable the 'rowValue' attribute must be spedified.");
messages.add(message);
}
}
if (!isRequestTimeValue(data, INLINE_EDITABLE)) {
boolean inlineEditable = Boolean.parseBoolean(data.getAttributeString(INLINE_EDITABLE));
if (inlineEditable && StringUtils.isBlank(data.getAttributeString(INLINE_SAVE_ACTION))) {
ValidationMessage message = new ValidationMessage(INLINE_SAVE_ACTION,
"If the data grid is inline editable the 'inlineSaveAction' attribute must be spedified.");
messages.add(message);
}
}
return messages.toArray(new ValidationMessage[messages.size()]);
}
private static boolean isRequestTimeValue(TagData data, String attributeName) {
Object value = data.getAttribute(attributeName);
return value != null && TagData.REQUEST_TIME_VALUE.equals(value);
}
}