public void readColumn(XMLStreamReader reader, AttributeTableImpl table) throws XMLStreamException {
int index = 0;
String id = "";
String title = "";
AttributeType type = AttributeType.STRING;
AttributeOrigin origin = AttributeOrigin.DATA;
String defaultValue = "";
boolean end = false;
String name = null;
while (reader.hasNext() && !end) {
int t = reader.next();
switch (t) {
case XMLStreamReader.START_ELEMENT:
name = reader.getLocalName();
break;
case XMLStreamReader.CHARACTERS:
if (!reader.isWhiteSpace()) {
if (ELEMENT_COLUMN_INDEX.equalsIgnoreCase(name)) {
index = Integer.parseInt(reader.getText());
} else if (ELEMENT_COLUMN_ID.equalsIgnoreCase(name)) {
id += reader.getText();
} else if (ELEMENT_COLUMN_TITLE.equalsIgnoreCase(name)) {
title += reader.getText();
} else if (ELEMENT_COLUMN_TYPE.equalsIgnoreCase(name)) {
type = AttributeType.valueOf(reader.getText());
} else if (ELEMENT_COLUMN_ORIGIN.equalsIgnoreCase(name)) {
origin = AttributeOrigin.valueOf(reader.getText());
} else if (ELEMENT_COLUMN_DEFAULT.equalsIgnoreCase(name)) {
if (!reader.getText().isEmpty()) {
defaultValue += reader.getText();
}
}
}
break;
case XMLStreamReader.END_ELEMENT:
if (ELEMENT_COLUMN.equalsIgnoreCase(reader.getLocalName())) {
end = true;
}
break;
}
}
Object defaultVal = !defaultValue.isEmpty() ? type.parse(defaultValue) : null;
if (!table.hasColumn(title)) {
table.addColumn(id, title, type, origin, defaultVal);
} else {
table.replaceColumn(table.getColumn(title), id, title, type, origin, defaultVal);
}