}
}
private AbstractTask parseAbstractTask(Node taskNode, CompositeCheatSheetModel model) {
AbstractTask task;
NamedNodeMap attributes = taskNode.getAttributes();
String kind = null;
String name = null;
String id = null;
boolean skippable = false;
if (attributes != null) {
for (int x = 0; x < attributes.getLength(); x++) {
Node attribute = attributes.item(x);
String attributeName = attribute.getNodeName();
if (attribute == null || attributeName == null)
continue;
if (attributeName.equals(ICompositeCheatsheetTags.KIND)) {
kind = attribute.getNodeValue();
}
if (attributeName.equals(ICompositeCheatsheetTags.NAME)) {
name= attribute.getNodeValue();
}
if (attributeName.equals(IParserTags.ID)) {
id = attribute.getNodeValue();
}
if (attributeName.equals(IParserTags.SKIP)) {
skippable = "true".equalsIgnoreCase(attribute.getNodeValue()); //$NON-NLS-1$
}
}
}
String nodeName = taskNode.getNodeName();
if (id == null) {
id = autoGenerateId();
}
if (name == null) {
String message = NLS.bind(Messages.ERROR_PARSING_TASK_NO_NAME, (new Object[] {nodeName}));
addStatus(IStatus.ERROR, message, null);
}
task = createTask(nodeName, model, kind, id, name);
task.setSkippable(skippable);
if (model.getDependencies().getTask(id) != null) {
String message = NLS.bind(Messages.ERROR_PARSING_DUPLICATE_TASK_ID, (new Object[] {id, }));
addStatus(IStatus.ERROR, message, null);
} else {