public Cube createCube(String xml) {
RolapCube cube;
try {
final Parser xmlParser = XOMUtil.createDefaultParser();
final DOMWrapper def = xmlParser.parse(xml);
final String tagName = def.getTagName();
if (tagName.equals("Cube")) {
final MondrianDef.Schema xmlSchema = new MondrianDef.Schema();
MondrianDef.Cube xmlDimension = new MondrianDef.Cube(def);
cube = new RolapCube(this, xmlSchema, xmlDimension, false);
} else if (tagName.equals("VirtualCube")) {
MondrianDef.Schema xmlSchema = getXMLSchema();
MondrianDef.VirtualCube xmlDimension =
new MondrianDef.VirtualCube(def);
cube = new RolapCube(this, xmlSchema, xmlDimension, false);
} else {
throw new XOMException(
"Got <" + tagName + "> when expecting <Cube>");
}
} catch (XOMException e) {
throw Util.newError(
e,
"Error while creating cube from XML [" + xml + "]");
}
return cube;
}