001 /*
002 // This java file was automatically generated
003 // from XOM model 'mondrian'
004 // on Tue Aug 05 08:42:46 GMT-08:00 2008
005 // Do not edit this file by hand.
006 */
007
008 package mondrian.olap;
009 import mondrian.rolap.sql.SqlQuery;
010 /**
011 * This is the XML model for Mondrian schemas.
012 * Revision is $Id: //open/mondrian-release/3.0/src/main/mondrian/olap/Mondrian.xml#3 $
013 * <p>This class was generated from XOM model 'mondrian' on Tue Aug 05 08:42:46 GMT-08:00 2008
014 */
015 public class MondrianDef {
016
017 public static java.lang.Class getXMLDefClass()
018 {
019 return MondrianDef.class;
020 }
021
022 public static String[] _elements = {
023 "Schema",
024 "CubeDimension",
025 "Cube",
026 "VirtualCube",
027 "CubeUsages",
028 "CubeUsage",
029 "VirtualCubeDimension",
030 "VirtualCubeMeasure",
031 "DimensionUsage",
032 "Dimension",
033 "Hierarchy",
034 "Level",
035 "Closure",
036 "Property",
037 "Measure",
038 "CalculatedMember",
039 "CalculatedMemberProperty",
040 "NamedSet",
041 "Formula",
042 "MemberReaderParameter",
043 "RelationOrJoin",
044 "Relation",
045 "View",
046 "SQL",
047 "Join",
048 "Table",
049 "InlineTable",
050 "ColumnDefs",
051 "ColumnDef",
052 "Rows",
053 "Row",
054 "Value",
055 "AggTable",
056 "AggName",
057 "AggPattern",
058 "AggExclude",
059 "AggColumnName",
060 "AggFactCount",
061 "AggIgnoreColumn",
062 "AggForeignKey",
063 "AggLevel",
064 "AggMeasure",
065 "Expression",
066 "Column",
067 "ExpressionView",
068 "KeyExpression",
069 "ParentExpression",
070 "OrdinalExpression",
071 "NameExpression",
072 "CaptionExpression",
073 "MeasureExpression",
074 "Role",
075 "Grant",
076 "SchemaGrant",
077 "CubeGrant",
078 "DimensionGrant",
079 "HierarchyGrant",
080 "MemberGrant",
081 "Union",
082 "RoleUsage",
083 "UserDefinedFunction",
084 "Parameter"
085 };
086
087 /**
088 * A schema is a collection of cubes and virtual cubes.
089 * It can also contain shared dimensions (for use by those
090 * cubes), named sets, roles, and declarations of
091 * user-defined functions.
092 */
093 public static class Schema extends org.eigenbase.xom.ElementDef
094 {
095 public Schema()
096 {
097 }
098
099 public Schema(org.eigenbase.xom.DOMWrapper _def)
100 throws org.eigenbase.xom.XOMException
101 {
102 try {
103 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
104 _parser = _parser;
105 org.eigenbase.xom.NodeDef[] _tempArray = null;
106 _tempArray = _tempArray;
107 name = (String)_parser.getAttribute("name", "String", null, null, true);
108 measuresCaption = (String)_parser.getAttribute("measuresCaption", "String", null, null, false);
109 defaultRole = (String)_parser.getAttribute("defaultRole", "String", null, null, false);
110 _tempArray = _parser.getArray(Parameter.class, 0, 0);
111 parameters = new Parameter[_tempArray.length];
112 for(int _i=0; _i<parameters.length; _i++)
113 parameters[_i] = (Parameter)_tempArray[_i];
114 _tempArray = _parser.getArray(Dimension.class, 0, 0);
115 dimensions = new Dimension[_tempArray.length];
116 for(int _i=0; _i<dimensions.length; _i++)
117 dimensions[_i] = (Dimension)_tempArray[_i];
118 _tempArray = _parser.getArray(Cube.class, 0, 0);
119 cubes = new Cube[_tempArray.length];
120 for(int _i=0; _i<cubes.length; _i++)
121 cubes[_i] = (Cube)_tempArray[_i];
122 _tempArray = _parser.getArray(VirtualCube.class, 0, 0);
123 virtualCubes = new VirtualCube[_tempArray.length];
124 for(int _i=0; _i<virtualCubes.length; _i++)
125 virtualCubes[_i] = (VirtualCube)_tempArray[_i];
126 _tempArray = _parser.getArray(NamedSet.class, 0, 0);
127 namedSets = new NamedSet[_tempArray.length];
128 for(int _i=0; _i<namedSets.length; _i++)
129 namedSets[_i] = (NamedSet)_tempArray[_i];
130 _tempArray = _parser.getArray(Role.class, 0, 0);
131 roles = new Role[_tempArray.length];
132 for(int _i=0; _i<roles.length; _i++)
133 roles[_i] = (Role)_tempArray[_i];
134 _tempArray = _parser.getArray(UserDefinedFunction.class, 0, 0);
135 userDefinedFunctions = new UserDefinedFunction[_tempArray.length];
136 for(int _i=0; _i<userDefinedFunctions.length; _i++)
137 userDefinedFunctions[_i] = (UserDefinedFunction)_tempArray[_i];
138 } catch(org.eigenbase.xom.XOMException _ex) {
139 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
140 }
141 }
142
143 public String name; // required attribute
144 public String measuresCaption; // optional attribute
145 public String defaultRole; // optional attribute
146
147 /**
148 * This schema's parameter definitions.
149 */
150 public Parameter[] parameters; //optional array
151 /**
152 * Shared dimensions in this schema.
153 */
154 public Dimension[] dimensions; //optional array
155 /**
156 * Cubes in this schema.
157 */
158 public Cube[] cubes; //optional array
159 /**
160 * Virtual cubes in this schema.
161 */
162 public VirtualCube[] virtualCubes; //optional array
163 /**
164 * Named sets in this schema.
165 */
166 public NamedSet[] namedSets; //optional array
167 /**
168 * Roles in this schema.
169 */
170 public Role[] roles; //optional array
171 /**
172 * Declarations of user-defined functions in this schema.
173 */
174 public UserDefinedFunction[] userDefinedFunctions; //optional array
175
176 public String getName()
177 {
178 return "Schema";
179 }
180
181 public void display(java.io.PrintWriter _out, int _indent)
182 {
183 _out.println(getName());
184 displayAttribute(_out, "name", name, _indent+1);
185 displayAttribute(_out, "measuresCaption", measuresCaption, _indent+1);
186 displayAttribute(_out, "defaultRole", defaultRole, _indent+1);
187 displayElementArray(_out, "parameters", parameters, _indent+1);
188 displayElementArray(_out, "dimensions", dimensions, _indent+1);
189 displayElementArray(_out, "cubes", cubes, _indent+1);
190 displayElementArray(_out, "virtualCubes", virtualCubes, _indent+1);
191 displayElementArray(_out, "namedSets", namedSets, _indent+1);
192 displayElementArray(_out, "roles", roles, _indent+1);
193 displayElementArray(_out, "userDefinedFunctions", userDefinedFunctions, _indent+1);
194 }
195 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
196 {
197 _out.beginTag("Schema", new org.eigenbase.xom.XMLAttrVector()
198 .add("name", name)
199 .add("measuresCaption", measuresCaption)
200 .add("defaultRole", defaultRole)
201 );
202 displayXMLElementArray(_out, parameters);
203 displayXMLElementArray(_out, dimensions);
204 displayXMLElementArray(_out, cubes);
205 displayXMLElementArray(_out, virtualCubes);
206 displayXMLElementArray(_out, namedSets);
207 displayXMLElementArray(_out, roles);
208 displayXMLElementArray(_out, userDefinedFunctions);
209 _out.endTag("Schema");
210 }
211 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
212 {
213 boolean _diff = true;
214 Schema _cother = (Schema)_other;
215 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
216 _diff = _diff && displayAttributeDiff("measuresCaption", measuresCaption, _cother.measuresCaption, _out, _indent+1);
217 _diff = _diff && displayAttributeDiff("defaultRole", defaultRole, _cother.defaultRole, _out, _indent+1);
218 _diff = _diff && displayElementArrayDiff("parameters", parameters, _cother.parameters, _out, _indent+1);
219 _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
220 _diff = _diff && displayElementArrayDiff("cubes", cubes, _cother.cubes, _out, _indent+1);
221 _diff = _diff && displayElementArrayDiff("virtualCubes", virtualCubes, _cother.virtualCubes, _out, _indent+1);
222 _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
223 _diff = _diff && displayElementArrayDiff("roles", roles, _cother.roles, _out, _indent+1);
224 _diff = _diff && displayElementArrayDiff("userDefinedFunctions", userDefinedFunctions, _cother.userDefinedFunctions, _out, _indent+1);
225 return _diff;
226 }
227 // BEGIN pass-through code block ---
228 Cube getCube(String cubeName) {
229 for (int i = 0; i < cubes.length; i++) {
230 if (cubes[i].name.equals(cubeName)) {
231 return cubes[i];
232 }
233 }
234 throw Util.newInternal("Cannot find cube '" + cubeName + "'");
235 }
236 Dimension getPublicDimension(String dimensionName) {
237 for (int i = 0; i < dimensions.length; i++) {
238 if (dimensions[i].name.equals(dimensionName)) {
239 return dimensions[i];
240 }
241 }
242 throw Util.newInternal(
243 "Cannot find public dimension '" + dimensionName + "'");
244 }
245 // END pass-through code block ---
246 }
247
248 /**
249 * A CubeDimension is either a usage of a Dimension ('shared
250 * dimension', in MSOLAP parlance), or a 'private dimension'.
251 */
252 public static abstract class CubeDimension extends org.eigenbase.xom.ElementDef
253 {
254 public CubeDimension()
255 {
256 }
257
258 public CubeDimension(org.eigenbase.xom.DOMWrapper _def)
259 throws org.eigenbase.xom.XOMException
260 {
261 try {
262 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
263 _parser = _parser;
264 name = (String)_parser.getAttribute("name", "String", null, null, true);
265 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
266 foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
267 } catch(org.eigenbase.xom.XOMException _ex) {
268 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
269 }
270 }
271
272 public String name; // required attribute
273 public String caption; // optional attribute
274 public String foreignKey; // optional attribute
275
276
277 public String getName()
278 {
279 return "CubeDimension";
280 }
281
282 public void display(java.io.PrintWriter _out, int _indent)
283 {
284 _out.println(getName());
285 displayAttribute(_out, "name", name, _indent+1);
286 displayAttribute(_out, "caption", caption, _indent+1);
287 displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
288 }
289 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
290 {
291 _out.beginTag("(%CubeDimension;)", new org.eigenbase.xom.XMLAttrVector()
292 .add("name", name)
293 .add("caption", caption)
294 .add("foreignKey", foreignKey)
295 );
296 _out.endTag("(%CubeDimension;)");
297 }
298 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
299 {
300 boolean _diff = true;
301 CubeDimension _cother = (CubeDimension)_other;
302 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
303 _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
304 _diff = _diff && displayAttributeDiff("foreignKey", foreignKey, _cother.foreignKey, _out, _indent+1);
305 return _diff;
306 }
307 // BEGIN pass-through code block ---
308 /**
309 * Looks up the base dimension of this dimension. If this is a
310 * usage of a shared dimension, returns the referenced dimension;
311 * otherwise returns the dimension itself.
312 *
313 * <p>Never returns null; if the dimension cannot be
314 * found, throws an error.
315 *
316 * @param schema Schema, never null
317 * @pre schema != null
318 * @post return != null
319 */
320 public abstract Dimension getDimension(Schema schema);
321 // END pass-through code block ---
322 }
323
324 /**
325 * Definition of a cube.
326 */
327 public static class Cube extends org.eigenbase.xom.ElementDef
328 {
329 public Cube()
330 {
331 }
332
333 public Cube(org.eigenbase.xom.DOMWrapper _def)
334 throws org.eigenbase.xom.XOMException
335 {
336 try {
337 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
338 _parser = _parser;
339 org.eigenbase.xom.NodeDef[] _tempArray = null;
340 _tempArray = _tempArray;
341 name = (String)_parser.getAttribute("name", "String", null, null, true);
342 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
343 defaultMeasure = (String)_parser.getAttribute("defaultMeasure", "String", null, null, false);
344 cache = (Boolean)_parser.getAttribute("cache", "Boolean", "true", null, false);
345 enabled = (Boolean)_parser.getAttribute("enabled", "Boolean", "true", null, false);
346 fact = (Relation)_parser.getElement(Relation.class, true);
347 _tempArray = _parser.getArray(CubeDimension.class, 0, 0);
348 dimensions = new CubeDimension[_tempArray.length];
349 for(int _i=0; _i<dimensions.length; _i++)
350 dimensions[_i] = (CubeDimension)_tempArray[_i];
351 _tempArray = _parser.getArray(Measure.class, 0, 0);
352 measures = new Measure[_tempArray.length];
353 for(int _i=0; _i<measures.length; _i++)
354 measures[_i] = (Measure)_tempArray[_i];
355 _tempArray = _parser.getArray(CalculatedMember.class, 0, 0);
356 calculatedMembers = new CalculatedMember[_tempArray.length];
357 for(int _i=0; _i<calculatedMembers.length; _i++)
358 calculatedMembers[_i] = (CalculatedMember)_tempArray[_i];
359 _tempArray = _parser.getArray(NamedSet.class, 0, 0);
360 namedSets = new NamedSet[_tempArray.length];
361 for(int _i=0; _i<namedSets.length; _i++)
362 namedSets[_i] = (NamedSet)_tempArray[_i];
363 } catch(org.eigenbase.xom.XOMException _ex) {
364 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
365 }
366 }
367
368 public String name; // required attribute
369 public String caption; // optional attribute
370 public String defaultMeasure; // optional attribute
371 public Boolean cache; // attribute default: true
372 public Boolean enabled; // attribute default: true
373
374 /**
375 * The fact table is the source of all measures in this cube. If
376 * this is a Table and the schema name is not
377 * present, table name is left unqualified.
378 */
379 public Relation fact; //required element
380 /**
381 */
382 public CubeDimension[] dimensions; //optional array
383 /**
384 */
385 public Measure[] measures; //optional array
386 /**
387 * Calculated members in this cube.
388 */
389 public CalculatedMember[] calculatedMembers; //optional array
390 /**
391 * Named sets in this cube.
392 */
393 public NamedSet[] namedSets; //optional array
394
395 public String getName()
396 {
397 return "Cube";
398 }
399
400 public void display(java.io.PrintWriter _out, int _indent)
401 {
402 _out.println(getName());
403 displayAttribute(_out, "name", name, _indent+1);
404 displayAttribute(_out, "caption", caption, _indent+1);
405 displayAttribute(_out, "defaultMeasure", defaultMeasure, _indent+1);
406 displayAttribute(_out, "cache", cache, _indent+1);
407 displayAttribute(_out, "enabled", enabled, _indent+1);
408 displayElement(_out, "fact", fact, _indent+1);
409 displayElementArray(_out, "dimensions", dimensions, _indent+1);
410 displayElementArray(_out, "measures", measures, _indent+1);
411 displayElementArray(_out, "calculatedMembers", calculatedMembers, _indent+1);
412 displayElementArray(_out, "namedSets", namedSets, _indent+1);
413 }
414 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
415 {
416 _out.beginTag("Cube", new org.eigenbase.xom.XMLAttrVector()
417 .add("name", name)
418 .add("caption", caption)
419 .add("defaultMeasure", defaultMeasure)
420 .add("cache", cache)
421 .add("enabled", enabled)
422 );
423 displayXMLElement(_out, fact);
424 displayXMLElementArray(_out, dimensions);
425 displayXMLElementArray(_out, measures);
426 displayXMLElementArray(_out, calculatedMembers);
427 displayXMLElementArray(_out, namedSets);
428 _out.endTag("Cube");
429 }
430 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
431 {
432 boolean _diff = true;
433 Cube _cother = (Cube)_other;
434 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
435 _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
436 _diff = _diff && displayAttributeDiff("defaultMeasure", defaultMeasure, _cother.defaultMeasure, _out, _indent+1);
437 _diff = _diff && displayAttributeDiff("cache", cache, _cother.cache, _out, _indent+1);
438 _diff = _diff && displayAttributeDiff("enabled", enabled, _cother.enabled, _out, _indent+1);
439 _diff = _diff && displayElementDiff("fact", fact, _cother.fact, _out, _indent+1);
440 _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
441 _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
442 _diff = _diff && displayElementArrayDiff("calculatedMembers", calculatedMembers, _cother.calculatedMembers, _out, _indent+1);
443 _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
444 return _diff;
445 }
446 // BEGIN pass-through code block ---
447 public boolean isEnabled() {
448 return enabled.booleanValue();
449 }
450 Dimension getDimension(Schema xmlSchema, String dimensionName) {
451 for (int i = 0; i < dimensions.length; i++) {
452 if (dimensions[i].name.equals(dimensionName)) {
453 return dimensions[i].getDimension(xmlSchema);
454 }
455 }
456 throw Util.newInternal(
457 "Cannot find dimension '" + dimensionName + "' in cube '" +
458 name + "'");
459 }
460 // END pass-through code block ---
461 }
462
463 /**
464 * A VirtualCube is a set of dimensions and
465 * measures gleaned from other cubes.
466 */
467 public static class VirtualCube extends org.eigenbase.xom.ElementDef
468 {
469 public VirtualCube()
470 {
471 }
472
473 public VirtualCube(org.eigenbase.xom.DOMWrapper _def)
474 throws org.eigenbase.xom.XOMException
475 {
476 try {
477 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
478 _parser = _parser;
479 org.eigenbase.xom.NodeDef[] _tempArray = null;
480 _tempArray = _tempArray;
481 enabled = (Boolean)_parser.getAttribute("enabled", "Boolean", "true", null, false);
482 name = (String)_parser.getAttribute("name", "String", null, null, false);
483 defaultMeasure = (String)_parser.getAttribute("defaultMeasure", "String", null, null, false);
484 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
485 cubeUsage = (CubeUsages)_parser.getElement(CubeUsages.class, false);
486 _tempArray = _parser.getArray(VirtualCubeDimension.class, 0, 0);
487 dimensions = new VirtualCubeDimension[_tempArray.length];
488 for(int _i=0; _i<dimensions.length; _i++)
489 dimensions[_i] = (VirtualCubeDimension)_tempArray[_i];
490 _tempArray = _parser.getArray(VirtualCubeMeasure.class, 0, 0);
491 measures = new VirtualCubeMeasure[_tempArray.length];
492 for(int _i=0; _i<measures.length; _i++)
493 measures[_i] = (VirtualCubeMeasure)_tempArray[_i];
494 _tempArray = _parser.getArray(CalculatedMember.class, 0, 0);
495 calculatedMembers = new CalculatedMember[_tempArray.length];
496 for(int _i=0; _i<calculatedMembers.length; _i++)
497 calculatedMembers[_i] = (CalculatedMember)_tempArray[_i];
498 _tempArray = _parser.getArray(NamedSet.class, 0, 0);
499 namedSets = new NamedSet[_tempArray.length];
500 for(int _i=0; _i<namedSets.length; _i++)
501 namedSets[_i] = (NamedSet)_tempArray[_i];
502 } catch(org.eigenbase.xom.XOMException _ex) {
503 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
504 }
505 }
506
507 public Boolean enabled; // attribute default: true
508 public String name; // optional attribute
509 public String defaultMeasure; // optional attribute
510 public String caption; // optional attribute
511
512 /**
513 */
514 public CubeUsages cubeUsage; //optional element
515 /**
516 */
517 public VirtualCubeDimension[] dimensions; //optional array
518 /**
519 */
520 public VirtualCubeMeasure[] measures; //optional array
521 /**
522 * Calculated members that belong to this virtual cube.
523 * (Calculated members inherited from other cubes should not be
524 * in this list.)
525 */
526 public CalculatedMember[] calculatedMembers; //optional array
527 /**
528 * Named sets in this cube.
529 */
530 public NamedSet[] namedSets; //optional array
531
532 public String getName()
533 {
534 return "VirtualCube";
535 }
536
537 public void display(java.io.PrintWriter _out, int _indent)
538 {
539 _out.println(getName());
540 displayAttribute(_out, "enabled", enabled, _indent+1);
541 displayAttribute(_out, "name", name, _indent+1);
542 displayAttribute(_out, "defaultMeasure", defaultMeasure, _indent+1);
543 displayAttribute(_out, "caption", caption, _indent+1);
544 displayElement(_out, "cubeUsage", cubeUsage, _indent+1);
545 displayElementArray(_out, "dimensions", dimensions, _indent+1);
546 displayElementArray(_out, "measures", measures, _indent+1);
547 displayElementArray(_out, "calculatedMembers", calculatedMembers, _indent+1);
548 displayElementArray(_out, "namedSets", namedSets, _indent+1);
549 }
550 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
551 {
552 _out.beginTag("VirtualCube", new org.eigenbase.xom.XMLAttrVector()
553 .add("enabled", enabled)
554 .add("name", name)
555 .add("defaultMeasure", defaultMeasure)
556 .add("caption", caption)
557 );
558 displayXMLElement(_out, cubeUsage);
559 displayXMLElementArray(_out, dimensions);
560 displayXMLElementArray(_out, measures);
561 displayXMLElementArray(_out, calculatedMembers);
562 displayXMLElementArray(_out, namedSets);
563 _out.endTag("VirtualCube");
564 }
565 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
566 {
567 boolean _diff = true;
568 VirtualCube _cother = (VirtualCube)_other;
569 _diff = _diff && displayAttributeDiff("enabled", enabled, _cother.enabled, _out, _indent+1);
570 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
571 _diff = _diff && displayAttributeDiff("defaultMeasure", defaultMeasure, _cother.defaultMeasure, _out, _indent+1);
572 _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
573 _diff = _diff && displayElementDiff("cubeUsage", cubeUsage, _cother.cubeUsage, _out, _indent+1);
574 _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
575 _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
576 _diff = _diff && displayElementArrayDiff("calculatedMembers", calculatedMembers, _cother.calculatedMembers, _out, _indent+1);
577 _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
578 return _diff;
579 }
580 // BEGIN pass-through code block ---
581 public boolean isEnabled() {
582 return enabled.booleanValue();
583 }
584 // END pass-through code block ---
585 }
586
587 /**
588 * List of base cubes used by the virtual cube.
589 */
590 public static class CubeUsages extends org.eigenbase.xom.ElementDef
591 {
592 public CubeUsages()
593 {
594 }
595
596 public CubeUsages(org.eigenbase.xom.DOMWrapper _def)
597 throws org.eigenbase.xom.XOMException
598 {
599 try {
600 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
601 _parser = _parser;
602 org.eigenbase.xom.NodeDef[] _tempArray = null;
603 _tempArray = _tempArray;
604 _tempArray = _parser.getArray(CubeUsage.class, 1, 0);
605 cubeUsages = new CubeUsage[_tempArray.length];
606 for(int _i=0; _i<cubeUsages.length; _i++)
607 cubeUsages[_i] = (CubeUsage)_tempArray[_i];
608 } catch(org.eigenbase.xom.XOMException _ex) {
609 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
610 }
611 }
612
613
614 /**
615 */
616 public CubeUsage[] cubeUsages; //min 1
617
618 public String getName()
619 {
620 return "CubeUsages";
621 }
622
623 public void display(java.io.PrintWriter _out, int _indent)
624 {
625 _out.println(getName());
626 displayElementArray(_out, "cubeUsages", cubeUsages, _indent+1);
627 }
628 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
629 {
630 _out.beginTag("CubeUsages", new org.eigenbase.xom.XMLAttrVector()
631 );
632 displayXMLElementArray(_out, cubeUsages);
633 _out.endTag("CubeUsages");
634 }
635 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
636 {
637 boolean _diff = true;
638 CubeUsages _cother = (CubeUsages)_other;
639 _diff = _diff && displayElementArrayDiff("cubeUsages", cubeUsages, _cother.cubeUsages, _out, _indent+1);
640 return _diff;
641 }
642 }
643
644 public static class CubeUsage extends org.eigenbase.xom.ElementDef
645 {
646 public CubeUsage()
647 {
648 }
649
650 public CubeUsage(org.eigenbase.xom.DOMWrapper _def)
651 throws org.eigenbase.xom.XOMException
652 {
653 try {
654 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
655 _parser = _parser;
656 cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, true);
657 ignoreUnrelatedDimensions = (Boolean)_parser.getAttribute("ignoreUnrelatedDimensions", "Boolean", "false", null, false);
658 } catch(org.eigenbase.xom.XOMException _ex) {
659 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
660 }
661 }
662
663 public String cubeName; // required attribute
664 public Boolean ignoreUnrelatedDimensions; // attribute default: false
665
666
667 public String getName()
668 {
669 return "CubeUsage";
670 }
671
672 public void display(java.io.PrintWriter _out, int _indent)
673 {
674 _out.println(getName());
675 displayAttribute(_out, "cubeName", cubeName, _indent+1);
676 displayAttribute(_out, "ignoreUnrelatedDimensions", ignoreUnrelatedDimensions, _indent+1);
677 }
678 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
679 {
680 _out.beginTag("CubeUsage", new org.eigenbase.xom.XMLAttrVector()
681 .add("cubeName", cubeName)
682 .add("ignoreUnrelatedDimensions", ignoreUnrelatedDimensions)
683 );
684 _out.endTag("CubeUsage");
685 }
686 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
687 {
688 boolean _diff = true;
689 CubeUsage _cother = (CubeUsage)_other;
690 _diff = _diff && displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
691 _diff = _diff && displayAttributeDiff("ignoreUnrelatedDimensions", ignoreUnrelatedDimensions, _cother.ignoreUnrelatedDimensions, _out, _indent+1);
692 return _diff;
693 }
694 }
695
696 /**
697 * A VirtualCubeDimension is a usage of a Dimension in a VirtualCube.
698 */
699 public static class VirtualCubeDimension extends CubeDimension
700 {
701 public VirtualCubeDimension()
702 {
703 }
704
705 public VirtualCubeDimension(org.eigenbase.xom.DOMWrapper _def)
706 throws org.eigenbase.xom.XOMException
707 {
708 try {
709 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
710 _parser = _parser;
711 cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, false);
712 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
713 foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
714 name = (String)_parser.getAttribute("name", "String", null, null, false);
715 } catch(org.eigenbase.xom.XOMException _ex) {
716 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
717 }
718 }
719
720 public String cubeName; // optional attribute
721
722
723 public String getName()
724 {
725 return "VirtualCubeDimension";
726 }
727
728 public void display(java.io.PrintWriter _out, int _indent)
729 {
730 _out.println(getName());
731 displayAttribute(_out, "cubeName", cubeName, _indent+1);
732 displayAttribute(_out, "caption", caption, _indent+1);
733 displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
734 displayAttribute(_out, "name", name, _indent+1);
735 }
736 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
737 {
738 _out.beginTag("VirtualCubeDimension", new org.eigenbase.xom.XMLAttrVector()
739 .add("cubeName", cubeName)
740 .add("caption", caption)
741 .add("foreignKey", foreignKey)
742 .add("name", name)
743 );
744 _out.endTag("VirtualCubeDimension");
745 }
746 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
747 {
748 boolean _diff = true;
749 VirtualCubeDimension _cother = (VirtualCubeDimension)_other;
750 _diff = _diff && displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
751 return _diff;
752 }
753 // BEGIN pass-through code block ---
754 // implement CubeDimension
755 public Dimension getDimension(Schema schema) {
756 Util.assertPrecondition(schema != null, "schema != null");
757 if (cubeName == null) {
758 return schema.getPublicDimension(name);
759 } else {
760 Cube cube = schema.getCube(cubeName);
761 return cube.getDimension(schema, name);
762 }
763 }
764 // END pass-through code block ---
765 }
766
767 /**
768 * A VirtualCubeMeasure is a usage of a Measure in a VirtualCube.
769 */
770 public static class VirtualCubeMeasure extends org.eigenbase.xom.ElementDef
771 {
772 public VirtualCubeMeasure()
773 {
774 }
775
776 public VirtualCubeMeasure(org.eigenbase.xom.DOMWrapper _def)
777 throws org.eigenbase.xom.XOMException
778 {
779 try {
780 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
781 _parser = _parser;
782 cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, false);
783 name = (String)_parser.getAttribute("name", "String", null, null, false);
784 visible = (Boolean)_parser.getAttribute("visible", "Boolean", null, null, false);
785 } catch(org.eigenbase.xom.XOMException _ex) {
786 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
787 }
788 }
789
790 public String cubeName; // optional attribute
791 public String name; // optional attribute
792 public Boolean visible; // optional attribute
793
794
795 public String getName()
796 {
797 return "VirtualCubeMeasure";
798 }
799
800 public void display(java.io.PrintWriter _out, int _indent)
801 {
802 _out.println(getName());
803 displayAttribute(_out, "cubeName", cubeName, _indent+1);
804 displayAttribute(_out, "name", name, _indent+1);
805 displayAttribute(_out, "visible", visible, _indent+1);
806 }
807 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
808 {
809 _out.beginTag("VirtualCubeMeasure", new org.eigenbase.xom.XMLAttrVector()
810 .add("cubeName", cubeName)
811 .add("name", name)
812 .add("visible", visible)
813 );
814 _out.endTag("VirtualCubeMeasure");
815 }
816 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
817 {
818 boolean _diff = true;
819 VirtualCubeMeasure _cother = (VirtualCubeMeasure)_other;
820 _diff = _diff && displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
821 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
822 _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
823 return _diff;
824 }
825 }
826
827 /**
828 * A DimensionUsage is usage of a shared
829 * Dimension within the context of a cube.
830 */
831 public static class DimensionUsage extends CubeDimension
832 {
833 public DimensionUsage()
834 {
835 }
836
837 public DimensionUsage(org.eigenbase.xom.DOMWrapper _def)
838 throws org.eigenbase.xom.XOMException
839 {
840 try {
841 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
842 _parser = _parser;
843 source = (String)_parser.getAttribute("source", "String", null, null, true);
844 level = (String)_parser.getAttribute("level", "String", null, null, false);
845 usagePrefix = (String)_parser.getAttribute("usagePrefix", "String", null, null, false);
846 name = (String)_parser.getAttribute("name", "String", null, null, true);
847 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
848 foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
849 } catch(org.eigenbase.xom.XOMException _ex) {
850 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
851 }
852 }
853
854 public String source; // required attribute
855 public String level; // optional attribute
856 public String usagePrefix; // optional attribute
857
858
859 public String getName()
860 {
861 return "DimensionUsage";
862 }
863
864 public void display(java.io.PrintWriter _out, int _indent)
865 {
866 _out.println(getName());
867 displayAttribute(_out, "source", source, _indent+1);
868 displayAttribute(_out, "level", level, _indent+1);
869 displayAttribute(_out, "usagePrefix", usagePrefix, _indent+1);
870 displayAttribute(_out, "name", name, _indent+1);
871 displayAttribute(_out, "caption", caption, _indent+1);
872 displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
873 }
874 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
875 {
876 _out.beginTag("DimensionUsage", new org.eigenbase.xom.XMLAttrVector()
877 .add("source", source)
878 .add("level", level)
879 .add("usagePrefix", usagePrefix)
880 .add("name", name)
881 .add("caption", caption)
882 .add("foreignKey", foreignKey)
883 );
884 _out.endTag("DimensionUsage");
885 }
886 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
887 {
888 boolean _diff = true;
889 DimensionUsage _cother = (DimensionUsage)_other;
890 _diff = _diff && displayAttributeDiff("source", source, _cother.source, _out, _indent+1);
891 _diff = _diff && displayAttributeDiff("level", level, _cother.level, _out, _indent+1);
892 _diff = _diff && displayAttributeDiff("usagePrefix", usagePrefix, _cother.usagePrefix, _out, _indent+1);
893 return _diff;
894 }
895 // BEGIN pass-through code block ---
896 // implement CubeDimension
897 public Dimension getDimension(Schema schema) {
898 Util.assertPrecondition(schema != null, "schema != null");
899 for (int i = 0; i < schema.dimensions.length; i++) {
900 if (schema.dimensions[i].name.equals(source)) {
901 return schema.dimensions[i];
902 }
903 }
904 throw Util.newInternal(
905 "Cannot find shared dimension '" + source + "'");
906 }
907 // END pass-through code block ---
908 }
909
910 /**
911 * A Dimension is a collection of hierarchies. There are
912 * two kinds: a public dimension belongs to a
913 * Schema, and be used by several cubes; a
914 * private dimension belongs to a
915 * Cube. The foreignKey field is only
916 * applicable to private dimensions.
917 */
918 public static class Dimension extends CubeDimension
919 {
920 public Dimension()
921 {
922 }
923
924 public Dimension(org.eigenbase.xom.DOMWrapper _def)
925 throws org.eigenbase.xom.XOMException
926 {
927 try {
928 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
929 _parser = _parser;
930 org.eigenbase.xom.NodeDef[] _tempArray = null;
931 _tempArray = _tempArray;
932 type = (String)_parser.getAttribute("type", "String", null, _type_values, false);
933 usagePrefix = (String)_parser.getAttribute("usagePrefix", "String", null, null, false);
934 foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
935 name = (String)_parser.getAttribute("name", "String", null, null, true);
936 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
937 _tempArray = _parser.getArray(Hierarchy.class, 0, 0);
938 hierarchies = new Hierarchy[_tempArray.length];
939 for(int _i=0; _i<hierarchies.length; _i++)
940 hierarchies[_i] = (Hierarchy)_tempArray[_i];
941 } catch(org.eigenbase.xom.XOMException _ex) {
942 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
943 }
944 }
945
946 /** Allowable values for {@link #type}. */
947 public static final String[] _type_values = {"StandardDimension", "TimeDimension"};
948 public String type; // optional attribute
949 public String usagePrefix; // optional attribute
950
951 /**
952 */
953 public Hierarchy[] hierarchies; //optional array
954
955 public String getName()
956 {
957 return "Dimension";
958 }
959
960 public void display(java.io.PrintWriter _out, int _indent)
961 {
962 _out.println(getName());
963 displayAttribute(_out, "type", type, _indent+1);
964 displayAttribute(_out, "usagePrefix", usagePrefix, _indent+1);
965 displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
966 displayAttribute(_out, "name", name, _indent+1);
967 displayAttribute(_out, "caption", caption, _indent+1);
968 displayElementArray(_out, "hierarchies", hierarchies, _indent+1);
969 }
970 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
971 {
972 _out.beginTag("Dimension", new org.eigenbase.xom.XMLAttrVector()
973 .add("type", type)
974 .add("usagePrefix", usagePrefix)
975 .add("foreignKey", foreignKey)
976 .add("name", name)
977 .add("caption", caption)
978 );
979 displayXMLElementArray(_out, hierarchies);
980 _out.endTag("Dimension");
981 }
982 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
983 {
984 boolean _diff = true;
985 Dimension _cother = (Dimension)_other;
986 _diff = _diff && displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
987 _diff = _diff && displayAttributeDiff("usagePrefix", usagePrefix, _cother.usagePrefix, _out, _indent+1);
988 _diff = _diff && displayElementArrayDiff("hierarchies", hierarchies, _cother.hierarchies, _out, _indent+1);
989 return _diff;
990 }
991 // BEGIN pass-through code block ---
992 // implement CubeDimension
993 public Dimension getDimension(Schema schema) {
994 Util.assertPrecondition(schema != null, "schema != null");
995 return this;
996 }
997
998 // Return the dimension's enumerated type.
999 public DimensionType getDimensionType() {
1000 if (type == null) {
1001 return null; //DimensionType.StandardDimension;
1002 } else {
1003 return DimensionType.valueOf(type);
1004 }
1005 }
1006 // END pass-through code block ---
1007 }
1008
1009 /**
1010 * Defines a hierarchy.
1011 * You must specify at most one <Relation>
1012 * or memberReaderClass. If you specify none, the
1013 * hierarchy is assumed to come from the same fact table of the
1014 * current cube.
1015 */
1016 public static class Hierarchy extends org.eigenbase.xom.ElementDef
1017 {
1018 public Hierarchy()
1019 {
1020 }
1021
1022 public Hierarchy(org.eigenbase.xom.DOMWrapper _def)
1023 throws org.eigenbase.xom.XOMException
1024 {
1025 try {
1026 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
1027 _parser = _parser;
1028 org.eigenbase.xom.NodeDef[] _tempArray = null;
1029 _tempArray = _tempArray;
1030 name = (String)_parser.getAttribute("name", "String", null, null, false);
1031 hasAll = (Boolean)_parser.getAttribute("hasAll", "Boolean", null, null, true);
1032 allMemberName = (String)_parser.getAttribute("allMemberName", "String", null, null, false);
1033 allMemberCaption = (String)_parser.getAttribute("allMemberCaption", "String", null, null, false);
1034 allLevelName = (String)_parser.getAttribute("allLevelName", "String", null, null, false);
1035 primaryKey = (String)_parser.getAttribute("primaryKey", "String", null, null, false);
1036 primaryKeyTable = (String)_parser.getAttribute("primaryKeyTable", "String", null, null, false);
1037 defaultMember = (String)_parser.getAttribute("defaultMember", "String", null, null, false);
1038 memberReaderClass = (String)_parser.getAttribute("memberReaderClass", "String", null, null, false);
1039 caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1040 relation = (RelationOrJoin)_parser.getElement(RelationOrJoin.class, false);
1041 _tempArray = _parser.getArray(Level.class, 0, 0);
1042 levels = new Level[_tempArray.length];
1043 for(int _i=0; _i<levels.length; _i++)
1044 levels[_i] = (Level)_tempArray[_i];
1045 _tempArray = _parser.getArray(MemberReaderParameter.class, 0, 0);
1046 memberReaderParameters = new MemberReaderParameter[_tempArray.length];
1047 for(int _i=0; _i<memberReaderParameters.length; _i++)
1048 memberReaderParameters[_i] = (MemberReaderParameter)_tempArray[_i];
1049 } catch(org.eigenbase.xom.XOMException _ex) {
1050 throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1051 }
1052 }
1053
1054 public String name; // optional attribute
1055 public Boolean hasAll; // required attribute
1056 public String allMemberName; // optional attribute
1057 public String allMemberCaption; // optional attribute
1058 public String allLevelName; // optional attribute
1059 public String primaryKey; // optional attribute
1060 public String primaryKeyTable; // optional attribute
1061 public String defaultMember; // optional attribute
1062 public String memberReaderClass; // optional attribute
1063 public String caption; // optional attribute
1064
1065 /**
1066 * The {@link MondrianDef.Table table},
1067 * {@link MondrianDef.Join set of tables},
1068 * {@link MondrianDef.View SQL statement}, or
1069 * {@link MondrianDef.InlineTable inline table}
1070 * which populates this hierarchy.
1071 */
1072 public RelationOrJoin relation; //optional element
1073 /**
1074 */
1075 public Level[] levels; //optional array
1076 public MemberReaderParameter[] memberReaderParameters; //optional array
1077
1078 public String getName()
1079 {
1080 return "Hierarchy";
1081 }
1082
1083 public void display(java.io.PrintWriter _out, int _indent)
1084 {
1085 _out.println(getName());
1086 displayAttribute(_out, "name", name, _indent+1);
1087 displayAttribute(_out, "hasAll", hasAll, _indent+1);
1088 displayAttribute(_out, "allMemberName", allMemberName, _indent+1);
1089 displayAttribute(_out, "allMemberCaption", allMemberCaption, _indent+1);
1090 displayAttribute(_out, "allLevelName", allLevelName, _indent+1);
1091 displayAttribute(_out, "primaryKey", primaryKey, _indent+1);
1092 displayAttribute(_out, "primaryKeyTable", primaryKeyTable, _indent+1);
1093 displayAttribute(_out, "defaultMember", defaultMember, _indent+1);
1094 displayAttribute(_out, "memberReaderClass", memberReaderClass, _indent+1);
1095 displayAttribute(_out, "caption", caption, _indent+1);
1096 displayElement(_out, "relation", relation, _indent+1);
1097 displayElementArray(_out, "levels", levels, _indent+1);
1098 displayElementArray(_out, "memberReaderParameters", memberReaderParameters, _indent+1);
1099 }
1100 public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1101 {
1102 _out.beginTag("Hierarchy", new org.eigenbase.xom.XMLAttrVector()
1103 .add("name", name)
1104 .add("hasAll", hasAll)
1105 .add("allMemberName", allMemberName)
1106 .add("allMemberCaption", allMemberCaption)
1107 .add("allLevelName", allLevelName)
1108 .add("primaryKey", primaryKey)
1109 .add("primaryKeyTable", primaryKeyTable)
1110 .add("defaultMember", defaultMember)
1111 .add("memberReaderClass", memberReaderClass)
1112 .add("caption", caption)
1113 );
1114 displayXMLElement(_out, relation);
1115 displayXMLElementArray(_out, levels);
1116 displayXMLElementArray(_out, memberReaderParameters);
1117 _out.endTag("Hierarchy");
1118 }
1119 public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1120 {
1121 boolean _diff = true;
1122 Hierarchy _cother = (Hierarchy)_other;
1123 _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1124 _diff = _diff && displayAttributeDiff("hasAll", hasAll, _cother.hasAll, _out, _indent+1);
1125 _diff = _diff && displayAttributeDiff("allMemberName", allMemberName, _cother.allMemberName, _out, _indent+1);
1126 _diff = _diff && displayAttributeDiff("allMemberCaption", allMemberCaption, _cother.allMemberCaption, _out, _indent+1);
1127 _diff = _diff && displayAttributeDiff("allLevelName", allLevelName, _cother.allLevelName, _out, _indent+1);
1128 _diff = _diff && displayAttributeDiff("primaryKey", primaryKey, _cother.primaryKey, _out, _indent+1);
1129 _diff = _diff && displayAttributeDiff("primaryKeyTable", primaryKeyTable, _cother.primaryKeyTable, _out, _indent+1);
1130 _diff = _diff && displayAttributeDiff("defaultMember", defaultMember, _cother.defaultMember, _out, _indent+1);
1131 _diff = _diff && displayAttributeDiff("memberReaderClass", memberReaderClass, _cother.memberReaderClass, _out, _indent+1);
1132 _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1133 _diff = _diff && displayElementDiff("relation", relation, _cother.relation, _out, _indent+1);
1134 _diff = _diff && displayElementArrayDiff("levels", levels, _cother.levels, _out, _indent+1);
1135 _diff = _diff && displayElementArrayDiff("memberReaderParameters", memberReaderParameters, _cother.memberReaderParameters, _out, _indent+1);
1136 return _diff;
1137 }
1138 }
1139
1140 public static class Level extends org.eigenbase.xom.ElementDef
1141 {
1142 public Level()
1143 {
1144 }
1145
1146 public Level(org.eigenbase.xom.DOMWrapper _def)
1147 throws org.eigenbase.xom.XOMException
1148 {
1149 try {
1150 org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianDef.class);
1151 _parser = _parser;
1152 org.eigenbase.xom.NodeDef[] _tempArray = null;
1153 _tempArray = _tempArray;
1154 approxRowCount = (String)_parser.getAttribute("approxRowCount", "String", null, null, false);
1155 name = (String)_parser.getAttribute("name", "String", null, null, false);
1156 table = (String)_parser.getAttribute("table", "String", null, null, false);
1157 column = (String)_parser.getAttribute("column", "String", null, null, false);
1158 nameColumn = (String)_parser.getAttribute("nameColumn", "String", null, null, false);
1159 ordinalColumn = (String)_parser.getAttribute("ordinalColumn", "String", null, null, false);
1160 parentColumn = (String)_parser.getAttribute("parentColumn", "String", null, null, false);