*/
protected DocumentNode getInsertNode(WikiDataRequest request) throws org.dbwiki.exception.WikiException {
SchemaNode schemaNode = database().schema().get(Integer.parseInt(request.parameters().get(RequestParameter.ActionValueSchemaNode).value()));
if (schemaNode.isAttribute()) {
AttributeSchemaNode attributeSchemaNode = (AttributeSchemaNode)schemaNode;
DocumentAttributeNode attribute = new DocumentAttributeNode(attributeSchemaNode);
RequestParameter parameter = request.parameters().get(RequestParameter.TextFieldIndicator + attributeSchemaNode.id());
if (parameter.hasValue()) {
if (!parameter.value().equals("")) {
attribute.setValue(parameter.value());
}
}
return attribute;
} else {
Hashtable<Integer, DocumentGroupNode> groupIndex = new Hashtable<Integer, DocumentGroupNode>();
DocumentGroupNode root = SchemaNode.createGroupNode((GroupSchemaNode)schemaNode, groupIndex);
for (int iParameter = 0; iParameter < request.parameters().size(); iParameter++) {
RequestParameter parameter = request.parameters().get(iParameter);
if ((parameter.name().startsWith(RequestParameter.TextFieldIndicator)) && (parameter.hasValue())) {
if (!parameter.value().equals("")) {
SchemaNode child = database().schema().get(Integer.parseInt(parameter.name().substring(RequestParameter.TextFieldIndicator.length())));
if (child.isAttribute()) {
DocumentAttributeNode attribute = new DocumentAttributeNode((AttributeSchemaNode)child);
attribute.setValue(parameter.value());
groupIndex.get(new Integer(attribute.schema().parent().id())).children().add(attribute);
}
}
}
}
DocumentGroupNode.removeEmptyNodes(root);