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