001/*
002// This java file was automatically generated
003// from XOM model 'mondrian'
004// on Thu Jul 25 21:17:39 PDT 2013
005// Do not edit this file by hand.
006*/
007
008package mondrian.gui;
009import mondrian.olap.*;
010import 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$
024 * <p>This class was generated from XOM model 'mondrian' on Thu Jul 25 21:17:39 PDT 2013
025 */
026public 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                "CubeUsages",
039                "CubeUsage",
040                "VirtualCubeDimension",
041                "VirtualCubeMeasure",
042                "DimensionUsage",
043                "Dimension",
044                "Hierarchy",
045                "Level",
046                "Closure",
047                "Property",
048                "Measure",
049                "CalculatedMember",
050                "CalculatedMemberProperty",
051                "NamedSet",
052                "Formula",
053                "MemberReaderParameter",
054                "RelationOrJoin",
055                "Relation",
056                "View",
057                "SQL",
058                "Join",
059                "Table",
060                "Hint",
061                "InlineTable",
062                "ColumnDefs",
063                "ColumnDef",
064                "Rows",
065                "Row",
066                "Value",
067                "AggTable",
068                "AggName",
069                "AggPattern",
070                "AggExclude",
071                "AggColumnName",
072                "AggFactCount",
073                "AggIgnoreColumn",
074                "AggForeignKey",
075                "AggLevel",
076                "AggMeasure",
077                "Expression",
078                "Column",
079                "ExpressionView",
080                "KeyExpression",
081                "ParentExpression",
082                "OrdinalExpression",
083                "NameExpression",
084                "CaptionExpression",
085                "MeasureExpression",
086                "Role",
087                "Grant",
088                "SchemaGrant",
089                "CubeGrant",
090                "DimensionGrant",
091                "HierarchyGrant",
092                "MemberGrant",
093                "Union",
094                "RoleUsage",
095                "UserDefinedFunction",
096                "Parameter",
097                "Annotations",
098                "Annotation",
099                "Script",
100                "CellFormatter",
101                "MemberFormatter",
102                "PropertyFormatter"
103        };
104
105        /**
106         * A schema is a collection of cubes and virtual cubes.
107         * It can also contain shared dimensions (for use by those
108         * cubes), named sets, roles, and declarations of
109         * user-defined functions.
110         */
111        public static class Schema extends org.eigenbase.xom.ElementDef
112        {
113                public Schema()
114                {
115                }
116
117                public Schema(org.eigenbase.xom.DOMWrapper _def)
118                        throws org.eigenbase.xom.XOMException
119                {
120                        try {
121                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
122                                org.eigenbase.xom.NodeDef[] _tempArray;
123                                name = (String)_parser.getAttribute("name", "String", null, null, true);
124                                description = (String)_parser.getAttribute("description", "String", null, null, false);
125                                measuresCaption = (String)_parser.getAttribute("measuresCaption", "String", null, null, false);
126                                defaultRole = (String)_parser.getAttribute("defaultRole", "String", null, null, false);
127                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
128                                _tempArray = _parser.getArray(Parameter.class, 0, 0);
129                                parameters = new Parameter[_tempArray.length];
130                                for (int _i = 0; _i < parameters.length; _i++)
131                                        parameters[_i] = (Parameter)_tempArray[_i];
132                                _tempArray = _parser.getArray(Dimension.class, 0, 0);
133                                dimensions = new Dimension[_tempArray.length];
134                                for (int _i = 0; _i < dimensions.length; _i++)
135                                        dimensions[_i] = (Dimension)_tempArray[_i];
136                                _tempArray = _parser.getArray(Cube.class, 0, 0);
137                                cubes = new Cube[_tempArray.length];
138                                for (int _i = 0; _i < cubes.length; _i++)
139                                        cubes[_i] = (Cube)_tempArray[_i];
140                                _tempArray = _parser.getArray(VirtualCube.class, 0, 0);
141                                virtualCubes = new VirtualCube[_tempArray.length];
142                                for (int _i = 0; _i < virtualCubes.length; _i++)
143                                        virtualCubes[_i] = (VirtualCube)_tempArray[_i];
144                                _tempArray = _parser.getArray(NamedSet.class, 0, 0);
145                                namedSets = new NamedSet[_tempArray.length];
146                                for (int _i = 0; _i < namedSets.length; _i++)
147                                        namedSets[_i] = (NamedSet)_tempArray[_i];
148                                _tempArray = _parser.getArray(Role.class, 0, 0);
149                                roles = new Role[_tempArray.length];
150                                for (int _i = 0; _i < roles.length; _i++)
151                                        roles[_i] = (Role)_tempArray[_i];
152                                _tempArray = _parser.getArray(UserDefinedFunction.class, 0, 0);
153                                userDefinedFunctions = new UserDefinedFunction[_tempArray.length];
154                                for (int _i = 0; _i < userDefinedFunctions.length; _i++)
155                                        userDefinedFunctions[_i] = (UserDefinedFunction)_tempArray[_i];
156                        } catch(org.eigenbase.xom.XOMException _ex) {
157                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
158                        }
159                }
160
161                public String name;  // required attribute
162                public String description;  // optional attribute
163                public String measuresCaption;  // optional attribute
164                public String defaultRole;  // optional attribute
165
166                /**
167                 * Contains values of user-defined properties.
168                 */
169                public Annotations annotations;  //optional element
170                /**
171                 * This schema's parameter definitions.
172                 */
173                public Parameter[] parameters;  //optional array
174                /**
175                 * Shared dimensions in this schema.
176                 */
177                public Dimension[] dimensions;  //optional array
178                /**
179                 * Cubes in this schema.
180                 */
181                public Cube[] cubes;  //optional array
182                /**
183                 * Virtual cubes in this schema.
184                 */
185                public VirtualCube[] virtualCubes;  //optional array
186                /**
187                 * Named sets in this schema.
188                 */
189                public NamedSet[] namedSets;  //optional array
190                /**
191                 * Roles in this schema.
192                 */
193                public Role[] roles;  //optional array
194                /**
195                 * Declarations of user-defined functions in this schema.
196                 */
197                public UserDefinedFunction[] userDefinedFunctions;  //optional array
198
199                public String getName()
200                {
201                        return "Schema";
202                }
203
204                public void display(java.io.PrintWriter _out, int _indent)
205                {
206                        _out.println(getName());
207                        displayAttribute(_out, "name", name, _indent+1);
208                        displayAttribute(_out, "description", description, _indent+1);
209                        displayAttribute(_out, "measuresCaption", measuresCaption, _indent+1);
210                        displayAttribute(_out, "defaultRole", defaultRole, _indent+1);
211                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
212                        displayElementArray(_out, "parameters", parameters, _indent+1);
213                        displayElementArray(_out, "dimensions", dimensions, _indent+1);
214                        displayElementArray(_out, "cubes", cubes, _indent+1);
215                        displayElementArray(_out, "virtualCubes", virtualCubes, _indent+1);
216                        displayElementArray(_out, "namedSets", namedSets, _indent+1);
217                        displayElementArray(_out, "roles", roles, _indent+1);
218                        displayElementArray(_out, "userDefinedFunctions", userDefinedFunctions, _indent+1);
219                }
220                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
221                {
222                        _out.beginTag("Schema", new org.eigenbase.xom.XMLAttrVector()
223                                .add("name", name)
224                                .add("description", description)
225                                .add("measuresCaption", measuresCaption)
226                                .add("defaultRole", defaultRole)
227                                );
228                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
229                        displayXMLElementArray(_out, parameters);
230                        displayXMLElementArray(_out, dimensions);
231                        displayXMLElementArray(_out, cubes);
232                        displayXMLElementArray(_out, virtualCubes);
233                        displayXMLElementArray(_out, namedSets);
234                        displayXMLElementArray(_out, roles);
235                        displayXMLElementArray(_out, userDefinedFunctions);
236                        _out.endTag("Schema");
237                }
238                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
239                {
240                        Schema _cother = (Schema)_other;
241                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
242                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
243                        _diff = _diff && displayAttributeDiff("measuresCaption", measuresCaption, _cother.measuresCaption, _out, _indent+1);
244                        _diff = _diff && displayAttributeDiff("defaultRole", defaultRole, _cother.defaultRole, _out, _indent+1);
245                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
246                        _diff = _diff && displayElementArrayDiff("parameters", parameters, _cother.parameters, _out, _indent+1);
247                        _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
248                        _diff = _diff && displayElementArrayDiff("cubes", cubes, _cother.cubes, _out, _indent+1);
249                        _diff = _diff && displayElementArrayDiff("virtualCubes", virtualCubes, _cother.virtualCubes, _out, _indent+1);
250                        _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
251                        _diff = _diff && displayElementArrayDiff("roles", roles, _cother.roles, _out, _indent+1);
252                        _diff = _diff && displayElementArrayDiff("userDefinedFunctions", userDefinedFunctions, _cother.userDefinedFunctions, _out, _indent+1);
253                        return _diff;
254                }
255                // BEGIN pass-through code block ---
256Cube getCube(String cubeName) {
257                for (int i = 0; i < cubes.length; i++) {
258                    if (cubes[i].name.equals(cubeName)) {
259                        return cubes[i];
260                    }
261                }
262                throw Util.newInternal("Cannot find cube '" + cubeName + "'");
263            }
264            Dimension getPublicDimension(String dimensionName) {
265                for (int i = 0; i < dimensions.length; i++) {
266                    if (dimensions[i].name.equals(dimensionName)) {
267                        return dimensions[i];
268                    }
269                }
270                throw Util.newInternal(
271                    "Cannot find public dimension '" + dimensionName + "'");
272            }
273                // END pass-through code block ---
274        }
275
276        /**
277         * A CubeDimension is either a usage of a Dimension ('shared
278         * dimension', in MSOLAP parlance), or a 'private dimension'.
279         */
280        public static abstract class CubeDimension extends org.eigenbase.xom.ElementDef
281        {
282                public CubeDimension()
283                {
284                }
285
286                public CubeDimension(org.eigenbase.xom.DOMWrapper _def)
287                        throws org.eigenbase.xom.XOMException
288                {
289                        try {
290                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
291                                name = (String)_parser.getAttribute("name", "String", null, null, true);
292                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
293                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
294                                description = (String)_parser.getAttribute("description", "String", null, null, false);
295                                foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
296                                highCardinality = (Boolean)_parser.getAttribute("highCardinality", "Boolean", "false", null, false);
297                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
298                        } catch(org.eigenbase.xom.XOMException _ex) {
299                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
300                        }
301                }
302
303                public String name;  // required attribute
304                public String caption;  // optional attribute
305                public Boolean visible;  // attribute default: true
306                public String description;  // optional attribute
307                public String foreignKey;  // optional attribute
308                public Boolean highCardinality;  // attribute default: false
309
310                /**
311                 * Contains values of user-defined properties.
312                 */
313                public Annotations annotations;  //optional element
314
315                public String getName()
316                {
317                        return "CubeDimension";
318                }
319
320                public void display(java.io.PrintWriter _out, int _indent)
321                {
322                        _out.println(getName());
323                        displayAttribute(_out, "name", name, _indent+1);
324                        displayAttribute(_out, "caption", caption, _indent+1);
325                        displayAttribute(_out, "visible", visible, _indent+1);
326                        displayAttribute(_out, "description", description, _indent+1);
327                        displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
328                        displayAttribute(_out, "highCardinality", highCardinality, _indent+1);
329                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
330                }
331                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
332                {
333                        _out.beginTag("CubeDimension", new org.eigenbase.xom.XMLAttrVector()
334                                .add("name", name)
335                                .add("caption", caption)
336                                .add("visible", visible)
337                                .add("description", description)
338                                .add("foreignKey", foreignKey)
339                                .add("highCardinality", highCardinality)
340                                );
341                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
342                        _out.endTag("CubeDimension");
343                }
344                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
345                {
346                        CubeDimension _cother = (CubeDimension)_other;
347                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
348                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
349                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
350                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
351                        _diff = _diff && displayAttributeDiff("foreignKey", foreignKey, _cother.foreignKey, _out, _indent+1);
352                        _diff = _diff && displayAttributeDiff("highCardinality", highCardinality, _cother.highCardinality, _out, _indent+1);
353                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
354                        return _diff;
355                }
356                // BEGIN pass-through code block ---
357/**
358             * Looks up the base dimension of this dimension. If this is a
359             * usage of a shared dimension, returns the referenced dimension;
360             * otherwise returns the dimension itself.
361             *
362             * <p>Never returns null; if the dimension cannot be
363             * found, throws an error.
364             *
365             * @param schema Schema, never null
366             * @pre schema != null
367             * @post return != null
368             */
369            public abstract Dimension getDimension(Schema schema);
370                // END pass-through code block ---
371        }
372
373        /**
374         * Definition of a cube.
375         */
376        public static class Cube extends org.eigenbase.xom.ElementDef
377        {
378                public Cube()
379                {
380                }
381
382                public Cube(org.eigenbase.xom.DOMWrapper _def)
383                        throws org.eigenbase.xom.XOMException
384                {
385                        try {
386                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
387                                org.eigenbase.xom.NodeDef[] _tempArray;
388                                name = (String)_parser.getAttribute("name", "String", null, null, true);
389                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
390                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
391                                description = (String)_parser.getAttribute("description", "String", null, null, false);
392                                defaultMeasure = (String)_parser.getAttribute("defaultMeasure", "String", null, null, false);
393                                cache = (Boolean)_parser.getAttribute("cache", "Boolean", "true", null, false);
394                                enabled = (Boolean)_parser.getAttribute("enabled", "Boolean", "true", null, false);
395                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
396                                fact = (Relation)_parser.getElement(Relation.class, true);
397                                _tempArray = _parser.getArray(CubeDimension.class, 0, 0);
398                                dimensions = new CubeDimension[_tempArray.length];
399                                for (int _i = 0; _i < dimensions.length; _i++)
400                                        dimensions[_i] = (CubeDimension)_tempArray[_i];
401                                _tempArray = _parser.getArray(Measure.class, 0, 0);
402                                measures = new Measure[_tempArray.length];
403                                for (int _i = 0; _i < measures.length; _i++)
404                                        measures[_i] = (Measure)_tempArray[_i];
405                                _tempArray = _parser.getArray(CalculatedMember.class, 0, 0);
406                                calculatedMembers = new CalculatedMember[_tempArray.length];
407                                for (int _i = 0; _i < calculatedMembers.length; _i++)
408                                        calculatedMembers[_i] = (CalculatedMember)_tempArray[_i];
409                                _tempArray = _parser.getArray(NamedSet.class, 0, 0);
410                                namedSets = new NamedSet[_tempArray.length];
411                                for (int _i = 0; _i < namedSets.length; _i++)
412                                        namedSets[_i] = (NamedSet)_tempArray[_i];
413                        } catch(org.eigenbase.xom.XOMException _ex) {
414                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
415                        }
416                }
417
418                public String name;  // required attribute
419                public String caption;  // optional attribute
420                public Boolean visible;  // attribute default: true
421                public String description;  // optional attribute
422                public String defaultMeasure;  // optional attribute
423                public Boolean cache;  // attribute default: true
424                public Boolean enabled;  // attribute default: true
425
426                /**
427                 * Contains values of user-defined properties.
428                 */
429                public Annotations annotations;  //optional element
430                /**
431                 * The fact table is the source of all measures in this cube. If
432                 * this is a Table and the schema name is not
433                 * present, table name is left unqualified.
434                 */
435                public Relation fact;  //required element
436                /**
437                 */
438                public CubeDimension[] dimensions;  //optional array
439                /**
440                 */
441                public Measure[] measures;  //optional array
442                /**
443                 * Calculated members in this cube.
444                 */
445                public CalculatedMember[] calculatedMembers;  //optional array
446                /**
447                 * Named sets in this cube.
448                 */
449                public NamedSet[] namedSets;  //optional array
450
451                public String getName()
452                {
453                        return "Cube";
454                }
455
456                public void display(java.io.PrintWriter _out, int _indent)
457                {
458                        _out.println(getName());
459                        displayAttribute(_out, "name", name, _indent+1);
460                        displayAttribute(_out, "caption", caption, _indent+1);
461                        displayAttribute(_out, "visible", visible, _indent+1);
462                        displayAttribute(_out, "description", description, _indent+1);
463                        displayAttribute(_out, "defaultMeasure", defaultMeasure, _indent+1);
464                        displayAttribute(_out, "cache", cache, _indent+1);
465                        displayAttribute(_out, "enabled", enabled, _indent+1);
466                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
467                        displayElement(_out, "fact", (org.eigenbase.xom.ElementDef) fact, _indent+1);
468                        displayElementArray(_out, "dimensions", dimensions, _indent+1);
469                        displayElementArray(_out, "measures", measures, _indent+1);
470                        displayElementArray(_out, "calculatedMembers", calculatedMembers, _indent+1);
471                        displayElementArray(_out, "namedSets", namedSets, _indent+1);
472                }
473                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
474                {
475                        _out.beginTag("Cube", new org.eigenbase.xom.XMLAttrVector()
476                                .add("name", name)
477                                .add("caption", caption)
478                                .add("visible", visible)
479                                .add("description", description)
480                                .add("defaultMeasure", defaultMeasure)
481                                .add("cache", cache)
482                                .add("enabled", enabled)
483                                );
484                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
485                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) fact);
486                        displayXMLElementArray(_out, dimensions);
487                        displayXMLElementArray(_out, measures);
488                        displayXMLElementArray(_out, calculatedMembers);
489                        displayXMLElementArray(_out, namedSets);
490                        _out.endTag("Cube");
491                }
492                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
493                {
494                        Cube _cother = (Cube)_other;
495                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
496                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
497                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
498                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
499                        _diff = _diff && displayAttributeDiff("defaultMeasure", defaultMeasure, _cother.defaultMeasure, _out, _indent+1);
500                        _diff = _diff && displayAttributeDiff("cache", cache, _cother.cache, _out, _indent+1);
501                        _diff = _diff && displayAttributeDiff("enabled", enabled, _cother.enabled, _out, _indent+1);
502                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
503                        _diff = _diff && displayElementDiff("fact", fact, _cother.fact, _out, _indent+1);
504                        _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
505                        _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
506                        _diff = _diff && displayElementArrayDiff("calculatedMembers", calculatedMembers, _cother.calculatedMembers, _out, _indent+1);
507                        _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
508                        return _diff;
509                }
510                // BEGIN pass-through code block ---
511public boolean isEnabled() {
512                return enabled.booleanValue();
513            }
514            Dimension getDimension(Schema xmlSchema, String dimensionName) {
515                for (int i = 0; i < dimensions.length; i++) {
516                    if (dimensions[i].name.equals(dimensionName)) {
517                        return dimensions[i].getDimension(xmlSchema);
518                    }
519                }
520                throw Util.newInternal(
521                    "Cannot find dimension '" + dimensionName + "' in cube '" +
522                    name + "'");
523            }
524            public boolean equals(Object o) {
525                return (this == o);
526            }
527                // END pass-through code block ---
528        }
529
530        /**
531         * A VirtualCube is a set of dimensions and
532         * measures gleaned from other cubes.
533         */
534        public static class VirtualCube extends org.eigenbase.xom.ElementDef
535        {
536                public VirtualCube()
537                {
538                }
539
540                public VirtualCube(org.eigenbase.xom.DOMWrapper _def)
541                        throws org.eigenbase.xom.XOMException
542                {
543                        try {
544                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
545                                org.eigenbase.xom.NodeDef[] _tempArray;
546                                enabled = (Boolean)_parser.getAttribute("enabled", "Boolean", "true", null, false);
547                                name = (String)_parser.getAttribute("name", "String", null, null, false);
548                                defaultMeasure = (String)_parser.getAttribute("defaultMeasure", "String", null, null, false);
549                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
550                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
551                                description = (String)_parser.getAttribute("description", "String", null, null, false);
552                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
553                                cubeUsage = (CubeUsages)_parser.getElement(CubeUsages.class, false);
554                                _tempArray = _parser.getArray(VirtualCubeDimension.class, 0, 0);
555                                dimensions = new VirtualCubeDimension[_tempArray.length];
556                                for (int _i = 0; _i < dimensions.length; _i++)
557                                        dimensions[_i] = (VirtualCubeDimension)_tempArray[_i];
558                                _tempArray = _parser.getArray(VirtualCubeMeasure.class, 0, 0);
559                                measures = new VirtualCubeMeasure[_tempArray.length];
560                                for (int _i = 0; _i < measures.length; _i++)
561                                        measures[_i] = (VirtualCubeMeasure)_tempArray[_i];
562                                _tempArray = _parser.getArray(CalculatedMember.class, 0, 0);
563                                calculatedMembers = new CalculatedMember[_tempArray.length];
564                                for (int _i = 0; _i < calculatedMembers.length; _i++)
565                                        calculatedMembers[_i] = (CalculatedMember)_tempArray[_i];
566                                _tempArray = _parser.getArray(NamedSet.class, 0, 0);
567                                namedSets = new NamedSet[_tempArray.length];
568                                for (int _i = 0; _i < namedSets.length; _i++)
569                                        namedSets[_i] = (NamedSet)_tempArray[_i];
570                        } catch(org.eigenbase.xom.XOMException _ex) {
571                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
572                        }
573                }
574
575                public Boolean enabled;  // attribute default: true
576                public String name;  // optional attribute
577                public String defaultMeasure;  // optional attribute
578                public String caption;  // optional attribute
579                public Boolean visible;  // attribute default: true
580                public String description;  // optional attribute
581
582                /**
583                 * Contains values of user-defined properties.
584                 */
585                public Annotations annotations;  //optional element
586                /**
587                 */
588                public CubeUsages cubeUsage;  //optional element
589                /**
590                 */
591                public VirtualCubeDimension[] dimensions;  //optional array
592                /**
593                 */
594                public VirtualCubeMeasure[] measures;  //optional array
595                /**
596                 * Calculated members that belong to this virtual cube.
597                 * (Calculated members inherited from other cubes should not be
598                 * in this list.)
599                 */
600                public CalculatedMember[] calculatedMembers;  //optional array
601                /**
602                 * Named sets in this cube.
603                 */
604                public NamedSet[] namedSets;  //optional array
605
606                public String getName()
607                {
608                        return "VirtualCube";
609                }
610
611                public void display(java.io.PrintWriter _out, int _indent)
612                {
613                        _out.println(getName());
614                        displayAttribute(_out, "enabled", enabled, _indent+1);
615                        displayAttribute(_out, "name", name, _indent+1);
616                        displayAttribute(_out, "defaultMeasure", defaultMeasure, _indent+1);
617                        displayAttribute(_out, "caption", caption, _indent+1);
618                        displayAttribute(_out, "visible", visible, _indent+1);
619                        displayAttribute(_out, "description", description, _indent+1);
620                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
621                        displayElement(_out, "cubeUsage", (org.eigenbase.xom.ElementDef) cubeUsage, _indent+1);
622                        displayElementArray(_out, "dimensions", dimensions, _indent+1);
623                        displayElementArray(_out, "measures", measures, _indent+1);
624                        displayElementArray(_out, "calculatedMembers", calculatedMembers, _indent+1);
625                        displayElementArray(_out, "namedSets", namedSets, _indent+1);
626                }
627                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
628                {
629                        _out.beginTag("VirtualCube", new org.eigenbase.xom.XMLAttrVector()
630                                .add("enabled", enabled)
631                                .add("name", name)
632                                .add("defaultMeasure", defaultMeasure)
633                                .add("caption", caption)
634                                .add("visible", visible)
635                                .add("description", description)
636                                );
637                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
638                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) cubeUsage);
639                        displayXMLElementArray(_out, dimensions);
640                        displayXMLElementArray(_out, measures);
641                        displayXMLElementArray(_out, calculatedMembers);
642                        displayXMLElementArray(_out, namedSets);
643                        _out.endTag("VirtualCube");
644                }
645                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
646                {
647                        VirtualCube _cother = (VirtualCube)_other;
648                        boolean _diff = displayAttributeDiff("enabled", enabled, _cother.enabled, _out, _indent+1);
649                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
650                        _diff = _diff && displayAttributeDiff("defaultMeasure", defaultMeasure, _cother.defaultMeasure, _out, _indent+1);
651                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
652                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
653                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
654                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
655                        _diff = _diff && displayElementDiff("cubeUsage", cubeUsage, _cother.cubeUsage, _out, _indent+1);
656                        _diff = _diff && displayElementArrayDiff("dimensions", dimensions, _cother.dimensions, _out, _indent+1);
657                        _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
658                        _diff = _diff && displayElementArrayDiff("calculatedMembers", calculatedMembers, _cother.calculatedMembers, _out, _indent+1);
659                        _diff = _diff && displayElementArrayDiff("namedSets", namedSets, _cother.namedSets, _out, _indent+1);
660                        return _diff;
661                }
662                // BEGIN pass-through code block ---
663public boolean isEnabled() {
664                return enabled.booleanValue();
665            }
666                // END pass-through code block ---
667        }
668
669        /**
670         * List of base cubes used by the virtual cube.
671         */
672        public static class CubeUsages extends org.eigenbase.xom.ElementDef
673        {
674                public CubeUsages()
675                {
676                }
677
678                public CubeUsages(org.eigenbase.xom.DOMWrapper _def)
679                        throws org.eigenbase.xom.XOMException
680                {
681                        try {
682                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
683                                org.eigenbase.xom.NodeDef[] _tempArray;
684                                _tempArray = _parser.getArray(CubeUsage.class, 1, 0);
685                                cubeUsages = new CubeUsage[_tempArray.length];
686                                for (int _i = 0; _i < cubeUsages.length; _i++)
687                                        cubeUsages[_i] = (CubeUsage)_tempArray[_i];
688                        } catch(org.eigenbase.xom.XOMException _ex) {
689                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
690                        }
691                }
692
693
694                /**
695                 */
696                public CubeUsage[] cubeUsages;  //min 1
697
698                public String getName()
699                {
700                        return "CubeUsages";
701                }
702
703                public void display(java.io.PrintWriter _out, int _indent)
704                {
705                        _out.println(getName());
706                        displayElementArray(_out, "cubeUsages", cubeUsages, _indent+1);
707                }
708                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
709                {
710                        _out.beginTag("CubeUsages", new org.eigenbase.xom.XMLAttrVector()
711                                );
712                        displayXMLElementArray(_out, cubeUsages);
713                        _out.endTag("CubeUsages");
714                }
715                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
716                {
717                        CubeUsages _cother = (CubeUsages)_other;
718                        boolean _diff = displayElementArrayDiff("cubeUsages", cubeUsages, _cother.cubeUsages, _out, _indent+1);
719                        return _diff;
720                }
721        }
722
723        public static class CubeUsage extends org.eigenbase.xom.ElementDef
724        {
725                public CubeUsage()
726                {
727                }
728
729                public CubeUsage(org.eigenbase.xom.DOMWrapper _def)
730                        throws org.eigenbase.xom.XOMException
731                {
732                        try {
733                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
734                                cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, true);
735                                ignoreUnrelatedDimensions = (Boolean)_parser.getAttribute("ignoreUnrelatedDimensions", "Boolean", "false", null, false);
736                        } catch(org.eigenbase.xom.XOMException _ex) {
737                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
738                        }
739                }
740
741                public String cubeName;  // required attribute
742                public Boolean ignoreUnrelatedDimensions;  // attribute default: false
743
744
745                public String getName()
746                {
747                        return "CubeUsage";
748                }
749
750                public void display(java.io.PrintWriter _out, int _indent)
751                {
752                        _out.println(getName());
753                        displayAttribute(_out, "cubeName", cubeName, _indent+1);
754                        displayAttribute(_out, "ignoreUnrelatedDimensions", ignoreUnrelatedDimensions, _indent+1);
755                }
756                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
757                {
758                        _out.beginTag("CubeUsage", new org.eigenbase.xom.XMLAttrVector()
759                                .add("cubeName", cubeName)
760                                .add("ignoreUnrelatedDimensions", ignoreUnrelatedDimensions)
761                                );
762                        _out.endTag("CubeUsage");
763                }
764                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
765                {
766                        CubeUsage _cother = (CubeUsage)_other;
767                        boolean _diff = displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
768                        _diff = _diff && displayAttributeDiff("ignoreUnrelatedDimensions", ignoreUnrelatedDimensions, _cother.ignoreUnrelatedDimensions, _out, _indent+1);
769                        return _diff;
770                }
771        }
772
773        /**
774         * A VirtualCubeDimension is a usage of a Dimension in a VirtualCube.
775         */
776        public static class VirtualCubeDimension extends CubeDimension
777        {
778                public VirtualCubeDimension()
779                {
780                }
781
782                public VirtualCubeDimension(org.eigenbase.xom.DOMWrapper _def)
783                        throws org.eigenbase.xom.XOMException
784                {
785                        try {
786                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
787                                cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, false);
788                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
789                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
790                                description = (String)_parser.getAttribute("description", "String", null, null, false);
791                                foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
792                                highCardinality = (Boolean)_parser.getAttribute("highCardinality", "Boolean", "false", null, false);
793                                name = (String)_parser.getAttribute("name", "String", null, null, false);
794                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
795                        } catch(org.eigenbase.xom.XOMException _ex) {
796                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
797                        }
798                }
799
800                public String cubeName;  // optional attribute
801
802
803                public String getName()
804                {
805                        return "VirtualCubeDimension";
806                }
807
808                public void display(java.io.PrintWriter _out, int _indent)
809                {
810                        _out.println(getName());
811                        displayAttribute(_out, "cubeName", cubeName, _indent+1);
812                        displayAttribute(_out, "caption", caption, _indent+1);
813                        displayAttribute(_out, "visible", visible, _indent+1);
814                        displayAttribute(_out, "description", description, _indent+1);
815                        displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
816                        displayAttribute(_out, "highCardinality", highCardinality, _indent+1);
817                        displayAttribute(_out, "name", name, _indent+1);
818                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
819                }
820                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
821                {
822                        _out.beginTag("VirtualCubeDimension", new org.eigenbase.xom.XMLAttrVector()
823                                .add("cubeName", cubeName)
824                                .add("caption", caption)
825                                .add("visible", visible)
826                                .add("description", description)
827                                .add("foreignKey", foreignKey)
828                                .add("highCardinality", highCardinality)
829                                .add("name", name)
830                                );
831                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
832                        _out.endTag("VirtualCubeDimension");
833                }
834                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
835                {
836                        VirtualCubeDimension _cother = (VirtualCubeDimension)_other;
837                        boolean _diff = displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
838                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
839                        return _diff;
840                }
841                // BEGIN pass-through code block ---
842// implement CubeDimension
843            public Dimension getDimension(Schema schema) {
844                Util.assertPrecondition(schema != null, "schema != null");
845                if (cubeName == null) {
846                    return schema.getPublicDimension(name);
847                } else {
848                    Cube cube = schema.getCube(cubeName);
849                    return cube.getDimension(schema, name);
850                }
851            }
852                // END pass-through code block ---
853        }
854
855        /**
856         * A VirtualCubeMeasure is a usage of a Measure in a VirtualCube.
857         */
858        public static class VirtualCubeMeasure extends org.eigenbase.xom.ElementDef
859        {
860                public VirtualCubeMeasure()
861                {
862                }
863
864                public VirtualCubeMeasure(org.eigenbase.xom.DOMWrapper _def)
865                        throws org.eigenbase.xom.XOMException
866                {
867                        try {
868                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
869                                cubeName = (String)_parser.getAttribute("cubeName", "String", null, null, false);
870                                name = (String)_parser.getAttribute("name", "String", null, null, false);
871                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", null, null, false);
872                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
873                        } catch(org.eigenbase.xom.XOMException _ex) {
874                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
875                        }
876                }
877
878                public String cubeName;  // optional attribute
879                public String name;  // optional attribute
880                public Boolean visible;  // optional attribute
881
882                /**
883                 * Contains values of user-defined properties.
884                 */
885                public Annotations annotations;  //optional element
886
887                public String getName()
888                {
889                        return "VirtualCubeMeasure";
890                }
891
892                public void display(java.io.PrintWriter _out, int _indent)
893                {
894                        _out.println(getName());
895                        displayAttribute(_out, "cubeName", cubeName, _indent+1);
896                        displayAttribute(_out, "name", name, _indent+1);
897                        displayAttribute(_out, "visible", visible, _indent+1);
898                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
899                }
900                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
901                {
902                        _out.beginTag("VirtualCubeMeasure", new org.eigenbase.xom.XMLAttrVector()
903                                .add("cubeName", cubeName)
904                                .add("name", name)
905                                .add("visible", visible)
906                                );
907                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
908                        _out.endTag("VirtualCubeMeasure");
909                }
910                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
911                {
912                        VirtualCubeMeasure _cother = (VirtualCubeMeasure)_other;
913                        boolean _diff = displayAttributeDiff("cubeName", cubeName, _cother.cubeName, _out, _indent+1);
914                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
915                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
916                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
917                        return _diff;
918                }
919        }
920
921        /**
922         * A DimensionUsage is usage of a shared
923         * Dimension within the context of a cube.
924         */
925        public static class DimensionUsage extends CubeDimension
926        {
927                public DimensionUsage()
928                {
929                }
930
931                public DimensionUsage(org.eigenbase.xom.DOMWrapper _def)
932                        throws org.eigenbase.xom.XOMException
933                {
934                        try {
935                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
936                                source = (String)_parser.getAttribute("source", "String", null, null, true);
937                                level = (String)_parser.getAttribute("level", "String", null, null, false);
938                                usagePrefix = (String)_parser.getAttribute("usagePrefix", "String", null, null, false);
939                                name = (String)_parser.getAttribute("name", "String", null, null, true);
940                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
941                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
942                                description = (String)_parser.getAttribute("description", "String", null, null, false);
943                                foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
944                                highCardinality = (Boolean)_parser.getAttribute("highCardinality", "Boolean", "false", null, false);
945                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
946                        } catch(org.eigenbase.xom.XOMException _ex) {
947                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
948                        }
949                }
950
951                public String source;  // required attribute
952                public String level;  // optional attribute
953                public String usagePrefix;  // optional attribute
954
955
956                public String getName()
957                {
958                        return "DimensionUsage";
959                }
960
961                public void display(java.io.PrintWriter _out, int _indent)
962                {
963                        _out.println(getName());
964                        displayAttribute(_out, "source", source, _indent+1);
965                        displayAttribute(_out, "level", level, _indent+1);
966                        displayAttribute(_out, "usagePrefix", usagePrefix, _indent+1);
967                        displayAttribute(_out, "name", name, _indent+1);
968                        displayAttribute(_out, "caption", caption, _indent+1);
969                        displayAttribute(_out, "visible", visible, _indent+1);
970                        displayAttribute(_out, "description", description, _indent+1);
971                        displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
972                        displayAttribute(_out, "highCardinality", highCardinality, _indent+1);
973                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
974                }
975                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
976                {
977                        _out.beginTag("DimensionUsage", new org.eigenbase.xom.XMLAttrVector()
978                                .add("source", source)
979                                .add("level", level)
980                                .add("usagePrefix", usagePrefix)
981                                .add("name", name)
982                                .add("caption", caption)
983                                .add("visible", visible)
984                                .add("description", description)
985                                .add("foreignKey", foreignKey)
986                                .add("highCardinality", highCardinality)
987                                );
988                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
989                        _out.endTag("DimensionUsage");
990                }
991                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
992                {
993                        DimensionUsage _cother = (DimensionUsage)_other;
994                        boolean _diff = displayAttributeDiff("source", source, _cother.source, _out, _indent+1);
995                        _diff = _diff && displayAttributeDiff("level", level, _cother.level, _out, _indent+1);
996                        _diff = _diff && displayAttributeDiff("usagePrefix", usagePrefix, _cother.usagePrefix, _out, _indent+1);
997                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
998                        return _diff;
999                }
1000                // BEGIN pass-through code block ---
1001// implement CubeDimension
1002            public Dimension getDimension(Schema schema) {
1003                Util.assertPrecondition(schema != null, "schema != null");
1004                for (int i = 0; i < schema.dimensions.length; i++) {
1005                    if (schema.dimensions[i].name.equals(source)) {
1006                        return schema.dimensions[i];
1007                    }
1008                }
1009                throw Util.newInternal(
1010                    "Cannot find shared dimension '" + source + "'");
1011            }
1012                // END pass-through code block ---
1013        }
1014
1015        /**
1016         * A Dimension is a collection of hierarchies. There are
1017         * two kinds: a public dimension belongs to a
1018         * Schema, and be used by several cubes; a
1019         * private dimension belongs to a
1020         * Cube. The foreignKey field is only
1021         * applicable to private dimensions.
1022         */
1023        public static class Dimension extends CubeDimension
1024        {
1025                public Dimension()
1026                {
1027                }
1028
1029                public Dimension(org.eigenbase.xom.DOMWrapper _def)
1030                        throws org.eigenbase.xom.XOMException
1031                {
1032                        try {
1033                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1034                                org.eigenbase.xom.NodeDef[] _tempArray;
1035                                type = (String)_parser.getAttribute("type", "String", null, _type_values, false);
1036                                usagePrefix = (String)_parser.getAttribute("usagePrefix", "String", null, null, false);
1037                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
1038                                foreignKey = (String)_parser.getAttribute("foreignKey", "String", null, null, false);
1039                                highCardinality = (Boolean)_parser.getAttribute("highCardinality", "Boolean", "false", null, false);
1040                                name = (String)_parser.getAttribute("name", "String", null, null, true);
1041                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1042                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1043                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
1044                                _tempArray = _parser.getArray(Hierarchy.class, 0, 0);
1045                                hierarchies = new Hierarchy[_tempArray.length];
1046                                for (int _i = 0; _i < hierarchies.length; _i++)
1047                                        hierarchies[_i] = (Hierarchy)_tempArray[_i];
1048                        } catch(org.eigenbase.xom.XOMException _ex) {
1049                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1050                        }
1051                }
1052
1053                /** Allowable values for {@link #type}. */
1054                public static final String[] _type_values = {"StandardDimension", "TimeDimension"};
1055                public String type;  // optional attribute
1056                public String usagePrefix;  // optional attribute
1057
1058                /**
1059                 */
1060                public Hierarchy[] hierarchies;  //optional array
1061
1062                public String getName()
1063                {
1064                        return "Dimension";
1065                }
1066
1067                public void display(java.io.PrintWriter _out, int _indent)
1068                {
1069                        _out.println(getName());
1070                        displayAttribute(_out, "type", type, _indent+1);
1071                        displayAttribute(_out, "usagePrefix", usagePrefix, _indent+1);
1072                        displayAttribute(_out, "visible", visible, _indent+1);
1073                        displayAttribute(_out, "foreignKey", foreignKey, _indent+1);
1074                        displayAttribute(_out, "highCardinality", highCardinality, _indent+1);
1075                        displayAttribute(_out, "name", name, _indent+1);
1076                        displayAttribute(_out, "caption", caption, _indent+1);
1077                        displayAttribute(_out, "description", description, _indent+1);
1078                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
1079                        displayElementArray(_out, "hierarchies", hierarchies, _indent+1);
1080                }
1081                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1082                {
1083                        _out.beginTag("Dimension", new org.eigenbase.xom.XMLAttrVector()
1084                                .add("type", type)
1085                                .add("usagePrefix", usagePrefix)
1086                                .add("visible", visible)
1087                                .add("foreignKey", foreignKey)
1088                                .add("highCardinality", highCardinality)
1089                                .add("name", name)
1090                                .add("caption", caption)
1091                                .add("description", description)
1092                                );
1093                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
1094                        displayXMLElementArray(_out, hierarchies);
1095                        _out.endTag("Dimension");
1096                }
1097                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1098                {
1099                        Dimension _cother = (Dimension)_other;
1100                        boolean _diff = displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
1101                        _diff = _diff && displayAttributeDiff("usagePrefix", usagePrefix, _cother.usagePrefix, _out, _indent+1);
1102                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
1103                        _diff = _diff && displayElementArrayDiff("hierarchies", hierarchies, _cother.hierarchies, _out, _indent+1);
1104                        return _diff;
1105                }
1106                // BEGIN pass-through code block ---
1107// implement CubeDimension
1108            public Dimension getDimension(Schema schema) {
1109                Util.assertPrecondition(schema != null, "schema != null");
1110                return this;
1111            }
1112
1113            // Return the dimension's enumerated type.
1114            public DimensionType getDimensionType() {
1115                if (type == null) {
1116                    return null; //DimensionType.StandardDimension;
1117                } else {
1118                    return DimensionType.valueOf(type);
1119                }
1120            }
1121                // END pass-through code block ---
1122        }
1123
1124        /**
1125         * Defines a hierarchy.
1126         * You must specify at most one <Relation>
1127         * or memberReaderClass. If you specify none, the
1128         * hierarchy is assumed to come from the same fact table of the
1129         * current cube.
1130         */
1131        public static class Hierarchy extends org.eigenbase.xom.ElementDef
1132        {
1133                public Hierarchy()
1134                {
1135                }
1136
1137                public Hierarchy(org.eigenbase.xom.DOMWrapper _def)
1138                        throws org.eigenbase.xom.XOMException
1139                {
1140                        try {
1141                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1142                                org.eigenbase.xom.NodeDef[] _tempArray;
1143                                name = (String)_parser.getAttribute("name", "String", null, null, false);
1144                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
1145                                hasAll = (Boolean)_parser.getAttribute("hasAll", "Boolean", null, null, true);
1146                                allMemberName = (String)_parser.getAttribute("allMemberName", "String", null, null, false);
1147                                allMemberCaption = (String)_parser.getAttribute("allMemberCaption", "String", null, null, false);
1148                                allLevelName = (String)_parser.getAttribute("allLevelName", "String", null, null, false);
1149                                primaryKey = (String)_parser.getAttribute("primaryKey", "String", null, null, false);
1150                                primaryKeyTable = (String)_parser.getAttribute("primaryKeyTable", "String", null, null, false);
1151                                defaultMember = (String)_parser.getAttribute("defaultMember", "String", null, null, false);
1152                                memberReaderClass = (String)_parser.getAttribute("memberReaderClass", "String", null, null, false);
1153                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1154                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1155                                uniqueKeyLevelName = (String)_parser.getAttribute("uniqueKeyLevelName", "String", null, null, false);
1156                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
1157                                relation = (RelationOrJoin)_parser.getElement(RelationOrJoin.class, false);
1158                                _tempArray = _parser.getArray(Level.class, 0, 0);
1159                                levels = new Level[_tempArray.length];
1160                                for (int _i = 0; _i < levels.length; _i++)
1161                                        levels[_i] = (Level)_tempArray[_i];
1162                                _tempArray = _parser.getArray(MemberReaderParameter.class, 0, 0);
1163                                memberReaderParameters = new MemberReaderParameter[_tempArray.length];
1164                                for (int _i = 0; _i < memberReaderParameters.length; _i++)
1165                                        memberReaderParameters[_i] = (MemberReaderParameter)_tempArray[_i];
1166                        } catch(org.eigenbase.xom.XOMException _ex) {
1167                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1168                        }
1169                }
1170
1171                public String name;  // optional attribute
1172                public Boolean visible;  // attribute default: true
1173                public Boolean hasAll;  // required attribute
1174                public String allMemberName;  // optional attribute
1175                public String allMemberCaption;  // optional attribute
1176                public String allLevelName;  // optional attribute
1177                public String primaryKey;  // optional attribute
1178                public String primaryKeyTable;  // optional attribute
1179                public String defaultMember;  // optional attribute
1180                public String memberReaderClass;  // optional attribute
1181                public String caption;  // optional attribute
1182                public String description;  // optional attribute
1183                public String uniqueKeyLevelName;  // optional attribute
1184
1185                /**
1186                 * Contains values of user-defined properties.
1187                 */
1188                public Annotations annotations;  //optional element
1189                /**
1190                 * The {@link MondrianGuiDef.Table table},
1191                 * {@link MondrianGuiDef.Join set of tables},
1192                 * {@link MondrianGuiDef.View SQL statement}, or
1193                 * {@link MondrianGuiDef.InlineTable inline table}
1194                 * which populates this hierarchy.
1195                 */
1196                public RelationOrJoin relation;  //optional element
1197                /**
1198                 */
1199                public Level[] levels;  //optional array
1200                public MemberReaderParameter[] memberReaderParameters;  //optional array
1201
1202                public String getName()
1203                {
1204                        return "Hierarchy";
1205                }
1206
1207                public void display(java.io.PrintWriter _out, int _indent)
1208                {
1209                        _out.println(getName());
1210                        displayAttribute(_out, "name", name, _indent+1);
1211                        displayAttribute(_out, "visible", visible, _indent+1);
1212                        displayAttribute(_out, "hasAll", hasAll, _indent+1);
1213                        displayAttribute(_out, "allMemberName", allMemberName, _indent+1);
1214                        displayAttribute(_out, "allMemberCaption", allMemberCaption, _indent+1);
1215                        displayAttribute(_out, "allLevelName", allLevelName, _indent+1);
1216                        displayAttribute(_out, "primaryKey", primaryKey, _indent+1);
1217                        displayAttribute(_out, "primaryKeyTable", primaryKeyTable, _indent+1);
1218                        displayAttribute(_out, "defaultMember", defaultMember, _indent+1);
1219                        displayAttribute(_out, "memberReaderClass", memberReaderClass, _indent+1);
1220                        displayAttribute(_out, "caption", caption, _indent+1);
1221                        displayAttribute(_out, "description", description, _indent+1);
1222                        displayAttribute(_out, "uniqueKeyLevelName", uniqueKeyLevelName, _indent+1);
1223                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
1224                        displayElement(_out, "relation", (org.eigenbase.xom.ElementDef) relation, _indent+1);
1225                        displayElementArray(_out, "levels", levels, _indent+1);
1226                        displayElementArray(_out, "memberReaderParameters", memberReaderParameters, _indent+1);
1227                }
1228                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1229                {
1230                        _out.beginTag("Hierarchy", new org.eigenbase.xom.XMLAttrVector()
1231                                .add("name", name)
1232                                .add("visible", visible)
1233                                .add("hasAll", hasAll)
1234                                .add("allMemberName", allMemberName)
1235                                .add("allMemberCaption", allMemberCaption)
1236                                .add("allLevelName", allLevelName)
1237                                .add("primaryKey", primaryKey)
1238                                .add("primaryKeyTable", primaryKeyTable)
1239                                .add("defaultMember", defaultMember)
1240                                .add("memberReaderClass", memberReaderClass)
1241                                .add("caption", caption)
1242                                .add("description", description)
1243                                .add("uniqueKeyLevelName", uniqueKeyLevelName)
1244                                );
1245                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
1246                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) relation);
1247                        displayXMLElementArray(_out, levels);
1248                        displayXMLElementArray(_out, memberReaderParameters);
1249                        _out.endTag("Hierarchy");
1250                }
1251                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1252                {
1253                        Hierarchy _cother = (Hierarchy)_other;
1254                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1255                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
1256                        _diff = _diff && displayAttributeDiff("hasAll", hasAll, _cother.hasAll, _out, _indent+1);
1257                        _diff = _diff && displayAttributeDiff("allMemberName", allMemberName, _cother.allMemberName, _out, _indent+1);
1258                        _diff = _diff && displayAttributeDiff("allMemberCaption", allMemberCaption, _cother.allMemberCaption, _out, _indent+1);
1259                        _diff = _diff && displayAttributeDiff("allLevelName", allLevelName, _cother.allLevelName, _out, _indent+1);
1260                        _diff = _diff && displayAttributeDiff("primaryKey", primaryKey, _cother.primaryKey, _out, _indent+1);
1261                        _diff = _diff && displayAttributeDiff("primaryKeyTable", primaryKeyTable, _cother.primaryKeyTable, _out, _indent+1);
1262                        _diff = _diff && displayAttributeDiff("defaultMember", defaultMember, _cother.defaultMember, _out, _indent+1);
1263                        _diff = _diff && displayAttributeDiff("memberReaderClass", memberReaderClass, _cother.memberReaderClass, _out, _indent+1);
1264                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1265                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
1266                        _diff = _diff && displayAttributeDiff("uniqueKeyLevelName", uniqueKeyLevelName, _cother.uniqueKeyLevelName, _out, _indent+1);
1267                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
1268                        _diff = _diff && displayElementDiff("relation", relation, _cother.relation, _out, _indent+1);
1269                        _diff = _diff && displayElementArrayDiff("levels", levels, _cother.levels, _out, _indent+1);
1270                        _diff = _diff && displayElementArrayDiff("memberReaderParameters", memberReaderParameters, _cother.memberReaderParameters, _out, _indent+1);
1271                        return _diff;
1272                }
1273                // BEGIN pass-through code block ---
1274/* implement equals required to handle cases where two different
1275                hierarchy objects have equal contents.
1276                Resolves problem : of Hierarchy tree disappears when expanded
1277                if there are two (or more) exactly similar Hierarchy objects
1278                within a dimension. We can say two hierarchy objects are different
1279                if their references are different.
1280            */
1281            public boolean equals(Object o) {
1282                return (this == o);
1283            }
1284                // END pass-through code block ---
1285        }
1286
1287        public static class Level extends org.eigenbase.xom.ElementDef
1288        {
1289                public Level()
1290                {
1291                }
1292
1293                public Level(org.eigenbase.xom.DOMWrapper _def)
1294                        throws org.eigenbase.xom.XOMException
1295                {
1296                        try {
1297                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1298                                org.eigenbase.xom.NodeDef[] _tempArray;
1299                                approxRowCount = (String)_parser.getAttribute("approxRowCount", "String", null, null, false);
1300                                name = (String)_parser.getAttribute("name", "String", null, null, true);
1301                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", "true", null, false);
1302                                table = (String)_parser.getAttribute("table", "String", null, null, false);
1303                                column = (String)_parser.getAttribute("column", "String", null, null, false);
1304                                nameColumn = (String)_parser.getAttribute("nameColumn", "String", null, null, false);
1305                                ordinalColumn = (String)_parser.getAttribute("ordinalColumn", "String", null, null, false);
1306                                parentColumn = (String)_parser.getAttribute("parentColumn", "String", null, null, false);
1307                                nullParentValue = (String)_parser.getAttribute("nullParentValue", "String", null, null, false);
1308                                type = (String)_parser.getAttribute("type", "String", "String", _type_values, false);
1309                                internalType = (String)_parser.getAttribute("internalType", "String", null, _internalType_values, false);
1310                                uniqueMembers = (Boolean)_parser.getAttribute("uniqueMembers", "Boolean", "false", null, false);
1311                                levelType = (String)_parser.getAttribute("levelType", "String", "Regular", _levelType_values, false);
1312                                hideMemberIf = (String)_parser.getAttribute("hideMemberIf", "String", "Never", _hideMemberIf_values, false);
1313                                formatter = (String)_parser.getAttribute("formatter", "String", null, null, false);
1314                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1315                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1316                                captionColumn = (String)_parser.getAttribute("captionColumn", "String", null, null, false);
1317                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
1318                                keyExp = (KeyExpression)_parser.getElement(KeyExpression.class, false);
1319                                nameExp = (NameExpression)_parser.getElement(NameExpression.class, false);
1320                                captionExp = (CaptionExpression)_parser.getElement(CaptionExpression.class, false);
1321                                ordinalExp = (OrdinalExpression)_parser.getElement(OrdinalExpression.class, false);
1322                                parentExp = (ParentExpression)_parser.getElement(ParentExpression.class, false);
1323                                memberFormatter = (MemberFormatter)_parser.getElement(MemberFormatter.class, false);
1324                                closure = (Closure)_parser.getElement(Closure.class, false);
1325                                _tempArray = _parser.getArray(Property.class, 0, 0);
1326                                properties = new Property[_tempArray.length];
1327                                for (int _i = 0; _i < properties.length; _i++)
1328                                        properties[_i] = (Property)_tempArray[_i];
1329                        } catch(org.eigenbase.xom.XOMException _ex) {
1330                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1331                        }
1332                }
1333
1334                public String approxRowCount;  // optional attribute
1335                public String name;  // required attribute
1336                public Boolean visible;  // attribute default: true
1337                public String table;  // optional attribute
1338                public String column;  // optional attribute
1339                public String nameColumn;  // optional attribute
1340                public String ordinalColumn;  // optional attribute
1341                public String parentColumn;  // optional attribute
1342                public String nullParentValue;  // optional attribute
1343                /** Allowable values for {@link #type}. */
1344                public static final String[] _type_values = {"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp"};
1345                public String type;  // attribute default: String
1346                /** Allowable values for {@link #internalType}. */
1347                public static final String[] _internalType_values = {"int", "long", "Object", "String"};
1348                public String internalType;  // optional attribute
1349                public Boolean uniqueMembers;  // attribute default: false
1350                /** Allowable values for {@link #levelType}. */
1351                public static final String[] _levelType_values = {"Regular", "TimeYears", "TimeHalfYears", "TimeHalfYear", "TimeQuarters", "TimeMonths", "TimeWeeks", "TimeDays", "TimeHours", "TimeMinutes", "TimeSeconds", "TimeUndefined"};
1352                public String levelType;  // attribute default: Regular
1353                /** Allowable values for {@link #hideMemberIf}. */
1354                public static final String[] _hideMemberIf_values = {"Never", "IfBlankName", "IfParentsName"};
1355                public String hideMemberIf;  // attribute default: Never
1356                public String formatter;  // optional attribute
1357                public String caption;  // optional attribute
1358                public String description;  // optional attribute
1359                public String captionColumn;  // optional attribute
1360
1361                /**
1362                 * Contains values of user-defined properties.
1363                 */
1364                public Annotations annotations;  //optional element
1365                /**
1366                 * The SQL expression used to populate this level's key.
1367                 */
1368                public KeyExpression keyExp;  //optional element
1369                /**
1370                 * The SQL expression used to populate this level's name. If not
1371                 * specified, the level's key is used.
1372                 */
1373                public NameExpression nameExp;  //optional element
1374                /**
1375                 * The SQL expression used to populate this level's caption. If not
1376                 * specified, the level's name is used.
1377                 */
1378                public CaptionExpression captionExp;  //optional element
1379                /**
1380                 * The SQL expression used to populate this level's ordinal.
1381                 */
1382                public OrdinalExpression ordinalExp;  //optional element
1383                /**
1384                 * The SQL expression used to join to the parent member in a
1385                 * parent-child hierarchy.
1386                 */
1387                public ParentExpression parentExp;  //optional element
1388                /**
1389                 * Member formatter.
1390                 */
1391                public MemberFormatter memberFormatter;  //optional element
1392                public Closure closure;  //optional element
1393                public Property[] properties;  //optional array
1394
1395                public String getName()
1396                {
1397                        return "Level";
1398                }
1399
1400                public void display(java.io.PrintWriter _out, int _indent)
1401                {
1402                        _out.println(getName());
1403                        displayAttribute(_out, "approxRowCount", approxRowCount, _indent+1);
1404                        displayAttribute(_out, "name", name, _indent+1);
1405                        displayAttribute(_out, "visible", visible, _indent+1);
1406                        displayAttribute(_out, "table", table, _indent+1);
1407                        displayAttribute(_out, "column", column, _indent+1);
1408                        displayAttribute(_out, "nameColumn", nameColumn, _indent+1);
1409                        displayAttribute(_out, "ordinalColumn", ordinalColumn, _indent+1);
1410                        displayAttribute(_out, "parentColumn", parentColumn, _indent+1);
1411                        displayAttribute(_out, "nullParentValue", nullParentValue, _indent+1);
1412                        displayAttribute(_out, "type", type, _indent+1);
1413                        displayAttribute(_out, "internalType", internalType, _indent+1);
1414                        displayAttribute(_out, "uniqueMembers", uniqueMembers, _indent+1);
1415                        displayAttribute(_out, "levelType", levelType, _indent+1);
1416                        displayAttribute(_out, "hideMemberIf", hideMemberIf, _indent+1);
1417                        displayAttribute(_out, "formatter", formatter, _indent+1);
1418                        displayAttribute(_out, "caption", caption, _indent+1);
1419                        displayAttribute(_out, "description", description, _indent+1);
1420                        displayAttribute(_out, "captionColumn", captionColumn, _indent+1);
1421                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
1422                        displayElement(_out, "keyExp", (org.eigenbase.xom.ElementDef) keyExp, _indent+1);
1423                        displayElement(_out, "nameExp", (org.eigenbase.xom.ElementDef) nameExp, _indent+1);
1424                        displayElement(_out, "captionExp", (org.eigenbase.xom.ElementDef) captionExp, _indent+1);
1425                        displayElement(_out, "ordinalExp", (org.eigenbase.xom.ElementDef) ordinalExp, _indent+1);
1426                        displayElement(_out, "parentExp", (org.eigenbase.xom.ElementDef) parentExp, _indent+1);
1427                        displayElement(_out, "memberFormatter", (org.eigenbase.xom.ElementDef) memberFormatter, _indent+1);
1428                        displayElement(_out, "closure", (org.eigenbase.xom.ElementDef) closure, _indent+1);
1429                        displayElementArray(_out, "properties", properties, _indent+1);
1430                }
1431                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1432                {
1433                        _out.beginTag("Level", new org.eigenbase.xom.XMLAttrVector()
1434                                .add("approxRowCount", approxRowCount)
1435                                .add("name", name)
1436                                .add("visible", visible)
1437                                .add("table", table)
1438                                .add("column", column)
1439                                .add("nameColumn", nameColumn)
1440                                .add("ordinalColumn", ordinalColumn)
1441                                .add("parentColumn", parentColumn)
1442                                .add("nullParentValue", nullParentValue)
1443                                .add("type", type)
1444                                .add("internalType", internalType)
1445                                .add("uniqueMembers", uniqueMembers)
1446                                .add("levelType", levelType)
1447                                .add("hideMemberIf", hideMemberIf)
1448                                .add("formatter", formatter)
1449                                .add("caption", caption)
1450                                .add("description", description)
1451                                .add("captionColumn", captionColumn)
1452                                );
1453                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
1454                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) keyExp);
1455                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) nameExp);
1456                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) captionExp);
1457                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) ordinalExp);
1458                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) parentExp);
1459                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) memberFormatter);
1460                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) closure);
1461                        displayXMLElementArray(_out, properties);
1462                        _out.endTag("Level");
1463                }
1464                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1465                {
1466                        Level _cother = (Level)_other;
1467                        boolean _diff = displayAttributeDiff("approxRowCount", approxRowCount, _cother.approxRowCount, _out, _indent+1);
1468                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1469                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
1470                        _diff = _diff && displayAttributeDiff("table", table, _cother.table, _out, _indent+1);
1471                        _diff = _diff && displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
1472                        _diff = _diff && displayAttributeDiff("nameColumn", nameColumn, _cother.nameColumn, _out, _indent+1);
1473                        _diff = _diff && displayAttributeDiff("ordinalColumn", ordinalColumn, _cother.ordinalColumn, _out, _indent+1);
1474                        _diff = _diff && displayAttributeDiff("parentColumn", parentColumn, _cother.parentColumn, _out, _indent+1);
1475                        _diff = _diff && displayAttributeDiff("nullParentValue", nullParentValue, _cother.nullParentValue, _out, _indent+1);
1476                        _diff = _diff && displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
1477                        _diff = _diff && displayAttributeDiff("internalType", internalType, _cother.internalType, _out, _indent+1);
1478                        _diff = _diff && displayAttributeDiff("uniqueMembers", uniqueMembers, _cother.uniqueMembers, _out, _indent+1);
1479                        _diff = _diff && displayAttributeDiff("levelType", levelType, _cother.levelType, _out, _indent+1);
1480                        _diff = _diff && displayAttributeDiff("hideMemberIf", hideMemberIf, _cother.hideMemberIf, _out, _indent+1);
1481                        _diff = _diff && displayAttributeDiff("formatter", formatter, _cother.formatter, _out, _indent+1);
1482                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1483                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
1484                        _diff = _diff && displayAttributeDiff("captionColumn", captionColumn, _cother.captionColumn, _out, _indent+1);
1485                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
1486                        _diff = _diff && displayElementDiff("keyExp", keyExp, _cother.keyExp, _out, _indent+1);
1487                        _diff = _diff && displayElementDiff("nameExp", nameExp, _cother.nameExp, _out, _indent+1);
1488                        _diff = _diff && displayElementDiff("captionExp", captionExp, _cother.captionExp, _out, _indent+1);
1489                        _diff = _diff && displayElementDiff("ordinalExp", ordinalExp, _cother.ordinalExp, _out, _indent+1);
1490                        _diff = _diff && displayElementDiff("parentExp", parentExp, _cother.parentExp, _out, _indent+1);
1491                        _diff = _diff && displayElementDiff("memberFormatter", memberFormatter, _cother.memberFormatter, _out, _indent+1);
1492                        _diff = _diff && displayElementDiff("closure", closure, _cother.closure, _out, _indent+1);
1493                        _diff = _diff && displayElementArrayDiff("properties", properties, _cother.properties, _out, _indent+1);
1494                        return _diff;
1495                }
1496                // BEGIN pass-through code block ---
1497public Expression getKeyExp() {
1498                if (keyExp != null) {
1499                    return keyExp;
1500                } else if (column != null) {
1501                    return new Column(table, column);
1502                } else {
1503                    return null;
1504                }
1505            }
1506
1507            public Expression getNameExp() {
1508                if (nameExp != null) {
1509                    return nameExp;
1510                } else if (nameColumn != null) {
1511                    return new Column(table, nameColumn);
1512                } else {
1513                    return null;
1514                }
1515            }
1516
1517            public Expression getCaptionExp() {
1518                if (captionExp != null) {
1519                    return captionExp;
1520                } else if (captionColumn != null) {
1521                    return new Column(table, captionColumn);
1522                } else {
1523                    return null;
1524                }
1525            }
1526
1527            public Expression getOrdinalExp() {
1528                if (ordinalExp != null) {
1529                    return ordinalExp;
1530                } else if (ordinalColumn != null) {
1531                    return new Column(table, ordinalColumn);
1532                } else {
1533                    return null;
1534                }
1535            }
1536
1537            public Expression getParentExp() {
1538                if (parentExp != null) {
1539                    return parentExp;
1540                } else if (parentColumn != null) {
1541                    return new Column(table, parentColumn);
1542                } else {
1543                    return null;
1544                }
1545            }
1546
1547            public Expression getPropertyExp(int i) {
1548                return new Column(table, properties[i].column);
1549            }
1550
1551            public mondrian.spi.Dialect.Datatype getDatatype() {
1552                return mondrian.spi.Dialect.Datatype.valueOf(type);
1553            }
1554                // END pass-through code block ---
1555        }
1556
1557        /**
1558         * Specifies the transitive closure of a parent-child hierarchy.
1559         * Optional, but recommended for better performance.
1560         * The closure is provided as a set of (parent/child) pairs:
1561         * since it is the transitive closure these are actually (ancestor/descendant) pairs.
1562         */
1563        public static class Closure extends org.eigenbase.xom.ElementDef
1564        {
1565                public Closure()
1566                {
1567                }
1568
1569                public Closure(org.eigenbase.xom.DOMWrapper _def)
1570                        throws org.eigenbase.xom.XOMException
1571                {
1572                        try {
1573                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1574                                parentColumn = (String)_parser.getAttribute("parentColumn", "String", null, null, true);
1575                                childColumn = (String)_parser.getAttribute("childColumn", "String", null, null, true);
1576                                table = (Table)_parser.getElement(Table.class, true);
1577                        } catch(org.eigenbase.xom.XOMException _ex) {
1578                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1579                        }
1580                }
1581
1582                public String parentColumn;  // required attribute
1583                public String childColumn;  // required attribute
1584
1585                public Table table;  //required element
1586
1587                public String getName()
1588                {
1589                        return "Closure";
1590                }
1591
1592                public void display(java.io.PrintWriter _out, int _indent)
1593                {
1594                        _out.println(getName());
1595                        displayAttribute(_out, "parentColumn", parentColumn, _indent+1);
1596                        displayAttribute(_out, "childColumn", childColumn, _indent+1);
1597                        displayElement(_out, "table", (org.eigenbase.xom.ElementDef) table, _indent+1);
1598                }
1599                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1600                {
1601                        _out.beginTag("Closure", new org.eigenbase.xom.XMLAttrVector()
1602                                .add("parentColumn", parentColumn)
1603                                .add("childColumn", childColumn)
1604                                );
1605                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) table);
1606                        _out.endTag("Closure");
1607                }
1608                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1609                {
1610                        Closure _cother = (Closure)_other;
1611                        boolean _diff = displayAttributeDiff("parentColumn", parentColumn, _cother.parentColumn, _out, _indent+1);
1612                        _diff = _diff && displayAttributeDiff("childColumn", childColumn, _cother.childColumn, _out, _indent+1);
1613                        _diff = _diff && displayElementDiff("table", table, _cother.table, _out, _indent+1);
1614                        return _diff;
1615                }
1616        }
1617
1618        /**
1619         * Member property.
1620         */
1621        public static class Property extends org.eigenbase.xom.ElementDef
1622        {
1623                public Property()
1624                {
1625                }
1626
1627                public Property(org.eigenbase.xom.DOMWrapper _def)
1628                        throws org.eigenbase.xom.XOMException
1629                {
1630                        try {
1631                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1632                                name = (String)_parser.getAttribute("name", "String", null, null, false);
1633                                column = (String)_parser.getAttribute("column", "String", null, null, false);
1634                                type = (String)_parser.getAttribute("type", "String", "String", _type_values, false);
1635                                formatter = (String)_parser.getAttribute("formatter", "String", null, null, false);
1636                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1637                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1638                                dependsOnLevelValue = (Boolean)_parser.getAttribute("dependsOnLevelValue", "Boolean", null, null, false);
1639                                propertyFormatter = (PropertyFormatter)_parser.getElement(PropertyFormatter.class, false);
1640                        } catch(org.eigenbase.xom.XOMException _ex) {
1641                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1642                        }
1643                }
1644
1645                public String name;  // optional attribute
1646                public String column;  // optional attribute
1647                /** Allowable values for {@link #type}. */
1648                public static final String[] _type_values = {"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp"};
1649                public String type;  // attribute default: String
1650                public String formatter;  // optional attribute
1651                public String caption;  // optional attribute
1652                public String description;  // optional attribute
1653                public Boolean dependsOnLevelValue;  // optional attribute
1654
1655                /**
1656                 * Property formatter.
1657                 */
1658                public PropertyFormatter propertyFormatter;  //optional element
1659
1660                public String getName()
1661                {
1662                        return "Property";
1663                }
1664
1665                public void display(java.io.PrintWriter _out, int _indent)
1666                {
1667                        _out.println(getName());
1668                        displayAttribute(_out, "name", name, _indent+1);
1669                        displayAttribute(_out, "column", column, _indent+1);
1670                        displayAttribute(_out, "type", type, _indent+1);
1671                        displayAttribute(_out, "formatter", formatter, _indent+1);
1672                        displayAttribute(_out, "caption", caption, _indent+1);
1673                        displayAttribute(_out, "description", description, _indent+1);
1674                        displayAttribute(_out, "dependsOnLevelValue", dependsOnLevelValue, _indent+1);
1675                        displayElement(_out, "propertyFormatter", (org.eigenbase.xom.ElementDef) propertyFormatter, _indent+1);
1676                }
1677                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1678                {
1679                        _out.beginTag("Property", new org.eigenbase.xom.XMLAttrVector()
1680                                .add("name", name)
1681                                .add("column", column)
1682                                .add("type", type)
1683                                .add("formatter", formatter)
1684                                .add("caption", caption)
1685                                .add("description", description)
1686                                .add("dependsOnLevelValue", dependsOnLevelValue)
1687                                );
1688                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) propertyFormatter);
1689                        _out.endTag("Property");
1690                }
1691                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1692                {
1693                        Property _cother = (Property)_other;
1694                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1695                        _diff = _diff && displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
1696                        _diff = _diff && displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
1697                        _diff = _diff && displayAttributeDiff("formatter", formatter, _cother.formatter, _out, _indent+1);
1698                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1699                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
1700                        _diff = _diff && displayAttributeDiff("dependsOnLevelValue", dependsOnLevelValue, _cother.dependsOnLevelValue, _out, _indent+1);
1701                        _diff = _diff && displayElementDiff("propertyFormatter", propertyFormatter, _cother.propertyFormatter, _out, _indent+1);
1702                        return _diff;
1703                }
1704        }
1705
1706        public static class Measure extends org.eigenbase.xom.ElementDef
1707        {
1708                public Measure()
1709                {
1710                }
1711
1712                public Measure(org.eigenbase.xom.DOMWrapper _def)
1713                        throws org.eigenbase.xom.XOMException
1714                {
1715                        try {
1716                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1717                                org.eigenbase.xom.NodeDef[] _tempArray;
1718                                name = (String)_parser.getAttribute("name", "String", null, null, true);
1719                                column = (String)_parser.getAttribute("column", "String", null, null, false);
1720                                datatype = (String)_parser.getAttribute("datatype", "String", null, _datatype_values, false);
1721                                formatString = (String)_parser.getAttribute("formatString", "String", null, null, false);
1722                                aggregator = (String)_parser.getAttribute("aggregator", "String", null, _aggregator_values, true);
1723                                formatter = (String)_parser.getAttribute("formatter", "String", null, null, false);
1724                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1725                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1726                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", null, null, false);
1727                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
1728                                measureExp = (MeasureExpression)_parser.getElement(MeasureExpression.class, false);
1729                                cellFormatter = (CellFormatter)_parser.getElement(CellFormatter.class, false);
1730                                _tempArray = _parser.getArray(CalculatedMemberProperty.class, 0, 0);
1731                                memberProperties = new CalculatedMemberProperty[_tempArray.length];
1732                                for (int _i = 0; _i < memberProperties.length; _i++)
1733                                        memberProperties[_i] = (CalculatedMemberProperty)_tempArray[_i];
1734                        } catch(org.eigenbase.xom.XOMException _ex) {
1735                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1736                        }
1737                }
1738
1739                public String name;  // required attribute
1740                public String column;  // optional attribute
1741                /** Allowable values for {@link #datatype}. */
1742                public static final String[] _datatype_values = {"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp"};
1743                public String datatype;  // optional attribute
1744                public String formatString;  // optional attribute
1745                /** Allowable values for {@link #aggregator}. */
1746                public static final String[] _aggregator_values = {"sum", "count", "min", "max", "avg", "distinct count", "distinct-count"};
1747                public String aggregator;  // required attribute
1748                public String formatter;  // optional attribute
1749                public String caption;  // optional attribute
1750                public String description;  // optional attribute
1751                public Boolean visible;  // optional attribute
1752
1753                /**
1754                 * Contains values of user-defined properties.
1755                 */
1756                public Annotations annotations;  //optional element
1757                /**
1758                 * The SQL expression used to calculate a measure.
1759                 * Must be specified if a source column is not specified.
1760                 */
1761                public MeasureExpression measureExp;  //optional element
1762                /**
1763                 * Cell formatter.
1764                 */
1765                public CellFormatter cellFormatter;  //optional element
1766                public CalculatedMemberProperty[] memberProperties;  //optional array
1767
1768                public String getName()
1769                {
1770                        return "Measure";
1771                }
1772
1773                public void display(java.io.PrintWriter _out, int _indent)
1774                {
1775                        _out.println(getName());
1776                        displayAttribute(_out, "name", name, _indent+1);
1777                        displayAttribute(_out, "column", column, _indent+1);
1778                        displayAttribute(_out, "datatype", datatype, _indent+1);
1779                        displayAttribute(_out, "formatString", formatString, _indent+1);
1780                        displayAttribute(_out, "aggregator", aggregator, _indent+1);
1781                        displayAttribute(_out, "formatter", formatter, _indent+1);
1782                        displayAttribute(_out, "caption", caption, _indent+1);
1783                        displayAttribute(_out, "description", description, _indent+1);
1784                        displayAttribute(_out, "visible", visible, _indent+1);
1785                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
1786                        displayElement(_out, "measureExp", (org.eigenbase.xom.ElementDef) measureExp, _indent+1);
1787                        displayElement(_out, "cellFormatter", (org.eigenbase.xom.ElementDef) cellFormatter, _indent+1);
1788                        displayElementArray(_out, "memberProperties", memberProperties, _indent+1);
1789                }
1790                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1791                {
1792                        _out.beginTag("Measure", new org.eigenbase.xom.XMLAttrVector()
1793                                .add("name", name)
1794                                .add("column", column)
1795                                .add("datatype", datatype)
1796                                .add("formatString", formatString)
1797                                .add("aggregator", aggregator)
1798                                .add("formatter", formatter)
1799                                .add("caption", caption)
1800                                .add("description", description)
1801                                .add("visible", visible)
1802                                );
1803                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
1804                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) measureExp);
1805                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) cellFormatter);
1806                        displayXMLElementArray(_out, memberProperties);
1807                        _out.endTag("Measure");
1808                }
1809                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1810                {
1811                        Measure _cother = (Measure)_other;
1812                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1813                        _diff = _diff && displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
1814                        _diff = _diff && displayAttributeDiff("datatype", datatype, _cother.datatype, _out, _indent+1);
1815                        _diff = _diff && displayAttributeDiff("formatString", formatString, _cother.formatString, _out, _indent+1);
1816                        _diff = _diff && displayAttributeDiff("aggregator", aggregator, _cother.aggregator, _out, _indent+1);
1817                        _diff = _diff && displayAttributeDiff("formatter", formatter, _cother.formatter, _out, _indent+1);
1818                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1819                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
1820                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
1821                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
1822                        _diff = _diff && displayElementDiff("measureExp", measureExp, _cother.measureExp, _out, _indent+1);
1823                        _diff = _diff && displayElementDiff("cellFormatter", cellFormatter, _cother.cellFormatter, _out, _indent+1);
1824                        _diff = _diff && displayElementArrayDiff("memberProperties", memberProperties, _cother.memberProperties, _out, _indent+1);
1825                        return _diff;
1826                }
1827        }
1828
1829        public static class CalculatedMember extends org.eigenbase.xom.ElementDef
1830        {
1831                public CalculatedMember()
1832                {
1833                }
1834
1835                public CalculatedMember(org.eigenbase.xom.DOMWrapper _def)
1836                        throws org.eigenbase.xom.XOMException
1837                {
1838                        try {
1839                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1840                                org.eigenbase.xom.NodeDef[] _tempArray;
1841                                name = (String)_parser.getAttribute("name", "String", null, null, true);
1842                                formatString = (String)_parser.getAttribute("formatString", "String", null, null, false);
1843                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1844                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1845                                formula = (String)_parser.getAttribute("formula", "String", null, null, false);
1846                                dimension = (String)_parser.getAttribute("dimension", "String", null, null, false);
1847                                hierarchy = (String)_parser.getAttribute("hierarchy", "String", null, null, false);
1848                                parent = (String)_parser.getAttribute("parent", "String", null, null, false);
1849                                visible = (Boolean)_parser.getAttribute("visible", "Boolean", null, null, false);
1850                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
1851                                formulaElement = (Formula)_parser.getElement(Formula.class, false);
1852                                cellFormatter = (CellFormatter)_parser.getElement(CellFormatter.class, false);
1853                                _tempArray = _parser.getArray(CalculatedMemberProperty.class, 0, 0);
1854                                memberProperties = new CalculatedMemberProperty[_tempArray.length];
1855                                for (int _i = 0; _i < memberProperties.length; _i++)
1856                                        memberProperties[_i] = (CalculatedMemberProperty)_tempArray[_i];
1857                        } catch(org.eigenbase.xom.XOMException _ex) {
1858                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1859                        }
1860                }
1861
1862                public String name;  // required attribute
1863                public String formatString;  // optional attribute
1864                public String caption;  // optional attribute
1865                public String description;  // optional attribute
1866                public String formula;  // optional attribute
1867                public String dimension;  // optional attribute
1868                public String hierarchy;  // optional attribute
1869                public String parent;  // optional attribute
1870                public Boolean visible;  // optional attribute
1871
1872                /**
1873                 * Contains values of user-defined properties.
1874                 */
1875                public Annotations annotations;  //optional element
1876                /**
1877                 * MDX expression which gives the value of this member.
1878                 */
1879                public Formula formulaElement;  //optional element
1880                /**
1881                 * Cell formatter.
1882                 */
1883                public CellFormatter cellFormatter;  //optional element
1884                public CalculatedMemberProperty[] memberProperties;  //optional array
1885
1886                public String getName()
1887                {
1888                        return "CalculatedMember";
1889                }
1890
1891                public void display(java.io.PrintWriter _out, int _indent)
1892                {
1893                        _out.println(getName());
1894                        displayAttribute(_out, "name", name, _indent+1);
1895                        displayAttribute(_out, "formatString", formatString, _indent+1);
1896                        displayAttribute(_out, "caption", caption, _indent+1);
1897                        displayAttribute(_out, "description", description, _indent+1);
1898                        displayAttribute(_out, "formula", formula, _indent+1);
1899                        displayAttribute(_out, "dimension", dimension, _indent+1);
1900                        displayAttribute(_out, "hierarchy", hierarchy, _indent+1);
1901                        displayAttribute(_out, "parent", parent, _indent+1);
1902                        displayAttribute(_out, "visible", visible, _indent+1);
1903                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
1904                        displayElement(_out, "formulaElement", (org.eigenbase.xom.ElementDef) formulaElement, _indent+1);
1905                        displayElement(_out, "cellFormatter", (org.eigenbase.xom.ElementDef) cellFormatter, _indent+1);
1906                        displayElementArray(_out, "memberProperties", memberProperties, _indent+1);
1907                }
1908                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
1909                {
1910                        _out.beginTag("CalculatedMember", new org.eigenbase.xom.XMLAttrVector()
1911                                .add("name", name)
1912                                .add("formatString", formatString)
1913                                .add("caption", caption)
1914                                .add("description", description)
1915                                .add("formula", formula)
1916                                .add("dimension", dimension)
1917                                .add("hierarchy", hierarchy)
1918                                .add("parent", parent)
1919                                .add("visible", visible)
1920                                );
1921                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
1922                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) formulaElement);
1923                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) cellFormatter);
1924                        displayXMLElementArray(_out, memberProperties);
1925                        _out.endTag("CalculatedMember");
1926                }
1927                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
1928                {
1929                        CalculatedMember _cother = (CalculatedMember)_other;
1930                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
1931                        _diff = _diff && displayAttributeDiff("formatString", formatString, _cother.formatString, _out, _indent+1);
1932                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
1933                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
1934                        _diff = _diff && displayAttributeDiff("formula", formula, _cother.formula, _out, _indent+1);
1935                        _diff = _diff && displayAttributeDiff("dimension", dimension, _cother.dimension, _out, _indent+1);
1936                        _diff = _diff && displayAttributeDiff("hierarchy", hierarchy, _cother.hierarchy, _out, _indent+1);
1937                        _diff = _diff && displayAttributeDiff("parent", parent, _cother.parent, _out, _indent+1);
1938                        _diff = _diff && displayAttributeDiff("visible", visible, _cother.visible, _out, _indent+1);
1939                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
1940                        _diff = _diff && displayElementDiff("formulaElement", formulaElement, _cother.formulaElement, _out, _indent+1);
1941                        _diff = _diff && displayElementDiff("cellFormatter", cellFormatter, _cother.cellFormatter, _out, _indent+1);
1942                        _diff = _diff && displayElementArrayDiff("memberProperties", memberProperties, _cother.memberProperties, _out, _indent+1);
1943                        return _diff;
1944                }
1945                // BEGIN pass-through code block ---
1946/**
1947              * Returns the formula, looking for a sub-element called
1948              * "Formula" first, then looking for an attribute called
1949              * "formula".
1950              */
1951            public String getFormula() {
1952                if (formulaElement != null) {
1953                    return formulaElement.cdata;
1954                } else {
1955                    return formula;
1956                }
1957            }
1958                // END pass-through code block ---
1959        }
1960
1961        /**
1962         * Property of a calculated member defined against a cube.
1963         * It must have either an expression or a value.
1964         */
1965        public static class CalculatedMemberProperty extends org.eigenbase.xom.ElementDef
1966        {
1967                public CalculatedMemberProperty()
1968                {
1969                }
1970
1971                public CalculatedMemberProperty(org.eigenbase.xom.DOMWrapper _def)
1972                        throws org.eigenbase.xom.XOMException
1973                {
1974                        try {
1975                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
1976                                name = (String)_parser.getAttribute("name", "String", null, null, true);
1977                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
1978                                description = (String)_parser.getAttribute("description", "String", null, null, false);
1979                                expression = (String)_parser.getAttribute("expression", "String", null, null, false);
1980                                value = (String)_parser.getAttribute("value", "String", null, null, false);
1981                        } catch(org.eigenbase.xom.XOMException _ex) {
1982                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
1983                        }
1984                }
1985
1986                public String name;  // required attribute
1987                public String caption;  // optional attribute
1988                public String description;  // optional attribute
1989                public String expression;  // optional attribute
1990                public String value;  // optional attribute
1991
1992
1993                public String getName()
1994                {
1995                        return "CalculatedMemberProperty";
1996                }
1997
1998                public void display(java.io.PrintWriter _out, int _indent)
1999                {
2000                        _out.println(getName());
2001                        displayAttribute(_out, "name", name, _indent+1);
2002                        displayAttribute(_out, "caption", caption, _indent+1);
2003                        displayAttribute(_out, "description", description, _indent+1);
2004                        displayAttribute(_out, "expression", expression, _indent+1);
2005                        displayAttribute(_out, "value", value, _indent+1);
2006                }
2007                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2008                {
2009                        _out.beginTag("CalculatedMemberProperty", new org.eigenbase.xom.XMLAttrVector()
2010                                .add("name", name)
2011                                .add("caption", caption)
2012                                .add("description", description)
2013                                .add("expression", expression)
2014                                .add("value", value)
2015                                );
2016                        _out.endTag("CalculatedMemberProperty");
2017                }
2018                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2019                {
2020                        CalculatedMemberProperty _cother = (CalculatedMemberProperty)_other;
2021                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
2022                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
2023                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
2024                        _diff = _diff && displayAttributeDiff("expression", expression, _cother.expression, _out, _indent+1);
2025                        _diff = _diff && displayAttributeDiff("value", value, _cother.value, _out, _indent+1);
2026                        return _diff;
2027                }
2028        }
2029
2030        /**
2031         * <p>Defines a named set which can be used in queries in the
2032         * same way as a set defined using a WITH SET clause.</p>
2033         * <p>A named set can be defined against a particular cube,
2034         * or can be global to a schema. If it is defined against a
2035         * cube, it is only available to queries which use that cube.</p>
2036         * <p>A named set defined against a cube is not inherited by
2037         * a virtual cubes defined against that cube. (But you can
2038         * define a named set against a virtual cube.)</p>
2039         * <p>A named set defined against a schema is available in
2040         * all cubes and virtual cubes in that schema. However, it is
2041         * only valid if the cube contains dimensions with the names
2042         * required to make the formula valid.</p>
2043         */
2044        public static class NamedSet extends org.eigenbase.xom.ElementDef
2045        {
2046                public NamedSet()
2047                {
2048                }
2049
2050                public NamedSet(org.eigenbase.xom.DOMWrapper _def)
2051                        throws org.eigenbase.xom.XOMException
2052                {
2053                        try {
2054                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2055                                name = (String)_parser.getAttribute("name", "String", null, null, true);
2056                                caption = (String)_parser.getAttribute("caption", "String", null, null, false);
2057                                description = (String)_parser.getAttribute("description", "String", null, null, false);
2058                                formula = (String)_parser.getAttribute("formula", "String", null, null, false);
2059                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
2060                                formulaElement = (Formula)_parser.getElement(Formula.class, false);
2061                        } catch(org.eigenbase.xom.XOMException _ex) {
2062                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2063                        }
2064                }
2065
2066                public String name;  // required attribute
2067                public String caption;  // optional attribute
2068                public String description;  // optional attribute
2069                public String formula;  // optional attribute
2070
2071                /**
2072                 * Contains values of user-defined properties.
2073                 */
2074                public Annotations annotations;  //optional element
2075                /**
2076                 * MDX expression which gives the value of this set.
2077                 */
2078                public Formula formulaElement;  //optional element
2079
2080                public String getName()
2081                {
2082                        return "NamedSet";
2083                }
2084
2085                public void display(java.io.PrintWriter _out, int _indent)
2086                {
2087                        _out.println(getName());
2088                        displayAttribute(_out, "name", name, _indent+1);
2089                        displayAttribute(_out, "caption", caption, _indent+1);
2090                        displayAttribute(_out, "description", description, _indent+1);
2091                        displayAttribute(_out, "formula", formula, _indent+1);
2092                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
2093                        displayElement(_out, "formulaElement", (org.eigenbase.xom.ElementDef) formulaElement, _indent+1);
2094                }
2095                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2096                {
2097                        _out.beginTag("NamedSet", new org.eigenbase.xom.XMLAttrVector()
2098                                .add("name", name)
2099                                .add("caption", caption)
2100                                .add("description", description)
2101                                .add("formula", formula)
2102                                );
2103                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
2104                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) formulaElement);
2105                        _out.endTag("NamedSet");
2106                }
2107                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2108                {
2109                        NamedSet _cother = (NamedSet)_other;
2110                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
2111                        _diff = _diff && displayAttributeDiff("caption", caption, _cother.caption, _out, _indent+1);
2112                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
2113                        _diff = _diff && displayAttributeDiff("formula", formula, _cother.formula, _out, _indent+1);
2114                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
2115                        _diff = _diff && displayElementDiff("formulaElement", formulaElement, _cother.formulaElement, _out, _indent+1);
2116                        return _diff;
2117                }
2118                // BEGIN pass-through code block ---
2119/**
2120              * Returns the formula, looking for a sub-element called
2121              * "Formula" first, then looking for an attribute called
2122              * "formula".
2123              */
2124            public String getFormula() {
2125                if (formulaElement != null) {
2126                    return formulaElement.cdata;
2127                } else {
2128                    return formula;
2129                }
2130            }
2131                // END pass-through code block ---
2132        }
2133
2134        public static class Formula extends org.eigenbase.xom.ElementDef
2135        {
2136                public Formula()
2137                {
2138                }
2139
2140                public Formula(org.eigenbase.xom.DOMWrapper _def)
2141                        throws org.eigenbase.xom.XOMException
2142                {
2143                        try {
2144                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2145                                cdata = _parser.getText();
2146                        } catch(org.eigenbase.xom.XOMException _ex) {
2147                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2148                        }
2149                }
2150
2151
2152                public String cdata;  // All text goes here
2153                public String getName()
2154                {
2155                        return "Formula";
2156                }
2157
2158                public void display(java.io.PrintWriter _out, int _indent)
2159                {
2160                        _out.println(getName());
2161                        displayString(_out, "cdata", cdata, _indent+1);
2162                }
2163                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2164                {
2165                        _out.beginTag("Formula", new org.eigenbase.xom.XMLAttrVector()
2166                                );
2167                        _out.cdata(cdata);
2168                        _out.endTag("Formula");
2169                }
2170                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2171                {
2172                        Formula _cother = (Formula)_other;
2173                        boolean _diff = displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
2174                        return _diff;
2175                }
2176        }
2177
2178        /**
2179         * Not used
2180         */
2181        public static class MemberReaderParameter extends org.eigenbase.xom.ElementDef
2182        {
2183                public MemberReaderParameter()
2184                {
2185                }
2186
2187                public MemberReaderParameter(org.eigenbase.xom.DOMWrapper _def)
2188                        throws org.eigenbase.xom.XOMException
2189                {
2190                        try {
2191                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2192                                name = (String)_parser.getAttribute("name", "String", null, null, false);
2193                                value = (String)_parser.getAttribute("value", "String", null, null, false);
2194                        } catch(org.eigenbase.xom.XOMException _ex) {
2195                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2196                        }
2197                }
2198
2199                public String name;  // optional attribute
2200                public String value;  // optional attribute
2201
2202
2203                public String getName()
2204                {
2205                        return "MemberReaderParameter";
2206                }
2207
2208                public void display(java.io.PrintWriter _out, int _indent)
2209                {
2210                        _out.println(getName());
2211                        displayAttribute(_out, "name", name, _indent+1);
2212                        displayAttribute(_out, "value", value, _indent+1);
2213                }
2214                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2215                {
2216                        _out.beginTag("MemberReaderParameter", new org.eigenbase.xom.XMLAttrVector()
2217                                .add("name", name)
2218                                .add("value", value)
2219                                );
2220                        _out.endTag("MemberReaderParameter");
2221                }
2222                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2223                {
2224                        MemberReaderParameter _cother = (MemberReaderParameter)_other;
2225                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
2226                        _diff = _diff && displayAttributeDiff("value", value, _cother.value, _out, _indent+1);
2227                        return _diff;
2228                }
2229        }
2230
2231        /**
2232         * A table or a join
2233         */
2234        public static abstract class RelationOrJoin extends org.eigenbase.xom.ElementDef
2235        {
2236                public RelationOrJoin()
2237                {
2238                }
2239
2240                public RelationOrJoin(org.eigenbase.xom.DOMWrapper _def)
2241                        throws org.eigenbase.xom.XOMException
2242                {
2243                }
2244
2245
2246
2247                public String getName()
2248                {
2249                        return "RelationOrJoin";
2250                }
2251
2252                public void display(java.io.PrintWriter _out, int _indent)
2253                {
2254                        _out.println(getName());
2255                }
2256                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2257                {
2258                        _out.beginTag("RelationOrJoin", new org.eigenbase.xom.XMLAttrVector()
2259                                );
2260                        _out.endTag("RelationOrJoin");
2261                }
2262                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2263                {
2264                        return true;
2265                }
2266                // BEGIN pass-through code block ---
2267public abstract Relation find(String seekAlias);
2268            public boolean equals(Object o) {
2269                return this == o;
2270            }
2271            public int hashCode() {
2272                return System.identityHashCode(this);
2273            }
2274                // END pass-through code block ---
2275        }
2276
2277        /**
2278         * A table, inline table or view
2279         */
2280        public static abstract class Relation extends RelationOrJoin
2281        {
2282                public Relation()
2283                {
2284                }
2285
2286                public Relation(org.eigenbase.xom.DOMWrapper _def)
2287                        throws org.eigenbase.xom.XOMException
2288                {
2289                }
2290
2291
2292
2293                public String getName()
2294                {
2295                        return "Relation";
2296                }
2297
2298                public void display(java.io.PrintWriter _out, int _indent)
2299                {
2300                        _out.println(getName());
2301                }
2302                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2303                {
2304                        _out.beginTag("Relation", new org.eigenbase.xom.XMLAttrVector()
2305                                );
2306                        _out.endTag("Relation");
2307                }
2308                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2309                {
2310                        return true;
2311                }
2312                // BEGIN pass-through code block ---
2313public abstract String getAlias();
2314                // END pass-through code block ---
2315        }
2316
2317        /**
2318         * A collection of SQL statements, one per dialect.
2319         */
2320        public static class View extends Relation
2321        {
2322                public View()
2323                {
2324                }
2325
2326                public View(org.eigenbase.xom.DOMWrapper _def)
2327                        throws org.eigenbase.xom.XOMException
2328                {
2329                        try {
2330                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2331                                org.eigenbase.xom.NodeDef[] _tempArray;
2332                                alias = (String)_parser.getAttribute("alias", "String", null, null, true);
2333                                _tempArray = _parser.getArray(SQL.class, 1, 0);
2334                                selects = new SQL[_tempArray.length];
2335                                for (int _i = 0; _i < selects.length; _i++)
2336                                        selects[_i] = (SQL)_tempArray[_i];
2337                        } catch(org.eigenbase.xom.XOMException _ex) {
2338                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2339                        }
2340                }
2341
2342                public String alias;  // required attribute
2343
2344                public SQL[] selects;  //min 1
2345
2346                public String getName()
2347                {
2348                        return "View";
2349                }
2350
2351                public void display(java.io.PrintWriter _out, int _indent)
2352                {
2353                        _out.println(getName());
2354                        displayAttribute(_out, "alias", alias, _indent+1);
2355                        displayElementArray(_out, "selects", selects, _indent+1);
2356                }
2357                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2358                {
2359                        _out.beginTag("View", new org.eigenbase.xom.XMLAttrVector()
2360                                .add("alias", alias)
2361                                );
2362                        displayXMLElementArray(_out, selects);
2363                        _out.endTag("View");
2364                }
2365                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2366                {
2367                        View _cother = (View)_other;
2368                        boolean _diff = displayAttributeDiff("alias", alias, _cother.alias, _out, _indent+1);
2369                        _diff = _diff && displayElementArrayDiff("selects", selects, _cother.selects, _out, _indent+1);
2370                        return _diff;
2371                }
2372                // BEGIN pass-through code block ---
2373/**
2374             * Copy constructor.
2375             */
2376            public View(View view) {
2377                this.alias = view.alias;
2378                this.selects = view.selects.clone();
2379            }
2380            public String toString() {
2381                return selects[0].cdata;
2382            }
2383
2384            public View find(String seekAlias) {
2385                if (seekAlias.equals(alias)) {
2386                    return this;
2387                } else {
2388                    return null;
2389                }
2390            }
2391
2392            public String getAlias() {
2393                return alias;
2394            }
2395
2396            public SqlQuery.CodeSet getCodeSet() {
2397                return SQL.toCodeSet(selects);
2398            }
2399
2400            public void addCode(String dialect, String code) {
2401                if (selects == null) {
2402                    selects = new SQL[1];
2403                } else {
2404                    SQL[] olds = selects;
2405                    selects = new SQL[olds.length + 1];
2406                    System.arraycopy(olds, 0, selects, 0, olds.length);
2407                }
2408                SQL sql = new SQL();
2409                sql.dialect = dialect;
2410                sql.cdata = code;
2411                selects[selects.length - 1] = sql;
2412            }
2413
2414            public boolean equals(Object o) {
2415                if (o instanceof View) {
2416                    View that = (View) o;
2417                    if (!this.alias.equals(that.alias)) {
2418                        return false;
2419                    }
2420                    if (this.selects == null || that.selects == null || this.selects.length != that.selects.length) {
2421                        return false;
2422                    }
2423                    for (int i = 0; i < selects.length; i++) {
2424                        if (!Util.equals(this.selects[i].dialect, that.selects[i].dialect)
2425                            || !Util.equals(this.selects[i].cdata, that.selects[i].cdata))
2426                        {
2427                            return false;
2428                        }
2429                    }
2430                    return true;
2431                } else {
2432                    return false;
2433                }
2434            }
2435                // END pass-through code block ---
2436        }
2437
2438        public static class SQL extends org.eigenbase.xom.ElementDef
2439        {
2440                public SQL()
2441                {
2442                }
2443
2444                public SQL(org.eigenbase.xom.DOMWrapper _def)
2445                        throws org.eigenbase.xom.XOMException
2446                {
2447                        try {
2448                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2449                                dialect = (String)_parser.getAttribute("dialect", "String", "generic", _dialect_values, true);
2450                                cdata = _parser.getText();
2451                        } catch(org.eigenbase.xom.XOMException _ex) {
2452                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2453                        }
2454                }
2455
2456                /** Allowable values for {@link #dialect}. */
2457                public static final String[] _dialect_values = {"generic", "access", "db2", "derby", "firebird", "hsqldb", "mssql", "mysql", "oracle", "postgres", "sybase", "teradata", "ingres", "infobright", "luciddb", "vertica", "neoview", "greenplum", "vectorwise", "hive"};
2458                public String dialect;  // attribute default: generic
2459
2460                public String cdata;  // All text goes here
2461                public String getName()
2462                {
2463                        return "SQL";
2464                }
2465
2466                public void display(java.io.PrintWriter _out, int _indent)
2467                {
2468                        _out.println(getName());
2469                        displayAttribute(_out, "dialect", dialect, _indent+1);
2470                        displayString(_out, "cdata", cdata, _indent+1);
2471                }
2472                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2473                {
2474                        _out.beginTag("SQL", new org.eigenbase.xom.XMLAttrVector()
2475                                .add("dialect", dialect)
2476                                );
2477                        _out.cdata(cdata);
2478                        _out.endTag("SQL");
2479                }
2480                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2481                {
2482                        SQL _cother = (SQL)_other;
2483                        boolean _diff = displayAttributeDiff("dialect", dialect, _cother.dialect, _out, _indent+1);
2484                        _diff = _diff && displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
2485                        return _diff;
2486                }
2487                // BEGIN pass-through code block ---
2488public int hashCode() {
2489                return dialect.hashCode();
2490            }
2491
2492            public boolean equals(Object obj) {
2493                // Disabled this equality implementation because two sql objects
2494                // may be equal if their contents are equal.
2495                Throwable stack = new Throwable();
2496                stack.fillInStackTrace();
2497                for (StackTraceElement st : stack.getStackTrace()) {
2498                    if (st.getClassName().equals("javax.swing.tree.TreePath")) {
2499                        return this == obj;
2500                    }
2501                }
2502
2503                if (!(obj instanceof SQL)) {
2504                    return false;
2505                }
2506                SQL that = (SQL) obj;
2507                return this.dialect.equals(that.dialect) &&
2508                        Util.equals(this.cdata, that.cdata);
2509            }
2510
2511            /**
2512             * Converts an array of SQL to a
2513             * {@link mondrian.rolap.sql.SqlQuery.CodeSet} object.
2514             */
2515            public static SqlQuery.CodeSet toCodeSet(SQL[] sqls) {
2516                SqlQuery.CodeSet codeSet = new SqlQuery.CodeSet();
2517                for (SQL sql : sqls) {
2518                    codeSet.put(sql.dialect, sql.cdata);
2519                }
2520                return codeSet;
2521            }
2522                // END pass-through code block ---
2523        }
2524
2525        public static class Join extends RelationOrJoin
2526        {
2527                public Join()
2528                {
2529                }
2530
2531                public Join(org.eigenbase.xom.DOMWrapper _def)
2532                        throws org.eigenbase.xom.XOMException
2533                {
2534                        try {
2535                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2536                                leftAlias = (String)_parser.getAttribute("leftAlias", "String", null, null, false);
2537                                leftKey = (String)_parser.getAttribute("leftKey", "String", null, null, true);
2538                                rightAlias = (String)_parser.getAttribute("rightAlias", "String", null, null, false);
2539                                rightKey = (String)_parser.getAttribute("rightKey", "String", null, null, true);
2540                                left = (RelationOrJoin)_parser.getElement(RelationOrJoin.class, true);
2541                                right = (RelationOrJoin)_parser.getElement(RelationOrJoin.class, true);
2542                        } catch(org.eigenbase.xom.XOMException _ex) {
2543                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2544                        }
2545                }
2546
2547                public String leftAlias;  // optional attribute
2548                public String leftKey;  // required attribute
2549                public String rightAlias;  // optional attribute
2550                public String rightKey;  // required attribute
2551
2552                public RelationOrJoin left;  //required element
2553                public RelationOrJoin right;  //required element
2554
2555                public String getName()
2556                {
2557                        return "Join";
2558                }
2559
2560                public void display(java.io.PrintWriter _out, int _indent)
2561                {
2562                        _out.println(getName());
2563                        displayAttribute(_out, "leftAlias", leftAlias, _indent+1);
2564                        displayAttribute(_out, "leftKey", leftKey, _indent+1);
2565                        displayAttribute(_out, "rightAlias", rightAlias, _indent+1);
2566                        displayAttribute(_out, "rightKey", rightKey, _indent+1);
2567                        displayElement(_out, "left", (org.eigenbase.xom.ElementDef) left, _indent+1);
2568                        displayElement(_out, "right", (org.eigenbase.xom.ElementDef) right, _indent+1);
2569                }
2570                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2571                {
2572                        _out.beginTag("Join", new org.eigenbase.xom.XMLAttrVector()
2573                                .add("leftAlias", leftAlias)
2574                                .add("leftKey", leftKey)
2575                                .add("rightAlias", rightAlias)
2576                                .add("rightKey", rightKey)
2577                                );
2578                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) left);
2579                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) right);
2580                        _out.endTag("Join");
2581                }
2582                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2583                {
2584                        Join _cother = (Join)_other;
2585                        boolean _diff = displayAttributeDiff("leftAlias", leftAlias, _cother.leftAlias, _out, _indent+1);
2586                        _diff = _diff && displayAttributeDiff("leftKey", leftKey, _cother.leftKey, _out, _indent+1);
2587                        _diff = _diff && displayAttributeDiff("rightAlias", rightAlias, _cother.rightAlias, _out, _indent+1);
2588                        _diff = _diff && displayAttributeDiff("rightKey", rightKey, _cother.rightKey, _out, _indent+1);
2589                        _diff = _diff && displayElementDiff("left", left, _cother.left, _out, _indent+1);
2590                        _diff = _diff && displayElementDiff("right", right, _cother.right, _out, _indent+1);
2591                        return _diff;
2592                }
2593                // BEGIN pass-through code block ---
2594/** Convenience constructor. */
2595            public Join(
2596                String leftAlias,
2597                String leftKey,
2598                RelationOrJoin left,
2599                String rightAlias, 
2600                String rightKey,
2601                RelationOrJoin right)
2602            {
2603                this.leftAlias = leftAlias;
2604                this.leftKey = leftKey;
2605                this.left = left;
2606                this.rightAlias = rightAlias;
2607                this.rightKey = rightKey;
2608                this.right = right;
2609            }
2610            /**
2611              * Returns the alias of the left join key, defaulting to left's
2612              * alias if left is a table.
2613              */
2614            public String getLeftAlias() {
2615                if (leftAlias != null) {
2616                    return leftAlias;
2617                }
2618                if (left instanceof Relation) {
2619                    return ((Relation) left).getAlias();
2620                }
2621                throw Util.newInternal(
2622                    "alias is required because " + left + " is not a table");
2623            }
2624            /**
2625              * Returns the alias of the right join key, defaulting to right's
2626              * alias if right is a table.
2627              */
2628            public String getRightAlias() {
2629                if (rightAlias != null) {
2630                    return rightAlias;
2631                }
2632                if (right instanceof Relation) {
2633                    return ((Relation) right).getAlias();
2634                }
2635                if (right instanceof Join) {
2636                    return ((Join) right).getLeftAlias();
2637                }
2638                throw Util.newInternal(
2639                    "alias is required because " + right + " is not a table");
2640            }
2641            public String toString() {
2642                return "(" + left + ") join (" + right + ") on " +
2643                    leftAlias + "." + leftKey + " = " +
2644                    rightAlias + "." + rightKey;
2645            }
2646            public Relation find(String seekAlias) {
2647                Relation relation = left.find(seekAlias);
2648                if (relation == null) {
2649                    relation = right.find(seekAlias);
2650                }
2651                return relation;
2652            }
2653            public boolean equals(Object o) {
2654                return (this == o);
2655            }
2656                // END pass-through code block ---
2657        }
2658
2659        public static class Table extends Relation
2660        {
2661                public Table()
2662                {
2663                }
2664
2665                public Table(org.eigenbase.xom.DOMWrapper _def)
2666                        throws org.eigenbase.xom.XOMException
2667                {
2668                        try {
2669                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2670                                org.eigenbase.xom.NodeDef[] _tempArray;
2671                                name = (String)_parser.getAttribute("name", "String", null, null, true);
2672                                schema = (String)_parser.getAttribute("schema", "String", null, null, false);
2673                                alias = (String)_parser.getAttribute("alias", "String", null, null, false);
2674                                filter = (SQL)_parser.getElement(SQL.class, false);
2675                                _tempArray = _parser.getArray(AggExclude.class, 0, 0);
2676                                aggExcludes = new AggExclude[_tempArray.length];
2677                                for (int _i = 0; _i < aggExcludes.length; _i++)
2678                                        aggExcludes[_i] = (AggExclude)_tempArray[_i];
2679                                _tempArray = _parser.getArray(AggTable.class, 0, 0);
2680                                aggTables = new AggTable[_tempArray.length];
2681                                for (int _i = 0; _i < aggTables.length; _i++)
2682                                        aggTables[_i] = (AggTable)_tempArray[_i];
2683                                _tempArray = _parser.getArray(Hint.class, 0, 0);
2684                                tableHints = new Hint[_tempArray.length];
2685                                for (int _i = 0; _i < tableHints.length; _i++)
2686                                        tableHints[_i] = (Hint)_tempArray[_i];
2687                        } catch(org.eigenbase.xom.XOMException _ex) {
2688                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2689                        }
2690                }
2691
2692                public String name;  // required attribute
2693                public String schema;  // optional attribute
2694                public String alias;  // optional attribute
2695
2696                /**
2697                 * The SQL WHERE clause expression to be appended to any select statement
2698                 */
2699                public SQL filter;  //optional element
2700                public AggExclude[] aggExcludes;  //optional array
2701                public AggTable[] aggTables;  //optional array
2702                /**
2703                 * Table optimization hints; may be ignored by dialect.
2704                 */
2705                public Hint[] tableHints;  //optional array
2706
2707                public String getName()
2708                {
2709                        return "Table";
2710                }
2711
2712                public void display(java.io.PrintWriter _out, int _indent)
2713                {
2714                        _out.println(getName());
2715                        displayAttribute(_out, "name", name, _indent+1);
2716                        displayAttribute(_out, "schema", schema, _indent+1);
2717                        displayAttribute(_out, "alias", alias, _indent+1);
2718                        displayElement(_out, "filter", (org.eigenbase.xom.ElementDef) filter, _indent+1);
2719                        displayElementArray(_out, "aggExcludes", aggExcludes, _indent+1);
2720                        displayElementArray(_out, "aggTables", aggTables, _indent+1);
2721                        displayElementArray(_out, "tableHints", tableHints, _indent+1);
2722                }
2723                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2724                {
2725                        _out.beginTag("Table", new org.eigenbase.xom.XMLAttrVector()
2726                                .add("name", name)
2727                                .add("schema", schema)
2728                                .add("alias", alias)
2729                                );
2730                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) filter);
2731                        displayXMLElementArray(_out, aggExcludes);
2732                        displayXMLElementArray(_out, aggTables);
2733                        displayXMLElementArray(_out, tableHints);
2734                        _out.endTag("Table");
2735                }
2736                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2737                {
2738                        Table _cother = (Table)_other;
2739                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
2740                        _diff = _diff && displayAttributeDiff("schema", schema, _cother.schema, _out, _indent+1);
2741                        _diff = _diff && displayAttributeDiff("alias", alias, _cother.alias, _out, _indent+1);
2742                        _diff = _diff && displayElementDiff("filter", filter, _cother.filter, _out, _indent+1);
2743                        _diff = _diff && displayElementArrayDiff("aggExcludes", aggExcludes, _cother.aggExcludes, _out, _indent+1);
2744                        _diff = _diff && displayElementArrayDiff("aggTables", aggTables, _cother.aggTables, _out, _indent+1);
2745                        _diff = _diff && displayElementArrayDiff("tableHints", tableHints, _cother.tableHints, _out, _indent+1);
2746                        return _diff;
2747                }
2748                // BEGIN pass-through code block ---
2749private java.util.Map<String,String> hintMap;
2750            /** Convenience constructor. */
2751            public Table(Table table) {
2752                this(table.schema, table.name, table.alias, table.tableHints);
2753            }
2754            public Table(String schema, String name, String alias, Hint[] tablehints) {
2755                this();
2756                this.schema = schema;
2757                this.name = name;
2758                this.alias = alias;
2759                this.hintMap = buildHintMap(tablehints);
2760            }
2761            private java.util.Map<String,String> buildHintMap(Hint[] th) {
2762                java.util.Map<String,String> h =
2763                    new java.util.HashMap<String,String>();
2764                if (th != null) {
2765                    for (int i = 0; i < th.length; i++) {
2766                        h.put(th[i].type, th[i].cdata);
2767                    }
2768                }
2769                return h;
2770            }
2771            /** Returns the alias or, if it is null, the table name. */
2772            public String getAlias() {
2773                return (alias != null) ? alias : name;
2774            }
2775            public String toString() {
2776                return (schema == null) ?
2777                    name :
2778                    schema + "." + name;
2779            }
2780            public Table find(String seekAlias) {
2781                return seekAlias.equals(name) ? this :
2782                    (alias != null) && seekAlias.equals(alias) ? this :
2783                    null;
2784            }
2785            public boolean equals(Object o) {
2786                if (true) return (this == o);
2787                // Following code is disabled to resolve problem of disappearing
2788                // schema elements from tree panel.
2789                if (o instanceof Table) {
2790                    Table that = (Table) o;
2791                    return this.name.equals(that.name) &&
2792                        Util.equals(this.alias, that.alias) &&
2793                        Util.equals(this.schema, that.schema);
2794                } else {
2795                    return false;
2796                }
2797            }
2798            public int hashCode() {
2799                return toString().hashCode();
2800            }
2801            public String getFilter() {
2802                return (filter == null) ? null : filter.cdata;
2803            }
2804            public AggExclude[] getAggExcludes() {
2805                return aggExcludes;
2806            }
2807            public AggTable[] getAggTables() {
2808                return aggTables;
2809            }
2810            public java.util.Map<String,String> getHintMap() {
2811                if (hintMap == null) {
2812                    hintMap = buildHintMap(this.tableHints);
2813                }
2814                return hintMap;
2815            }
2816                // END pass-through code block ---
2817        }
2818
2819        /**
2820         * Dialect-specific table optimization hints.
2821         */
2822        public static class Hint extends org.eigenbase.xom.ElementDef
2823        {
2824                public Hint()
2825                {
2826                }
2827
2828                public Hint(org.eigenbase.xom.DOMWrapper _def)
2829                        throws org.eigenbase.xom.XOMException
2830                {
2831                        try {
2832                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2833                                type = (String)_parser.getAttribute("type", "String", null, null, true);
2834                                cdata = _parser.getText();
2835                        } catch(org.eigenbase.xom.XOMException _ex) {
2836                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2837                        }
2838                }
2839
2840                public String type;  // required attribute
2841
2842                public String cdata;  // All text goes here
2843                public String getName()
2844                {
2845                        return "Hint";
2846                }
2847
2848                public void display(java.io.PrintWriter _out, int _indent)
2849                {
2850                        _out.println(getName());
2851                        displayAttribute(_out, "type", type, _indent+1);
2852                        displayString(_out, "cdata", cdata, _indent+1);
2853                }
2854                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2855                {
2856                        _out.beginTag("Hint", new org.eigenbase.xom.XMLAttrVector()
2857                                .add("type", type)
2858                                );
2859                        _out.cdata(cdata);
2860                        _out.endTag("Hint");
2861                }
2862                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2863                {
2864                        Hint _cother = (Hint)_other;
2865                        boolean _diff = displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
2866                        _diff = _diff && displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
2867                        return _diff;
2868                }
2869        }
2870
2871        public static class InlineTable extends Relation
2872        {
2873                public InlineTable()
2874                {
2875                }
2876
2877                public InlineTable(org.eigenbase.xom.DOMWrapper _def)
2878                        throws org.eigenbase.xom.XOMException
2879                {
2880                        try {
2881                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2882                                alias = (String)_parser.getAttribute("alias", "String", null, null, false);
2883                                columnDefs = (ColumnDefs)_parser.getElement(ColumnDefs.class, true);
2884                                rows = (Rows)_parser.getElement(Rows.class, true);
2885                        } catch(org.eigenbase.xom.XOMException _ex) {
2886                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2887                        }
2888                }
2889
2890                public String alias;  // optional attribute
2891
2892                public ColumnDefs columnDefs;  //required element
2893                public Rows rows;  //required element
2894
2895                public String getName()
2896                {
2897                        return "InlineTable";
2898                }
2899
2900                public void display(java.io.PrintWriter _out, int _indent)
2901                {
2902                        _out.println(getName());
2903                        displayAttribute(_out, "alias", alias, _indent+1);
2904                        displayElement(_out, "columnDefs", (org.eigenbase.xom.ElementDef) columnDefs, _indent+1);
2905                        displayElement(_out, "rows", (org.eigenbase.xom.ElementDef) rows, _indent+1);
2906                }
2907                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2908                {
2909                        _out.beginTag("InlineTable", new org.eigenbase.xom.XMLAttrVector()
2910                                .add("alias", alias)
2911                                );
2912                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) columnDefs);
2913                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) rows);
2914                        _out.endTag("InlineTable");
2915                }
2916                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
2917                {
2918                        InlineTable _cother = (InlineTable)_other;
2919                        boolean _diff = displayAttributeDiff("alias", alias, _cother.alias, _out, _indent+1);
2920                        _diff = _diff && displayElementDiff("columnDefs", columnDefs, _cother.columnDefs, _out, _indent+1);
2921                        _diff = _diff && displayElementDiff("rows", rows, _cother.rows, _out, _indent+1);
2922                        return _diff;
2923                }
2924                // BEGIN pass-through code block ---
2925/** Convenience constructor. */
2926            public InlineTable(InlineTable inlineTable) {
2927                this.alias = inlineTable.alias;
2928                this.columnDefs = new ColumnDefs();
2929                this.columnDefs.array = inlineTable.columnDefs.array.clone();
2930                this.rows = new Rows();
2931                this.rows.array = inlineTable.rows.array.clone();
2932            }
2933            public String getAlias() {
2934                return alias;
2935            }
2936            public String toString() {
2937                return "<inline data>";
2938            }
2939            public InlineTable find(String seekAlias) {
2940                return seekAlias.equals(this.alias) ? this : null;
2941            }
2942            public boolean equals(Object o) {
2943                if (o instanceof InlineTable) {
2944                    InlineTable that = (InlineTable) o;
2945                    return this.alias.equals(that.alias);
2946                } else {
2947                    return false;
2948                }
2949            }
2950            public int hashCode() {
2951                return toString().hashCode();
2952            }
2953                // END pass-through code block ---
2954        }
2955
2956        /**
2957         * Holder for an array of ColumnDef elements
2958         */
2959        public static class ColumnDefs extends org.eigenbase.xom.ElementDef
2960        {
2961                public ColumnDefs()
2962                {
2963                }
2964
2965                public ColumnDefs(org.eigenbase.xom.DOMWrapper _def)
2966                        throws org.eigenbase.xom.XOMException
2967                {
2968                        try {
2969                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
2970                                org.eigenbase.xom.NodeDef[] _tempArray;
2971                                _tempArray = _parser.getArray(ColumnDef.class, 0, 0);
2972                                array = new ColumnDef[_tempArray.length];
2973                                for (int _i = 0; _i < array.length; _i++)
2974                                        array[_i] = (ColumnDef)_tempArray[_i];
2975                        } catch(org.eigenbase.xom.XOMException _ex) {
2976                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
2977                        }
2978                }
2979
2980
2981                public ColumnDef[] array;  //optional array
2982
2983                public String getName()
2984                {
2985                        return "ColumnDefs";
2986                }
2987
2988                public void display(java.io.PrintWriter _out, int _indent)
2989                {
2990                        _out.println(getName());
2991                        displayElementArray(_out, "array", array, _indent+1);
2992                }
2993                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
2994                {
2995                        _out.beginTag("ColumnDefs", new org.eigenbase.xom.XMLAttrVector()
2996                                );
2997                        displayXMLElementArray(_out, array);
2998                        _out.endTag("ColumnDefs");
2999                }
3000                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3001                {
3002                        ColumnDefs _cother = (ColumnDefs)_other;
3003                        boolean _diff = displayElementArrayDiff("array", array, _cother.array, _out, _indent+1);
3004                        return _diff;
3005                }
3006        }
3007
3008        /**
3009         * Column definition for an inline table.
3010         */
3011        public static class ColumnDef extends org.eigenbase.xom.ElementDef
3012        {
3013                public ColumnDef()
3014                {
3015                }
3016
3017                public ColumnDef(org.eigenbase.xom.DOMWrapper _def)
3018                        throws org.eigenbase.xom.XOMException
3019                {
3020                        try {
3021                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3022                                name = (String)_parser.getAttribute("name", "String", null, null, true);
3023                                type = (String)_parser.getAttribute("type", "String", null, _type_values, true);
3024                        } catch(org.eigenbase.xom.XOMException _ex) {
3025                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3026                        }
3027                }
3028
3029                public String name;  // required attribute
3030                /** Allowable values for {@link #type}. */
3031                public static final String[] _type_values = {"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp"};
3032                public String type;  // required attribute
3033
3034
3035                public String getName()
3036                {
3037                        return "ColumnDef";
3038                }
3039
3040                public void display(java.io.PrintWriter _out, int _indent)
3041                {
3042                        _out.println(getName());
3043                        displayAttribute(_out, "name", name, _indent+1);
3044                        displayAttribute(_out, "type", type, _indent+1);
3045                }
3046                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3047                {
3048                        _out.beginTag("ColumnDef", new org.eigenbase.xom.XMLAttrVector()
3049                                .add("name", name)
3050                                .add("type", type)
3051                                );
3052                        _out.endTag("ColumnDef");
3053                }
3054                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3055                {
3056                        ColumnDef _cother = (ColumnDef)_other;
3057                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3058                        _diff = _diff && displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
3059                        return _diff;
3060                }
3061        }
3062
3063        /**
3064         * Holder for an array of Row elements
3065         */
3066        public static class Rows extends org.eigenbase.xom.ElementDef
3067        {
3068                public Rows()
3069                {
3070                }
3071
3072                public Rows(org.eigenbase.xom.DOMWrapper _def)
3073                        throws org.eigenbase.xom.XOMException
3074                {
3075                        try {
3076                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3077                                org.eigenbase.xom.NodeDef[] _tempArray;
3078                                _tempArray = _parser.getArray(Row.class, 0, 0);
3079                                array = new Row[_tempArray.length];
3080                                for (int _i = 0; _i < array.length; _i++)
3081                                        array[_i] = (Row)_tempArray[_i];
3082                        } catch(org.eigenbase.xom.XOMException _ex) {
3083                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3084                        }
3085                }
3086
3087
3088                public Row[] array;  //optional array
3089
3090                public String getName()
3091                {
3092                        return "Rows";
3093                }
3094
3095                public void display(java.io.PrintWriter _out, int _indent)
3096                {
3097                        _out.println(getName());
3098                        displayElementArray(_out, "array", array, _indent+1);
3099                }
3100                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3101                {
3102                        _out.beginTag("Rows", new org.eigenbase.xom.XMLAttrVector()
3103                                );
3104                        displayXMLElementArray(_out, array);
3105                        _out.endTag("Rows");
3106                }
3107                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3108                {
3109                        Rows _cother = (Rows)_other;
3110                        boolean _diff = displayElementArrayDiff("array", array, _cother.array, _out, _indent+1);
3111                        return _diff;
3112                }
3113        }
3114
3115        /**
3116         * Row definition for an inline table.
3117         * Must have one Column for each ColumnDef in the InlineTable.
3118         */
3119        public static class Row extends org.eigenbase.xom.ElementDef
3120        {
3121                public Row()
3122                {
3123                }
3124
3125                public Row(org.eigenbase.xom.DOMWrapper _def)
3126                        throws org.eigenbase.xom.XOMException
3127                {
3128                        try {
3129                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3130                                org.eigenbase.xom.NodeDef[] _tempArray;
3131                                _tempArray = _parser.getArray(Value.class, 0, 0);
3132                                values = new Value[_tempArray.length];
3133                                for (int _i = 0; _i < values.length; _i++)
3134                                        values[_i] = (Value)_tempArray[_i];
3135                        } catch(org.eigenbase.xom.XOMException _ex) {
3136                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3137                        }
3138                }
3139
3140
3141                public Value[] values;  //optional array
3142
3143                public String getName()
3144                {
3145                        return "Row";
3146                }
3147
3148                public void display(java.io.PrintWriter _out, int _indent)
3149                {
3150                        _out.println(getName());
3151                        displayElementArray(_out, "values", values, _indent+1);
3152                }
3153                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3154                {
3155                        _out.beginTag("Row", new org.eigenbase.xom.XMLAttrVector()
3156                                );
3157                        displayXMLElementArray(_out, values);
3158                        _out.endTag("Row");
3159                }
3160                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3161                {
3162                        Row _cother = (Row)_other;
3163                        boolean _diff = displayElementArrayDiff("values", values, _cother.values, _out, _indent+1);
3164                        return _diff;
3165                }
3166        }
3167
3168        /**
3169         * Column value for an inline table.
3170         * The CDATA holds the value of the column.
3171         */
3172        public static class Value extends org.eigenbase.xom.ElementDef
3173        {
3174                public Value()
3175                {
3176                }
3177
3178                public Value(org.eigenbase.xom.DOMWrapper _def)
3179                        throws org.eigenbase.xom.XOMException
3180                {
3181                        try {
3182                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3183                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3184                                cdata = _parser.getText();
3185                        } catch(org.eigenbase.xom.XOMException _ex) {
3186                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3187                        }
3188                }
3189
3190                public String column;  // required attribute
3191
3192                public String cdata;  // All text goes here
3193                public String getName()
3194                {
3195                        return "Value";
3196                }
3197
3198                public void display(java.io.PrintWriter _out, int _indent)
3199                {
3200                        _out.println(getName());
3201                        displayAttribute(_out, "column", column, _indent+1);
3202                        displayString(_out, "cdata", cdata, _indent+1);
3203                }
3204                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3205                {
3206                        _out.beginTag("Value", new org.eigenbase.xom.XMLAttrVector()
3207                                .add("column", column)
3208                                );
3209                        _out.cdata(cdata);
3210                        _out.endTag("Value");
3211                }
3212                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3213                {
3214                        Value _cother = (Value)_other;
3215                        boolean _diff = displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
3216                        _diff = _diff && displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
3217                        return _diff;
3218                }
3219        }
3220
3221        /**
3222         * A definition of an aggregate table for a base fact table.
3223         * This aggregate table must be in the same schema as the
3224         * base fact table.
3225         */
3226        public static abstract class AggTable extends org.eigenbase.xom.ElementDef
3227        {
3228                public AggTable()
3229                {
3230                }
3231
3232                public AggTable(org.eigenbase.xom.DOMWrapper _def)
3233                        throws org.eigenbase.xom.XOMException
3234                {
3235                        try {
3236                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3237                                org.eigenbase.xom.NodeDef[] _tempArray;
3238                                ignorecase = (Boolean)_parser.getAttribute("ignorecase", "Boolean", "true", null, false);
3239                                factcount = (AggFactCount)_parser.getElement(AggFactCount.class, true);
3240                                _tempArray = _parser.getArray(AggIgnoreColumn.class, 0, 0);
3241                                ignoreColumns = new AggIgnoreColumn[_tempArray.length];
3242                                for (int _i = 0; _i < ignoreColumns.length; _i++)
3243                                        ignoreColumns[_i] = (AggIgnoreColumn)_tempArray[_i];
3244                                _tempArray = _parser.getArray(AggForeignKey.class, 0, 0);
3245                                foreignKeys = new AggForeignKey[_tempArray.length];
3246                                for (int _i = 0; _i < foreignKeys.length; _i++)
3247                                        foreignKeys[_i] = (AggForeignKey)_tempArray[_i];
3248                                _tempArray = _parser.getArray(AggMeasure.class, 0, 0);
3249                                measures = new AggMeasure[_tempArray.length];
3250                                for (int _i = 0; _i < measures.length; _i++)
3251                                        measures[_i] = (AggMeasure)_tempArray[_i];
3252                                _tempArray = _parser.getArray(AggLevel.class, 0, 0);
3253                                levels = new AggLevel[_tempArray.length];
3254                                for (int _i = 0; _i < levels.length; _i++)
3255                                        levels[_i] = (AggLevel)_tempArray[_i];
3256                        } catch(org.eigenbase.xom.XOMException _ex) {
3257                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3258                        }
3259                }
3260
3261                public Boolean ignorecase;  // attribute default: true
3262
3263                /**
3264                 * What does the fact_count column look like.
3265                 */
3266                public AggFactCount factcount;  //required element
3267                public AggIgnoreColumn[] ignoreColumns;  //optional array
3268                public AggForeignKey[] foreignKeys;  //optional array
3269                public AggMeasure[] measures;  //optional array
3270                public AggLevel[] levels;  //optional array
3271
3272                public String getName()
3273                {
3274                        return "AggTable";
3275                }
3276
3277                public void display(java.io.PrintWriter _out, int _indent)
3278                {
3279                        _out.println(getName());
3280                        displayAttribute(_out, "ignorecase", ignorecase, _indent+1);
3281                        displayElement(_out, "factcount", (org.eigenbase.xom.ElementDef) factcount, _indent+1);
3282                        displayElementArray(_out, "ignoreColumns", ignoreColumns, _indent+1);
3283                        displayElementArray(_out, "foreignKeys", foreignKeys, _indent+1);
3284                        displayElementArray(_out, "measures", measures, _indent+1);
3285                        displayElementArray(_out, "levels", levels, _indent+1);
3286                }
3287                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3288                {
3289                        _out.beginTag("AggTable", new org.eigenbase.xom.XMLAttrVector()
3290                                .add("ignorecase", ignorecase)
3291                                );
3292                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) factcount);
3293                        displayXMLElementArray(_out, ignoreColumns);
3294                        displayXMLElementArray(_out, foreignKeys);
3295                        displayXMLElementArray(_out, measures);
3296                        displayXMLElementArray(_out, levels);
3297                        _out.endTag("AggTable");
3298                }
3299                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3300                {
3301                        AggTable _cother = (AggTable)_other;
3302                        boolean _diff = displayAttributeDiff("ignorecase", ignorecase, _cother.ignorecase, _out, _indent+1);
3303                        _diff = _diff && displayElementDiff("factcount", factcount, _cother.factcount, _out, _indent+1);
3304                        _diff = _diff && displayElementArrayDiff("ignoreColumns", ignoreColumns, _cother.ignoreColumns, _out, _indent+1);
3305                        _diff = _diff && displayElementArrayDiff("foreignKeys", foreignKeys, _cother.foreignKeys, _out, _indent+1);
3306                        _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
3307                        _diff = _diff && displayElementArrayDiff("levels", levels, _cother.levels, _out, _indent+1);
3308                        return _diff;
3309                }
3310                // BEGIN pass-through code block ---
3311public boolean isIgnoreCase() {
3312                return ignorecase.booleanValue();
3313            }
3314            public AggFactCount getAggFactCount() {
3315                return factcount;
3316            }
3317            public AggIgnoreColumn[] getAggIgnoreColumns() {
3318                return ignoreColumns;
3319            }
3320            public AggForeignKey[] getAggForeignKeys() {
3321                return foreignKeys;
3322            }
3323            public AggMeasure[] getAggMeasures() {
3324                return measures;
3325            }
3326            public AggLevel[] getAggLevels() {
3327                return levels;
3328            }
3329                // END pass-through code block ---
3330        }
3331
3332        public static class AggName extends AggTable
3333        {
3334                public AggName()
3335                {
3336                }
3337
3338                public AggName(org.eigenbase.xom.DOMWrapper _def)
3339                        throws org.eigenbase.xom.XOMException
3340                {
3341                        try {
3342                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3343                                org.eigenbase.xom.NodeDef[] _tempArray;
3344                                name = (String)_parser.getAttribute("name", "String", null, null, true);
3345                                approxRowCount = (String)_parser.getAttribute("approxRowCount", "String", null, null, false);
3346                                ignorecase = (Boolean)_parser.getAttribute("ignorecase", "Boolean", "true", null, false);
3347                                factcount = (AggFactCount)_parser.getElement(AggFactCount.class, true);
3348                                _tempArray = _parser.getArray(AggIgnoreColumn.class, 0, 0);
3349                                ignoreColumns = new AggIgnoreColumn[_tempArray.length];
3350                                for (int _i = 0; _i < ignoreColumns.length; _i++)
3351                                        ignoreColumns[_i] = (AggIgnoreColumn)_tempArray[_i];
3352                                _tempArray = _parser.getArray(AggForeignKey.class, 0, 0);
3353                                foreignKeys = new AggForeignKey[_tempArray.length];
3354                                for (int _i = 0; _i < foreignKeys.length; _i++)
3355                                        foreignKeys[_i] = (AggForeignKey)_tempArray[_i];
3356                                _tempArray = _parser.getArray(AggMeasure.class, 0, 0);
3357                                measures = new AggMeasure[_tempArray.length];
3358                                for (int _i = 0; _i < measures.length; _i++)
3359                                        measures[_i] = (AggMeasure)_tempArray[_i];
3360                                _tempArray = _parser.getArray(AggLevel.class, 0, 0);
3361                                levels = new AggLevel[_tempArray.length];
3362                                for (int _i = 0; _i < levels.length; _i++)
3363                                        levels[_i] = (AggLevel)_tempArray[_i];
3364                        } catch(org.eigenbase.xom.XOMException _ex) {
3365                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3366                        }
3367                }
3368
3369                public String name;  // required attribute
3370                public String approxRowCount;  // optional attribute
3371
3372
3373                public String getName()
3374                {
3375                        return "AggName";
3376                }
3377
3378                public void display(java.io.PrintWriter _out, int _indent)
3379                {
3380                        _out.println(getName());
3381                        displayAttribute(_out, "name", name, _indent+1);
3382                        displayAttribute(_out, "approxRowCount", approxRowCount, _indent+1);
3383                        displayAttribute(_out, "ignorecase", ignorecase, _indent+1);
3384                        displayElement(_out, "factcount", (org.eigenbase.xom.ElementDef) factcount, _indent+1);
3385                        displayElementArray(_out, "ignoreColumns", ignoreColumns, _indent+1);
3386                        displayElementArray(_out, "foreignKeys", foreignKeys, _indent+1);
3387                        displayElementArray(_out, "measures", measures, _indent+1);
3388                        displayElementArray(_out, "levels", levels, _indent+1);
3389                }
3390                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3391                {
3392                        _out.beginTag("AggName", new org.eigenbase.xom.XMLAttrVector()
3393                                .add("name", name)
3394                                .add("approxRowCount", approxRowCount)
3395                                .add("ignorecase", ignorecase)
3396                                );
3397                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) factcount);
3398                        displayXMLElementArray(_out, ignoreColumns);
3399                        displayXMLElementArray(_out, foreignKeys);
3400                        displayXMLElementArray(_out, measures);
3401                        displayXMLElementArray(_out, levels);
3402                        _out.endTag("AggName");
3403                }
3404                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3405                {
3406                        AggName _cother = (AggName)_other;
3407                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3408                        _diff = _diff && displayAttributeDiff("approxRowCount", approxRowCount, _cother.approxRowCount, _out, _indent+1);
3409                        _diff = _diff && displayElementDiff("factcount", factcount, _cother.factcount, _out, _indent+1);
3410                        _diff = _diff && displayElementArrayDiff("ignoreColumns", ignoreColumns, _cother.ignoreColumns, _out, _indent+1);
3411                        _diff = _diff && displayElementArrayDiff("foreignKeys", foreignKeys, _cother.foreignKeys, _out, _indent+1);
3412                        _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
3413                        _diff = _diff && displayElementArrayDiff("levels", levels, _cother.levels, _out, _indent+1);
3414                        return _diff;
3415                }
3416                // BEGIN pass-through code block ---
3417public String getNameAttribute() {
3418                return name;
3419            }
3420            public String getApproxRowCountAttribute() {
3421                return approxRowCount;
3422            }
3423                // END pass-through code block ---
3424        }
3425
3426        public static class AggPattern extends AggTable
3427        {
3428                public AggPattern()
3429                {
3430                }
3431
3432                public AggPattern(org.eigenbase.xom.DOMWrapper _def)
3433                        throws org.eigenbase.xom.XOMException
3434                {
3435                        try {
3436                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3437                                org.eigenbase.xom.NodeDef[] _tempArray;
3438                                pattern = (String)_parser.getAttribute("pattern", "String", null, null, true);
3439                                ignorecase = (Boolean)_parser.getAttribute("ignorecase", "Boolean", "true", null, false);
3440                                factcount = (AggFactCount)_parser.getElement(AggFactCount.class, true);
3441                                _tempArray = _parser.getArray(AggIgnoreColumn.class, 0, 0);
3442                                ignoreColumns = new AggIgnoreColumn[_tempArray.length];
3443                                for (int _i = 0; _i < ignoreColumns.length; _i++)
3444                                        ignoreColumns[_i] = (AggIgnoreColumn)_tempArray[_i];
3445                                _tempArray = _parser.getArray(AggForeignKey.class, 0, 0);
3446                                foreignKeys = new AggForeignKey[_tempArray.length];
3447                                for (int _i = 0; _i < foreignKeys.length; _i++)
3448                                        foreignKeys[_i] = (AggForeignKey)_tempArray[_i];
3449                                _tempArray = _parser.getArray(AggMeasure.class, 0, 0);
3450                                measures = new AggMeasure[_tempArray.length];
3451                                for (int _i = 0; _i < measures.length; _i++)
3452                                        measures[_i] = (AggMeasure)_tempArray[_i];
3453                                _tempArray = _parser.getArray(AggLevel.class, 0, 0);
3454                                levels = new AggLevel[_tempArray.length];
3455                                for (int _i = 0; _i < levels.length; _i++)
3456                                        levels[_i] = (AggLevel)_tempArray[_i];
3457                                _tempArray = _parser.getArray(AggExclude.class, 0, 0);
3458                                excludes = new AggExclude[_tempArray.length];
3459                                for (int _i = 0; _i < excludes.length; _i++)
3460                                        excludes[_i] = (AggExclude)_tempArray[_i];
3461                        } catch(org.eigenbase.xom.XOMException _ex) {
3462                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3463                        }
3464                }
3465
3466                public String pattern;  // required attribute
3467
3468                public AggExclude[] excludes;  //optional array
3469
3470                public String getName()
3471                {
3472                        return "AggPattern";
3473                }
3474
3475                public void display(java.io.PrintWriter _out, int _indent)
3476                {
3477                        _out.println(getName());
3478                        displayAttribute(_out, "pattern", pattern, _indent+1);
3479                        displayAttribute(_out, "ignorecase", ignorecase, _indent+1);
3480                        displayElement(_out, "factcount", (org.eigenbase.xom.ElementDef) factcount, _indent+1);
3481                        displayElementArray(_out, "ignoreColumns", ignoreColumns, _indent+1);
3482                        displayElementArray(_out, "foreignKeys", foreignKeys, _indent+1);
3483                        displayElementArray(_out, "measures", measures, _indent+1);
3484                        displayElementArray(_out, "levels", levels, _indent+1);
3485                        displayElementArray(_out, "excludes", excludes, _indent+1);
3486                }
3487                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3488                {
3489                        _out.beginTag("AggPattern", new org.eigenbase.xom.XMLAttrVector()
3490                                .add("pattern", pattern)
3491                                .add("ignorecase", ignorecase)
3492                                );
3493                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) factcount);
3494                        displayXMLElementArray(_out, ignoreColumns);
3495                        displayXMLElementArray(_out, foreignKeys);
3496                        displayXMLElementArray(_out, measures);
3497                        displayXMLElementArray(_out, levels);
3498                        displayXMLElementArray(_out, excludes);
3499                        _out.endTag("AggPattern");
3500                }
3501                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3502                {
3503                        AggPattern _cother = (AggPattern)_other;
3504                        boolean _diff = displayAttributeDiff("pattern", pattern, _cother.pattern, _out, _indent+1);
3505                        _diff = _diff && displayElementDiff("factcount", factcount, _cother.factcount, _out, _indent+1);
3506                        _diff = _diff && displayElementArrayDiff("ignoreColumns", ignoreColumns, _cother.ignoreColumns, _out, _indent+1);
3507                        _diff = _diff && displayElementArrayDiff("foreignKeys", foreignKeys, _cother.foreignKeys, _out, _indent+1);
3508                        _diff = _diff && displayElementArrayDiff("measures", measures, _cother.measures, _out, _indent+1);
3509                        _diff = _diff && displayElementArrayDiff("levels", levels, _cother.levels, _out, _indent+1);
3510                        _diff = _diff && displayElementArrayDiff("excludes", excludes, _cother.excludes, _out, _indent+1);
3511                        return _diff;
3512                }
3513                // BEGIN pass-through code block ---
3514public String getPattern() {
3515                return pattern;
3516            }
3517            public AggExclude[] getAggExcludes() {
3518                return excludes;
3519            }
3520                // END pass-through code block ---
3521        }
3522
3523        public static class AggExclude extends org.eigenbase.xom.ElementDef
3524        {
3525                public AggExclude()
3526                {
3527                }
3528
3529                public AggExclude(org.eigenbase.xom.DOMWrapper _def)
3530                        throws org.eigenbase.xom.XOMException
3531                {
3532                        try {
3533                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3534                                pattern = (String)_parser.getAttribute("pattern", "String", null, null, false);
3535                                name = (String)_parser.getAttribute("name", "String", null, null, false);
3536                                ignorecase = (Boolean)_parser.getAttribute("ignorecase", "Boolean", "true", null, false);
3537                        } catch(org.eigenbase.xom.XOMException _ex) {
3538                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3539                        }
3540                }
3541
3542                public String pattern;  // optional attribute
3543                public String name;  // optional attribute
3544                public Boolean ignorecase;  // attribute default: true
3545
3546
3547                public String getName()
3548                {
3549                        return "AggExclude";
3550                }
3551
3552                public void display(java.io.PrintWriter _out, int _indent)
3553                {
3554                        _out.println(getName());
3555                        displayAttribute(_out, "pattern", pattern, _indent+1);
3556                        displayAttribute(_out, "name", name, _indent+1);
3557                        displayAttribute(_out, "ignorecase", ignorecase, _indent+1);
3558                }
3559                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3560                {
3561                        _out.beginTag("AggExclude", new org.eigenbase.xom.XMLAttrVector()
3562                                .add("pattern", pattern)
3563                                .add("name", name)
3564                                .add("ignorecase", ignorecase)
3565                                );
3566                        _out.endTag("AggExclude");
3567                }
3568                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3569                {
3570                        AggExclude _cother = (AggExclude)_other;
3571                        boolean _diff = displayAttributeDiff("pattern", pattern, _cother.pattern, _out, _indent+1);
3572                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3573                        _diff = _diff && displayAttributeDiff("ignorecase", ignorecase, _cother.ignorecase, _out, _indent+1);
3574                        return _diff;
3575                }
3576                // BEGIN pass-through code block ---
3577public String getNameAttribute() {
3578                return name;
3579            }
3580            public String getPattern() {
3581                return pattern;
3582            }
3583            public boolean isIgnoreCase() {
3584                return ignorecase.booleanValue();
3585            }
3586                // END pass-through code block ---
3587        }
3588
3589        public static abstract class AggColumnName extends org.eigenbase.xom.ElementDef
3590        {
3591                public AggColumnName()
3592                {
3593                }
3594
3595                public AggColumnName(org.eigenbase.xom.DOMWrapper _def)
3596                        throws org.eigenbase.xom.XOMException
3597                {
3598                        try {
3599                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3600                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3601                        } catch(org.eigenbase.xom.XOMException _ex) {
3602                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3603                        }
3604                }
3605
3606                public String column;  // required attribute
3607
3608
3609                public String getName()
3610                {
3611                        return "AggColumnName";
3612                }
3613
3614                public void display(java.io.PrintWriter _out, int _indent)
3615                {
3616                        _out.println(getName());
3617                        displayAttribute(_out, "column", column, _indent+1);
3618                }
3619                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3620                {
3621                        _out.beginTag("AggColumnName", new org.eigenbase.xom.XMLAttrVector()
3622                                .add("column", column)
3623                                );
3624                        _out.endTag("AggColumnName");
3625                }
3626                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3627                {
3628                        AggColumnName _cother = (AggColumnName)_other;
3629                        boolean _diff = displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
3630                        return _diff;
3631                }
3632                // BEGIN pass-through code block ---
3633public String getColumnName() {
3634                return column;
3635            }
3636                // END pass-through code block ---
3637        }
3638
3639        public static class AggFactCount extends AggColumnName
3640        {
3641                public AggFactCount()
3642                {
3643                }
3644
3645                public AggFactCount(org.eigenbase.xom.DOMWrapper _def)
3646                        throws org.eigenbase.xom.XOMException
3647                {
3648                        try {
3649                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3650                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3651                        } catch(org.eigenbase.xom.XOMException _ex) {
3652                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3653                        }
3654                }
3655
3656
3657
3658                public String getName()
3659                {
3660                        return "AggFactCount";
3661                }
3662
3663                public void display(java.io.PrintWriter _out, int _indent)
3664                {
3665                        _out.println(getName());
3666                        displayAttribute(_out, "column", column, _indent+1);
3667                }
3668                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3669                {
3670                        _out.beginTag("AggFactCount", new org.eigenbase.xom.XMLAttrVector()
3671                                .add("column", column)
3672                                );
3673                        _out.endTag("AggFactCount");
3674                }
3675                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3676                {
3677                        AggFactCount _cother = (AggFactCount)_other;
3678                        return true;
3679                }
3680        }
3681
3682        public static class AggIgnoreColumn extends AggColumnName
3683        {
3684                public AggIgnoreColumn()
3685                {
3686                }
3687
3688                public AggIgnoreColumn(org.eigenbase.xom.DOMWrapper _def)
3689                        throws org.eigenbase.xom.XOMException
3690                {
3691                        try {
3692                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3693                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3694                        } catch(org.eigenbase.xom.XOMException _ex) {
3695                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3696                        }
3697                }
3698
3699
3700
3701                public String getName()
3702                {
3703                        return "AggIgnoreColumn";
3704                }
3705
3706                public void display(java.io.PrintWriter _out, int _indent)
3707                {
3708                        _out.println(getName());
3709                        displayAttribute(_out, "column", column, _indent+1);
3710                }
3711                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3712                {
3713                        _out.beginTag("AggIgnoreColumn", new org.eigenbase.xom.XMLAttrVector()
3714                                .add("column", column)
3715                                );
3716                        _out.endTag("AggIgnoreColumn");
3717                }
3718                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3719                {
3720                        AggIgnoreColumn _cother = (AggIgnoreColumn)_other;
3721                        return true;
3722                }
3723        }
3724
3725        /**
3726         * The name of the column mapping from base fact table foreign key
3727         * to aggregate table foreign key.
3728         */
3729        public static class AggForeignKey extends org.eigenbase.xom.ElementDef
3730        {
3731                public AggForeignKey()
3732                {
3733                }
3734
3735                public AggForeignKey(org.eigenbase.xom.DOMWrapper _def)
3736                        throws org.eigenbase.xom.XOMException
3737                {
3738                        try {
3739                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3740                                factColumn = (String)_parser.getAttribute("factColumn", "String", null, null, true);
3741                                aggColumn = (String)_parser.getAttribute("aggColumn", "String", null, null, true);
3742                        } catch(org.eigenbase.xom.XOMException _ex) {
3743                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3744                        }
3745                }
3746
3747                public String factColumn;  // required attribute
3748                public String aggColumn;  // required attribute
3749
3750
3751                public String getName()
3752                {
3753                        return "AggForeignKey";
3754                }
3755
3756                public void display(java.io.PrintWriter _out, int _indent)
3757                {
3758                        _out.println(getName());
3759                        displayAttribute(_out, "factColumn", factColumn, _indent+1);
3760                        displayAttribute(_out, "aggColumn", aggColumn, _indent+1);
3761                }
3762                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3763                {
3764                        _out.beginTag("AggForeignKey", new org.eigenbase.xom.XMLAttrVector()
3765                                .add("factColumn", factColumn)
3766                                .add("aggColumn", aggColumn)
3767                                );
3768                        _out.endTag("AggForeignKey");
3769                }
3770                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3771                {
3772                        AggForeignKey _cother = (AggForeignKey)_other;
3773                        boolean _diff = displayAttributeDiff("factColumn", factColumn, _cother.factColumn, _out, _indent+1);
3774                        _diff = _diff && displayAttributeDiff("aggColumn", aggColumn, _cother.aggColumn, _out, _indent+1);
3775                        return _diff;
3776                }
3777                // BEGIN pass-through code block ---
3778public String getFactFKColumnName() {
3779                return factColumn;
3780            }
3781            public String getAggregateFKColumnName() {
3782                return aggColumn;
3783            }
3784                // END pass-through code block ---
3785        }
3786
3787        public static class AggLevel extends org.eigenbase.xom.ElementDef
3788        {
3789                public AggLevel()
3790                {
3791                }
3792
3793                public AggLevel(org.eigenbase.xom.DOMWrapper _def)
3794                        throws org.eigenbase.xom.XOMException
3795                {
3796                        try {
3797                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3798                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3799                                name = (String)_parser.getAttribute("name", "String", null, null, true);
3800                                collapsed = (Boolean)_parser.getAttribute("collapsed", "Boolean", "true", null, false);
3801                        } catch(org.eigenbase.xom.XOMException _ex) {
3802                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3803                        }
3804                }
3805
3806                public String column;  // required attribute
3807                public String name;  // required attribute
3808                public Boolean collapsed;  // attribute default: true
3809
3810
3811                public String getName()
3812                {
3813                        return "AggLevel";
3814                }
3815
3816                public void display(java.io.PrintWriter _out, int _indent)
3817                {
3818                        _out.println(getName());
3819                        displayAttribute(_out, "column", column, _indent+1);
3820                        displayAttribute(_out, "name", name, _indent+1);
3821                        displayAttribute(_out, "collapsed", collapsed, _indent+1);
3822                }
3823                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3824                {
3825                        _out.beginTag("AggLevel", new org.eigenbase.xom.XMLAttrVector()
3826                                .add("column", column)
3827                                .add("name", name)
3828                                .add("collapsed", collapsed)
3829                                );
3830                        _out.endTag("AggLevel");
3831                }
3832                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3833                {
3834                        AggLevel _cother = (AggLevel)_other;
3835                        boolean _diff = displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
3836                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3837                        _diff = _diff && displayAttributeDiff("collapsed", collapsed, _cother.collapsed, _out, _indent+1);
3838                        return _diff;
3839                }
3840                // BEGIN pass-through code block ---
3841public String getNameAttribute() {
3842                return name;
3843            }
3844            public String getColumnName() {
3845                return column;
3846            }
3847            public boolean isCollapsed() {
3848                return collapsed;
3849            }
3850                // END pass-through code block ---
3851        }
3852
3853        public static class AggMeasure extends org.eigenbase.xom.ElementDef
3854        {
3855                public AggMeasure()
3856                {
3857                }
3858
3859                public AggMeasure(org.eigenbase.xom.DOMWrapper _def)
3860                        throws org.eigenbase.xom.XOMException
3861                {
3862                        try {
3863                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3864                                column = (String)_parser.getAttribute("column", "String", null, null, true);
3865                                name = (String)_parser.getAttribute("name", "String", null, null, true);
3866                        } catch(org.eigenbase.xom.XOMException _ex) {
3867                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3868                        }
3869                }
3870
3871                public String column;  // required attribute
3872                public String name;  // required attribute
3873
3874
3875                public String getName()
3876                {
3877                        return "AggMeasure";
3878                }
3879
3880                public void display(java.io.PrintWriter _out, int _indent)
3881                {
3882                        _out.println(getName());
3883                        displayAttribute(_out, "column", column, _indent+1);
3884                        displayAttribute(_out, "name", name, _indent+1);
3885                }
3886                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3887                {
3888                        _out.beginTag("AggMeasure", new org.eigenbase.xom.XMLAttrVector()
3889                                .add("column", column)
3890                                .add("name", name)
3891                                );
3892                        _out.endTag("AggMeasure");
3893                }
3894                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3895                {
3896                        AggMeasure _cother = (AggMeasure)_other;
3897                        boolean _diff = displayAttributeDiff("column", column, _cother.column, _out, _indent+1);
3898                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3899                        return _diff;
3900                }
3901                // BEGIN pass-through code block ---
3902public String getNameAttribute() {
3903                return name;
3904            }
3905            public String getColumn() {
3906                return column;
3907            }
3908                // END pass-through code block ---
3909        }
3910
3911        public interface Expression extends org.eigenbase.xom.NodeDef
3912        {
3913                // BEGIN pass-through code block ---
3914public abstract String getExpression(SqlQuery query);
3915            public abstract String getGenericExpression();
3916            public abstract String getTableAlias();
3917                // END pass-through code block ---
3918        }
3919
3920        public static class Column extends org.eigenbase.xom.ElementDef implements Expression
3921        {
3922                public Column()
3923                {
3924                }
3925
3926                public Column(org.eigenbase.xom.DOMWrapper _def)
3927                        throws org.eigenbase.xom.XOMException
3928                {
3929                        try {
3930                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
3931                                table = (String)_parser.getAttribute("table", "String", null, null, false);
3932                                name = (String)_parser.getAttribute("name", "String", null, null, true);
3933                        } catch(org.eigenbase.xom.XOMException _ex) {
3934                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
3935                        }
3936                }
3937
3938                public String table;  // optional attribute
3939                public String name;  // required attribute
3940
3941
3942                public String getName()
3943                {
3944                        return "Column";
3945                }
3946
3947                public void display(java.io.PrintWriter _out, int _indent)
3948                {
3949                        _out.println(getName());
3950                        displayAttribute(_out, "table", table, _indent+1);
3951                        displayAttribute(_out, "name", name, _indent+1);
3952                }
3953                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
3954                {
3955                        _out.beginTag("Column", new org.eigenbase.xom.XMLAttrVector()
3956                                .add("table", table)
3957                                .add("name", name)
3958                                );
3959                        _out.endTag("Column");
3960                }
3961                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
3962                {
3963                        Column _cother = (Column)_other;
3964                        boolean _diff = displayAttributeDiff("table", table, _cother.table, _out, _indent+1);
3965                        _diff = _diff && displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
3966                        return _diff;
3967                }
3968                // BEGIN pass-through code block ---
3969/** Convenience constructor. */
3970            public Column(String table, String name) {
3971                this();
3972                Util.assertTrue(name != null);
3973                this.table = table;
3974                this.name = name;
3975            }
3976
3977            public String getExpression(SqlQuery query) {
3978                return query.getDialect().quoteIdentifier(table, name);
3979            }
3980
3981            public String getGenericExpression() {
3982                if (table == null) {
3983                    return name;
3984                } else {
3985                    return table + "." + name;
3986                }
3987            }
3988
3989            public String getColumnName() {
3990                return name;
3991            }
3992            public String getTableAlias() {
3993                return table;
3994            }
3995            public int hashCode() {
3996                return name.hashCode() ^ (table==null ? 0 : table.hashCode());
3997            }
3998
3999            public boolean equals(Object obj) {
4000                if (!(obj instanceof Column)) {
4001                    return false;
4002                }
4003                Column that = (Column) obj;
4004                return this.name.equals(that.name) &&
4005                        Util.equals(this.table, that.table);
4006            }
4007                // END pass-through code block ---
4008        }
4009
4010        /**
4011         * A collection of SQL expressions, one per dialect.
4012         */
4013        public static abstract class ExpressionView extends org.eigenbase.xom.ElementDef implements Expression
4014        {
4015                public ExpressionView()
4016                {
4017                }
4018
4019                public ExpressionView(org.eigenbase.xom.DOMWrapper _def)
4020                        throws org.eigenbase.xom.XOMException
4021                {
4022                        try {
4023                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4024                                org.eigenbase.xom.NodeDef[] _tempArray;
4025                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4026                                expressions = new SQL[_tempArray.length];
4027                                for (int _i = 0; _i < expressions.length; _i++)
4028                                        expressions[_i] = (SQL)_tempArray[_i];
4029                        } catch(org.eigenbase.xom.XOMException _ex) {
4030                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4031                        }
4032                }
4033
4034
4035                public SQL[] expressions;  //min 1
4036
4037                public String getName()
4038                {
4039                        return "ExpressionView";
4040                }
4041
4042                public void display(java.io.PrintWriter _out, int _indent)
4043                {
4044                        _out.println(getName());
4045                        displayElementArray(_out, "expressions", expressions, _indent+1);
4046                }
4047                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4048                {
4049                        _out.beginTag("ExpressionView", new org.eigenbase.xom.XMLAttrVector()
4050                                );
4051                        displayXMLElementArray(_out, expressions);
4052                        _out.endTag("ExpressionView");
4053                }
4054                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4055                {
4056                        ExpressionView _cother = (ExpressionView)_other;
4057                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4058                        return _diff;
4059                }
4060                // BEGIN pass-through code block ---
4061public String toString() {
4062                return expressions[0].cdata;
4063            }
4064
4065            public String getExpression(SqlQuery query) {
4066                return SQL.toCodeSet(expressions).chooseQuery(query.getDialect());
4067            }
4068
4069            public String getGenericExpression() {
4070                for (int i = 0; i < expressions.length; i++) {
4071                    if (expressions[i].dialect.equals("generic")) {
4072                        return expressions[i].cdata;
4073                    }
4074                }
4075                return expressions[0].cdata;
4076            }
4077
4078            public String getTableAlias() {
4079                return null;
4080            }
4081
4082            public int hashCode() {
4083                int h = 17;
4084                for (int i = 0; i < expressions.length; i++) {
4085                    h = 37 * h + expressions[i].hashCode();
4086                }
4087                return h;
4088            }
4089
4090            public boolean equals(Object obj) {
4091                if (!(obj instanceof ExpressionView)) {
4092                    return false;
4093                }
4094                ExpressionView that = (ExpressionView) obj;
4095                if (this.expressions.length != that.expressions.length) {
4096                    return false;
4097                }
4098                for (int i = 0; i < expressions.length; i++) {
4099                    if (! this.expressions[i].equals(that.expressions[i])) {
4100                        return false;
4101                    }
4102                }
4103                return true;
4104            }
4105                // END pass-through code block ---
4106        }
4107
4108        public static class KeyExpression extends ExpressionView
4109        {
4110                public KeyExpression()
4111                {
4112                }
4113
4114                public KeyExpression(org.eigenbase.xom.DOMWrapper _def)
4115                        throws org.eigenbase.xom.XOMException
4116                {
4117                        try {
4118                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4119                                org.eigenbase.xom.NodeDef[] _tempArray;
4120                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4121                                expressions = new SQL[_tempArray.length];
4122                                for (int _i = 0; _i < expressions.length; _i++)
4123                                        expressions[_i] = (SQL)_tempArray[_i];
4124                        } catch(org.eigenbase.xom.XOMException _ex) {
4125                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4126                        }
4127                }
4128
4129
4130
4131                public String getName()
4132                {
4133                        return "KeyExpression";
4134                }
4135
4136                public void display(java.io.PrintWriter _out, int _indent)
4137                {
4138                        _out.println(getName());
4139                        displayElementArray(_out, "expressions", expressions, _indent+1);
4140                }
4141                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4142                {
4143                        _out.beginTag("KeyExpression", new org.eigenbase.xom.XMLAttrVector()
4144                                );
4145                        displayXMLElementArray(_out, expressions);
4146                        _out.endTag("KeyExpression");
4147                }
4148                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4149                {
4150                        KeyExpression _cother = (KeyExpression)_other;
4151                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4152                        return _diff;
4153                }
4154        }
4155
4156        public static class ParentExpression extends ExpressionView
4157        {
4158                public ParentExpression()
4159                {
4160                }
4161
4162                public ParentExpression(org.eigenbase.xom.DOMWrapper _def)
4163                        throws org.eigenbase.xom.XOMException
4164                {
4165                        try {
4166                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4167                                org.eigenbase.xom.NodeDef[] _tempArray;
4168                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4169                                expressions = new SQL[_tempArray.length];
4170                                for (int _i = 0; _i < expressions.length; _i++)
4171                                        expressions[_i] = (SQL)_tempArray[_i];
4172                        } catch(org.eigenbase.xom.XOMException _ex) {
4173                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4174                        }
4175                }
4176
4177
4178
4179                public String getName()
4180                {
4181                        return "ParentExpression";
4182                }
4183
4184                public void display(java.io.PrintWriter _out, int _indent)
4185                {
4186                        _out.println(getName());
4187                        displayElementArray(_out, "expressions", expressions, _indent+1);
4188                }
4189                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4190                {
4191                        _out.beginTag("ParentExpression", new org.eigenbase.xom.XMLAttrVector()
4192                                );
4193                        displayXMLElementArray(_out, expressions);
4194                        _out.endTag("ParentExpression");
4195                }
4196                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4197                {
4198                        ParentExpression _cother = (ParentExpression)_other;
4199                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4200                        return _diff;
4201                }
4202        }
4203
4204        public static class OrdinalExpression extends ExpressionView
4205        {
4206                public OrdinalExpression()
4207                {
4208                }
4209
4210                public OrdinalExpression(org.eigenbase.xom.DOMWrapper _def)
4211                        throws org.eigenbase.xom.XOMException
4212                {
4213                        try {
4214                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4215                                org.eigenbase.xom.NodeDef[] _tempArray;
4216                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4217                                expressions = new SQL[_tempArray.length];
4218                                for (int _i = 0; _i < expressions.length; _i++)
4219                                        expressions[_i] = (SQL)_tempArray[_i];
4220                        } catch(org.eigenbase.xom.XOMException _ex) {
4221                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4222                        }
4223                }
4224
4225
4226
4227                public String getName()
4228                {
4229                        return "OrdinalExpression";
4230                }
4231
4232                public void display(java.io.PrintWriter _out, int _indent)
4233                {
4234                        _out.println(getName());
4235                        displayElementArray(_out, "expressions", expressions, _indent+1);
4236                }
4237                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4238                {
4239                        _out.beginTag("OrdinalExpression", new org.eigenbase.xom.XMLAttrVector()
4240                                );
4241                        displayXMLElementArray(_out, expressions);
4242                        _out.endTag("OrdinalExpression");
4243                }
4244                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4245                {
4246                        OrdinalExpression _cother = (OrdinalExpression)_other;
4247                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4248                        return _diff;
4249                }
4250        }
4251
4252        public static class NameExpression extends ExpressionView
4253        {
4254                public NameExpression()
4255                {
4256                }
4257
4258                public NameExpression(org.eigenbase.xom.DOMWrapper _def)
4259                        throws org.eigenbase.xom.XOMException
4260                {
4261                        try {
4262                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4263                                org.eigenbase.xom.NodeDef[] _tempArray;
4264                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4265                                expressions = new SQL[_tempArray.length];
4266                                for (int _i = 0; _i < expressions.length; _i++)
4267                                        expressions[_i] = (SQL)_tempArray[_i];
4268                        } catch(org.eigenbase.xom.XOMException _ex) {
4269                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4270                        }
4271                }
4272
4273
4274
4275                public String getName()
4276                {
4277                        return "NameExpression";
4278                }
4279
4280                public void display(java.io.PrintWriter _out, int _indent)
4281                {
4282                        _out.println(getName());
4283                        displayElementArray(_out, "expressions", expressions, _indent+1);
4284                }
4285                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4286                {
4287                        _out.beginTag("NameExpression", new org.eigenbase.xom.XMLAttrVector()
4288                                );
4289                        displayXMLElementArray(_out, expressions);
4290                        _out.endTag("NameExpression");
4291                }
4292                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4293                {
4294                        NameExpression _cother = (NameExpression)_other;
4295                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4296                        return _diff;
4297                }
4298        }
4299
4300        public static class CaptionExpression extends ExpressionView
4301        {
4302                public CaptionExpression()
4303                {
4304                }
4305
4306                public CaptionExpression(org.eigenbase.xom.DOMWrapper _def)
4307                        throws org.eigenbase.xom.XOMException
4308                {
4309                        try {
4310                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4311                                org.eigenbase.xom.NodeDef[] _tempArray;
4312                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4313                                expressions = new SQL[_tempArray.length];
4314                                for (int _i = 0; _i < expressions.length; _i++)
4315                                        expressions[_i] = (SQL)_tempArray[_i];
4316                        } catch(org.eigenbase.xom.XOMException _ex) {
4317                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4318                        }
4319                }
4320
4321
4322
4323                public String getName()
4324                {
4325                        return "CaptionExpression";
4326                }
4327
4328                public void display(java.io.PrintWriter _out, int _indent)
4329                {
4330                        _out.println(getName());
4331                        displayElementArray(_out, "expressions", expressions, _indent+1);
4332                }
4333                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4334                {
4335                        _out.beginTag("CaptionExpression", new org.eigenbase.xom.XMLAttrVector()
4336                                );
4337                        displayXMLElementArray(_out, expressions);
4338                        _out.endTag("CaptionExpression");
4339                }
4340                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4341                {
4342                        CaptionExpression _cother = (CaptionExpression)_other;
4343                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4344                        return _diff;
4345                }
4346        }
4347
4348        public static class MeasureExpression extends ExpressionView
4349        {
4350                public MeasureExpression()
4351                {
4352                }
4353
4354                public MeasureExpression(org.eigenbase.xom.DOMWrapper _def)
4355                        throws org.eigenbase.xom.XOMException
4356                {
4357                        try {
4358                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4359                                org.eigenbase.xom.NodeDef[] _tempArray;
4360                                _tempArray = _parser.getArray(SQL.class, 1, 0);
4361                                expressions = new SQL[_tempArray.length];
4362                                for (int _i = 0; _i < expressions.length; _i++)
4363                                        expressions[_i] = (SQL)_tempArray[_i];
4364                        } catch(org.eigenbase.xom.XOMException _ex) {
4365                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4366                        }
4367                }
4368
4369
4370
4371                public String getName()
4372                {
4373                        return "MeasureExpression";
4374                }
4375
4376                public void display(java.io.PrintWriter _out, int _indent)
4377                {
4378                        _out.println(getName());
4379                        displayElementArray(_out, "expressions", expressions, _indent+1);
4380                }
4381                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4382                {
4383                        _out.beginTag("MeasureExpression", new org.eigenbase.xom.XMLAttrVector()
4384                                );
4385                        displayXMLElementArray(_out, expressions);
4386                        _out.endTag("MeasureExpression");
4387                }
4388                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4389                {
4390                        MeasureExpression _cother = (MeasureExpression)_other;
4391                        boolean _diff = displayElementArrayDiff("expressions", expressions, _cother.expressions, _out, _indent+1);
4392                        return _diff;
4393                }
4394        }
4395
4396        /**
4397         * A role defines an access-control profile. It has a series of grants
4398         * (or denials) for schema elements.
4399         */
4400        public static class Role extends org.eigenbase.xom.ElementDef
4401        {
4402                public Role()
4403                {
4404                }
4405
4406                public Role(org.eigenbase.xom.DOMWrapper _def)
4407                        throws org.eigenbase.xom.XOMException
4408                {
4409                        try {
4410                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4411                                org.eigenbase.xom.NodeDef[] _tempArray;
4412                                name = (String)_parser.getAttribute("name", "String", null, null, true);
4413                                annotations = (Annotations)_parser.getElement(Annotations.class, false);
4414                                _tempArray = _parser.getArray(SchemaGrant.class, 0, 0);
4415                                schemaGrants = new SchemaGrant[_tempArray.length];
4416                                for (int _i = 0; _i < schemaGrants.length; _i++)
4417                                        schemaGrants[_i] = (SchemaGrant)_tempArray[_i];
4418                                union = (Union)_parser.getElement(Union.class, false);
4419                        } catch(org.eigenbase.xom.XOMException _ex) {
4420                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4421                        }
4422                }
4423
4424                public String name;  // required attribute
4425
4426                /**
4427                 * Contains values of user-defined properties.
4428                 */
4429                public Annotations annotations;  //optional element
4430                public SchemaGrant[] schemaGrants;  //optional array
4431                public Union union;  //optional element
4432
4433                public String getName()
4434                {
4435                        return "Role";
4436                }
4437
4438                public void display(java.io.PrintWriter _out, int _indent)
4439                {
4440                        _out.println(getName());
4441                        displayAttribute(_out, "name", name, _indent+1);
4442                        displayElement(_out, "annotations", (org.eigenbase.xom.ElementDef) annotations, _indent+1);
4443                        displayElementArray(_out, "schemaGrants", schemaGrants, _indent+1);
4444                        displayElement(_out, "union", (org.eigenbase.xom.ElementDef) union, _indent+1);
4445                }
4446                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4447                {
4448                        _out.beginTag("Role", new org.eigenbase.xom.XMLAttrVector()
4449                                .add("name", name)
4450                                );
4451                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) annotations);
4452                        displayXMLElementArray(_out, schemaGrants);
4453                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) union);
4454                        _out.endTag("Role");
4455                }
4456                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4457                {
4458                        Role _cother = (Role)_other;
4459                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
4460                        _diff = _diff && displayElementDiff("annotations", annotations, _cother.annotations, _out, _indent+1);
4461                        _diff = _diff && displayElementArrayDiff("schemaGrants", schemaGrants, _cother.schemaGrants, _out, _indent+1);
4462                        _diff = _diff && displayElementDiff("union", union, _cother.union, _out, _indent+1);
4463                        return _diff;
4464                }
4465        }
4466
4467        public interface Grant extends org.eigenbase.xom.NodeDef
4468        {
4469        }
4470
4471        /**
4472         * Grants (or denies) this role access to this schema.
4473         * access may be "all", "all_dimensions", "custom"
4474         * or "none".
4475         * If access is "all_dimensions", the role has access
4476         * to all dimensions but still needs explicit access to cubes.
4477         * If access is "custom", no access will be inherited by
4478         * cubes for which no explicit rule is set.
4479         * If access is "all_dimensions", an implicut access is
4480         * given to all dimensions of the schema's cubes, provided the cube's
4481         * access attribute is either "custom" or "all".
4482         * See mondrian.olap.Role#grant(mondrian.olap.Schema,int).
4483         */
4484        public static class SchemaGrant extends org.eigenbase.xom.ElementDef implements Grant
4485        {
4486                public SchemaGrant()
4487                {
4488                }
4489
4490                public SchemaGrant(org.eigenbase.xom.DOMWrapper _def)
4491                        throws org.eigenbase.xom.XOMException
4492                {
4493                        try {
4494                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4495                                org.eigenbase.xom.NodeDef[] _tempArray;
4496                                access = (String)_parser.getAttribute("access", "String", null, _access_values, true);
4497                                _tempArray = _parser.getArray(CubeGrant.class, 0, 0);
4498                                cubeGrants = new CubeGrant[_tempArray.length];
4499                                for (int _i = 0; _i < cubeGrants.length; _i++)
4500                                        cubeGrants[_i] = (CubeGrant)_tempArray[_i];
4501                        } catch(org.eigenbase.xom.XOMException _ex) {
4502                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4503                        }
4504                }
4505
4506                /** Allowable values for {@link #access}. */
4507                public static final String[] _access_values = {"all", "custom", "none", "all_dimensions"};
4508                public String access;  // required attribute
4509
4510                public CubeGrant[] cubeGrants;  //optional array
4511
4512                public String getName()
4513                {
4514                        return "SchemaGrant";
4515                }
4516
4517                public void display(java.io.PrintWriter _out, int _indent)
4518                {
4519                        _out.println(getName());
4520                        displayAttribute(_out, "access", access, _indent+1);
4521                        displayElementArray(_out, "cubeGrants", cubeGrants, _indent+1);
4522                }
4523                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4524                {
4525                        _out.beginTag("SchemaGrant", new org.eigenbase.xom.XMLAttrVector()
4526                                .add("access", access)
4527                                );
4528                        displayXMLElementArray(_out, cubeGrants);
4529                        _out.endTag("SchemaGrant");
4530                }
4531                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4532                {
4533                        SchemaGrant _cother = (SchemaGrant)_other;
4534                        boolean _diff = displayElementArrayDiff("cubeGrants", cubeGrants, _cother.cubeGrants, _out, _indent+1);
4535                        return _diff;
4536                }
4537        }
4538
4539        /**
4540         * Grants (or denies) this role access to a cube.
4541         * access may be "all", "custom", or "none".
4542         * If access is "custom", no access will be inherited
4543         * by the dimensions of this cube, unless the parent SchemaGrant is
4544         * set to "ALL_DIMENSIONS".
4545         * See mondrian.olap.Role#grant(mondrian.olap.Cube,int).
4546         */
4547        public static class CubeGrant extends org.eigenbase.xom.ElementDef implements Grant
4548        {
4549                public CubeGrant()
4550                {
4551                }
4552
4553                public CubeGrant(org.eigenbase.xom.DOMWrapper _def)
4554                        throws org.eigenbase.xom.XOMException
4555                {
4556                        try {
4557                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4558                                org.eigenbase.xom.NodeDef[] _tempArray;
4559                                cube = (String)_parser.getAttribute("cube", "String", null, null, true);
4560                                access = (String)_parser.getAttribute("access", "String", null, _access_values, true);
4561                                _tempArray = _parser.getArray(DimensionGrant.class, 0, 0);
4562                                dimensionGrants = new DimensionGrant[_tempArray.length];
4563                                for (int _i = 0; _i < dimensionGrants.length; _i++)
4564                                        dimensionGrants[_i] = (DimensionGrant)_tempArray[_i];
4565                                _tempArray = _parser.getArray(HierarchyGrant.class, 0, 0);
4566                                hierarchyGrants = new HierarchyGrant[_tempArray.length];
4567                                for (int _i = 0; _i < hierarchyGrants.length; _i++)
4568                                        hierarchyGrants[_i] = (HierarchyGrant)_tempArray[_i];
4569                        } catch(org.eigenbase.xom.XOMException _ex) {
4570                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4571                        }
4572                }
4573
4574                /** Allowable values for {@link #access}. */
4575                public static final String[] _access_values = {"all", "custom", "none", "all_dimensions"};
4576                public String access;  // required attribute
4577                public String cube;  // required attribute
4578
4579                public DimensionGrant[] dimensionGrants;  //optional array
4580                public HierarchyGrant[] hierarchyGrants;  //optional array
4581
4582                public String getName()
4583                {
4584                        return "CubeGrant";
4585                }
4586
4587                public void display(java.io.PrintWriter _out, int _indent)
4588                {
4589                        _out.println(getName());
4590                        displayAttribute(_out, "cube", cube, _indent+1);
4591                        displayAttribute(_out, "access", access, _indent+1);
4592                        displayElementArray(_out, "dimensionGrants", dimensionGrants, _indent+1);
4593                        displayElementArray(_out, "hierarchyGrants", hierarchyGrants, _indent+1);
4594                }
4595                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4596                {
4597                        _out.beginTag("CubeGrant", new org.eigenbase.xom.XMLAttrVector()
4598                                .add("cube", cube)
4599                                .add("access", access)
4600                                );
4601                        displayXMLElementArray(_out, dimensionGrants);
4602                        displayXMLElementArray(_out, hierarchyGrants);
4603                        _out.endTag("CubeGrant");
4604                }
4605                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4606                {
4607                        CubeGrant _cother = (CubeGrant)_other;
4608                        boolean _diff = displayAttributeDiff("cube", cube, _cother.cube, _out, _indent+1);
4609                        _diff = _diff && displayElementArrayDiff("dimensionGrants", dimensionGrants, _cother.dimensionGrants, _out, _indent+1);
4610                        _diff = _diff && displayElementArrayDiff("hierarchyGrants", hierarchyGrants, _cother.hierarchyGrants, _out, _indent+1);
4611                        return _diff;
4612                }
4613        }
4614
4615        /**
4616         * Grants (or denies) this role access to a dimension.
4617         * access may be "all", "custom" or "none".
4618         * Note that a role is implicitly given access to a dimension when it
4619         * is given "ALL" acess to a cube.
4620         * If access is "custom", no access will be inherited
4621         * by the hierarchies of this dimension.
4622         * If the parent schema access is "ALL_DIMENSIONS",
4623         * this timension will inherit access "ALL".
4624         * See also the "all_dimensions" option of the "SchemaGrant" element.
4625         * See mondrian.olap.Role#grant(mondrian.olap.Dimension,int).
4626         */
4627        public static class DimensionGrant extends org.eigenbase.xom.ElementDef implements Grant
4628        {
4629                public DimensionGrant()
4630                {
4631                }
4632
4633                public DimensionGrant(org.eigenbase.xom.DOMWrapper _def)
4634                        throws org.eigenbase.xom.XOMException
4635                {
4636                        try {
4637                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4638                                dimension = (String)_parser.getAttribute("dimension", "String", null, null, true);
4639                                access = (String)_parser.getAttribute("access", "String", null, _access_values, true);
4640                        } catch(org.eigenbase.xom.XOMException _ex) {
4641                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4642                        }
4643                }
4644
4645                /** Allowable values for {@link #access}. */
4646                public static final String[] _access_values = {"all", "custom", "none", "all_dimensions"};
4647                public String access;  // required attribute
4648                public String dimension;  // required attribute
4649
4650
4651                public String getName()
4652                {
4653                        return "DimensionGrant";
4654                }
4655
4656                public void display(java.io.PrintWriter _out, int _indent)
4657                {
4658                        _out.println(getName());
4659                        displayAttribute(_out, "dimension", dimension, _indent+1);
4660                        displayAttribute(_out, "access", access, _indent+1);
4661                }
4662                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4663                {
4664                        _out.beginTag("DimensionGrant", new org.eigenbase.xom.XMLAttrVector()
4665                                .add("dimension", dimension)
4666                                .add("access", access)
4667                                );
4668                        _out.endTag("DimensionGrant");
4669                }
4670                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4671                {
4672                        DimensionGrant _cother = (DimensionGrant)_other;
4673                        boolean _diff = displayAttributeDiff("dimension", dimension, _cother.dimension, _out, _indent+1);
4674                        return _diff;
4675                }
4676        }
4677
4678        /**
4679         * Grants (or denies) this role access to a hierarchy.
4680         * access may be "all", "custom" or "none".
4681         * If access is "custom", you may also specify the
4682         * attributes topLevel, bottomLevel, and
4683         * the member grants.
4684         * If access is "custom", the child levels of this
4685         * hierarchy will not inherit access rights from this hierarchy,
4686         * should there be no explicit rules defined for the said child level.
4687         * See mondrian.olap.Role#grant(mondrian.olap.Hierarchy, int, mondrian.olap.Level).
4688         */
4689        public static class HierarchyGrant extends org.eigenbase.xom.ElementDef implements Grant
4690        {
4691                public HierarchyGrant()
4692                {
4693                }
4694
4695                public HierarchyGrant(org.eigenbase.xom.DOMWrapper _def)
4696                        throws org.eigenbase.xom.XOMException
4697                {
4698                        try {
4699                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4700                                org.eigenbase.xom.NodeDef[] _tempArray;
4701                                hierarchy = (String)_parser.getAttribute("hierarchy", "String", null, null, true);
4702                                topLevel = (String)_parser.getAttribute("topLevel", "String", null, null, false);
4703                                bottomLevel = (String)_parser.getAttribute("bottomLevel", "String", null, null, false);
4704                                rollupPolicy = (String)_parser.getAttribute("rollupPolicy", "String", null, null, false);
4705                                access = (String)_parser.getAttribute("access", "String", null, _access_values, true);
4706                                _tempArray = _parser.getArray(MemberGrant.class, 0, 0);
4707                                memberGrants = new MemberGrant[_tempArray.length];
4708                                for (int _i = 0; _i < memberGrants.length; _i++)
4709                                        memberGrants[_i] = (MemberGrant)_tempArray[_i];
4710                        } catch(org.eigenbase.xom.XOMException _ex) {
4711                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4712                        }
4713                }
4714
4715                /** Allowable values for {@link #access}. */
4716                public static final String[] _access_values = {"all", "custom", "none", "all_dimensions"};
4717                public String access;  // required attribute
4718                public String hierarchy;  // required attribute
4719                public String topLevel;  // optional attribute
4720                public String bottomLevel;  // optional attribute
4721                public String rollupPolicy;  // optional attribute
4722
4723                public MemberGrant[] memberGrants;  //optional array
4724
4725                public String getName()
4726                {
4727                        return "HierarchyGrant";
4728                }
4729
4730                public void display(java.io.PrintWriter _out, int _indent)
4731                {
4732                        _out.println(getName());
4733                        displayAttribute(_out, "hierarchy", hierarchy, _indent+1);
4734                        displayAttribute(_out, "topLevel", topLevel, _indent+1);
4735                        displayAttribute(_out, "bottomLevel", bottomLevel, _indent+1);
4736                        displayAttribute(_out, "rollupPolicy", rollupPolicy, _indent+1);
4737                        displayAttribute(_out, "access", access, _indent+1);
4738                        displayElementArray(_out, "memberGrants", memberGrants, _indent+1);
4739                }
4740                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4741                {
4742                        _out.beginTag("HierarchyGrant", new org.eigenbase.xom.XMLAttrVector()
4743                                .add("hierarchy", hierarchy)
4744                                .add("topLevel", topLevel)
4745                                .add("bottomLevel", bottomLevel)
4746                                .add("rollupPolicy", rollupPolicy)
4747                                .add("access", access)
4748                                );
4749                        displayXMLElementArray(_out, memberGrants);
4750                        _out.endTag("HierarchyGrant");
4751                }
4752                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4753                {
4754                        HierarchyGrant _cother = (HierarchyGrant)_other;
4755                        boolean _diff = displayAttributeDiff("hierarchy", hierarchy, _cother.hierarchy, _out, _indent+1);
4756                        _diff = _diff && displayAttributeDiff("topLevel", topLevel, _cother.topLevel, _out, _indent+1);
4757                        _diff = _diff && displayAttributeDiff("bottomLevel", bottomLevel, _cother.bottomLevel, _out, _indent+1);
4758                        _diff = _diff && displayAttributeDiff("rollupPolicy", rollupPolicy, _cother.rollupPolicy, _out, _indent+1);
4759                        _diff = _diff && displayElementArrayDiff("memberGrants", memberGrants, _cother.memberGrants, _out, _indent+1);
4760                        return _diff;
4761                }
4762        }
4763
4764        /**
4765         * Grants (or denies) this role access to a member.
4766         * The children of this member inherit that access.
4767         * You can implicitly see a member if you can see any of its children.
4768         * See mondrian.olap.Role#grant(mondrian.olap.Member,int).
4769         */
4770        public static class MemberGrant extends org.eigenbase.xom.ElementDef
4771        {
4772                public MemberGrant()
4773                {
4774                }
4775
4776                public MemberGrant(org.eigenbase.xom.DOMWrapper _def)
4777                        throws org.eigenbase.xom.XOMException
4778                {
4779                        try {
4780                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4781                                member = (String)_parser.getAttribute("member", "String", null, null, true);
4782                                access = (String)_parser.getAttribute("access", "String", null, _access_values, true);
4783                        } catch(org.eigenbase.xom.XOMException _ex) {
4784                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4785                        }
4786                }
4787
4788                public String member;  // required attribute
4789                /** Allowable values for {@link #access}. */
4790                public static final String[] _access_values = {"all", "none"};
4791                public String access;  // required attribute
4792
4793
4794                public String getName()
4795                {
4796                        return "MemberGrant";
4797                }
4798
4799                public void display(java.io.PrintWriter _out, int _indent)
4800                {
4801                        _out.println(getName());
4802                        displayAttribute(_out, "member", member, _indent+1);
4803                        displayAttribute(_out, "access", access, _indent+1);
4804                }
4805                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4806                {
4807                        _out.beginTag("MemberGrant", new org.eigenbase.xom.XMLAttrVector()
4808                                .add("member", member)
4809                                .add("access", access)
4810                                );
4811                        _out.endTag("MemberGrant");
4812                }
4813                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4814                {
4815                        MemberGrant _cother = (MemberGrant)_other;
4816                        boolean _diff = displayAttributeDiff("member", member, _cother.member, _out, _indent+1);
4817                        _diff = _diff && displayAttributeDiff("access", access, _cother.access, _out, _indent+1);
4818                        return _diff;
4819                }
4820        }
4821
4822        /**
4823         * Body of a Role definition which defines a Role to be the union
4824         * of several Roles. The RoleUsage elements must refer to Roles that
4825         * have been declared earlier in this schema file.
4826         */
4827        public static class Union extends org.eigenbase.xom.ElementDef
4828        {
4829                public Union()
4830                {
4831                }
4832
4833                public Union(org.eigenbase.xom.DOMWrapper _def)
4834                        throws org.eigenbase.xom.XOMException
4835                {
4836                        try {
4837                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4838                                org.eigenbase.xom.NodeDef[] _tempArray;
4839                                _tempArray = _parser.getArray(RoleUsage.class, 0, 0);
4840                                roleUsages = new RoleUsage[_tempArray.length];
4841                                for (int _i = 0; _i < roleUsages.length; _i++)
4842                                        roleUsages[_i] = (RoleUsage)_tempArray[_i];
4843                        } catch(org.eigenbase.xom.XOMException _ex) {
4844                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4845                        }
4846                }
4847
4848
4849                public RoleUsage[] roleUsages;  //optional array
4850
4851                public String getName()
4852                {
4853                        return "Union";
4854                }
4855
4856                public void display(java.io.PrintWriter _out, int _indent)
4857                {
4858                        _out.println(getName());
4859                        displayElementArray(_out, "roleUsages", roleUsages, _indent+1);
4860                }
4861                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4862                {
4863                        _out.beginTag("Union", new org.eigenbase.xom.XMLAttrVector()
4864                                );
4865                        displayXMLElementArray(_out, roleUsages);
4866                        _out.endTag("Union");
4867                }
4868                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4869                {
4870                        Union _cother = (Union)_other;
4871                        boolean _diff = displayElementArrayDiff("roleUsages", roleUsages, _cother.roleUsages, _out, _indent+1);
4872                        return _diff;
4873                }
4874        }
4875
4876        /**
4877         * Usage of a Role in a union Role.
4878         */
4879        public static class RoleUsage extends org.eigenbase.xom.ElementDef
4880        {
4881                public RoleUsage()
4882                {
4883                }
4884
4885                public RoleUsage(org.eigenbase.xom.DOMWrapper _def)
4886                        throws org.eigenbase.xom.XOMException
4887                {
4888                        try {
4889                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4890                                roleName = (String)_parser.getAttribute("roleName", "String", null, null, true);
4891                        } catch(org.eigenbase.xom.XOMException _ex) {
4892                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4893                        }
4894                }
4895
4896                public String roleName;  // required attribute
4897
4898
4899                public String getName()
4900                {
4901                        return "RoleUsage";
4902                }
4903
4904                public void display(java.io.PrintWriter _out, int _indent)
4905                {
4906                        _out.println(getName());
4907                        displayAttribute(_out, "roleName", roleName, _indent+1);
4908                }
4909                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4910                {
4911                        _out.beginTag("RoleUsage", new org.eigenbase.xom.XMLAttrVector()
4912                                .add("roleName", roleName)
4913                                );
4914                        _out.endTag("RoleUsage");
4915                }
4916                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4917                {
4918                        RoleUsage _cother = (RoleUsage)_other;
4919                        boolean _diff = displayAttributeDiff("roleName", roleName, _cother.roleName, _out, _indent+1);
4920                        return _diff;
4921                }
4922        }
4923
4924        /**
4925         * A UserDefinedFunction is a function which
4926         * extends the MDX language. It must be implemented by a Java
4927         * class which implements the interface
4928         * mondrian.spi.UserDefinedFunction.
4929         */
4930        public static class UserDefinedFunction extends org.eigenbase.xom.ElementDef
4931        {
4932                public UserDefinedFunction()
4933                {
4934                }
4935
4936                public UserDefinedFunction(org.eigenbase.xom.DOMWrapper _def)
4937                        throws org.eigenbase.xom.XOMException
4938                {
4939                        try {
4940                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
4941                                name = (String)_parser.getAttribute("name", "String", null, null, true);
4942                                className = (String)_parser.getAttribute("className", "String", null, null, false);
4943                                script = (Script)_parser.getElement(Script.class, false);
4944                        } catch(org.eigenbase.xom.XOMException _ex) {
4945                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
4946                        }
4947                }
4948
4949                public String name;  // required attribute
4950                public String className;  // optional attribute
4951
4952                /**
4953                 * Script to implement this user-defined function.
4954                 * Either the "Script" element or the "className" attribute
4955                 * must be specified.
4956                 */
4957                public Script script;  //optional element
4958
4959                public String getName()
4960                {
4961                        return "UserDefinedFunction";
4962                }
4963
4964                public void display(java.io.PrintWriter _out, int _indent)
4965                {
4966                        _out.println(getName());
4967                        displayAttribute(_out, "name", name, _indent+1);
4968                        displayAttribute(_out, "className", className, _indent+1);
4969                        displayElement(_out, "script", (org.eigenbase.xom.ElementDef) script, _indent+1);
4970                }
4971                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
4972                {
4973                        _out.beginTag("UserDefinedFunction", new org.eigenbase.xom.XMLAttrVector()
4974                                .add("name", name)
4975                                .add("className", className)
4976                                );
4977                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) script);
4978                        _out.endTag("UserDefinedFunction");
4979                }
4980                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
4981                {
4982                        UserDefinedFunction _cother = (UserDefinedFunction)_other;
4983                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
4984                        _diff = _diff && displayAttributeDiff("className", className, _cother.className, _out, _indent+1);
4985                        _diff = _diff && displayElementDiff("script", script, _cother.script, _out, _indent+1);
4986                        return _diff;
4987                }
4988        }
4989
4990        /**
4991         * A Parameter defines a schema parameter.
4992         * It can be referenced from an MDX statement using the ParamRef
4993         * function and, if not final, its value can be overridden.
4994         */
4995        public static class Parameter extends org.eigenbase.xom.ElementDef
4996        {
4997                public Parameter()
4998                {
4999                }
5000
5001                public Parameter(org.eigenbase.xom.DOMWrapper _def)
5002                        throws org.eigenbase.xom.XOMException
5003                {
5004                        try {
5005                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5006                                name = (String)_parser.getAttribute("name", "String", null, null, true);
5007                                description = (String)_parser.getAttribute("description", "String", null, null, false);
5008                                type = (String)_parser.getAttribute("type", "String", "String", _type_values, true);
5009                                modifiable = (Boolean)_parser.getAttribute("modifiable", "Boolean", "true", null, false);
5010                                defaultValue = (String)_parser.getAttribute("defaultValue", "String", null, null, false);
5011                        } catch(org.eigenbase.xom.XOMException _ex) {
5012                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5013                        }
5014                }
5015
5016                public String name;  // required attribute
5017                public String description;  // optional attribute
5018                /** Allowable values for {@link #type}. */
5019                public static final String[] _type_values = {"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp", "Member"};
5020                public String type;  // attribute default: String
5021                public Boolean modifiable;  // attribute default: true
5022                public String defaultValue;  // optional attribute
5023
5024
5025                public String getName()
5026                {
5027                        return "Parameter";
5028                }
5029
5030                public void display(java.io.PrintWriter _out, int _indent)
5031                {
5032                        _out.println(getName());
5033                        displayAttribute(_out, "name", name, _indent+1);
5034                        displayAttribute(_out, "description", description, _indent+1);
5035                        displayAttribute(_out, "type", type, _indent+1);
5036                        displayAttribute(_out, "modifiable", modifiable, _indent+1);
5037                        displayAttribute(_out, "defaultValue", defaultValue, _indent+1);
5038                }
5039                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5040                {
5041                        _out.beginTag("Parameter", new org.eigenbase.xom.XMLAttrVector()
5042                                .add("name", name)
5043                                .add("description", description)
5044                                .add("type", type)
5045                                .add("modifiable", modifiable)
5046                                .add("defaultValue", defaultValue)
5047                                );
5048                        _out.endTag("Parameter");
5049                }
5050                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5051                {
5052                        Parameter _cother = (Parameter)_other;
5053                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
5054                        _diff = _diff && displayAttributeDiff("description", description, _cother.description, _out, _indent+1);
5055                        _diff = _diff && displayAttributeDiff("type", type, _cother.type, _out, _indent+1);
5056                        _diff = _diff && displayAttributeDiff("modifiable", modifiable, _cother.modifiable, _out, _indent+1);
5057                        _diff = _diff && displayAttributeDiff("defaultValue", defaultValue, _cother.defaultValue, _out, _indent+1);
5058                        return _diff;
5059                }
5060        }
5061
5062        /**
5063         * Holder for an array of Annotation elements
5064         */
5065        public static class Annotations extends org.eigenbase.xom.ElementDef
5066        {
5067                public Annotations()
5068                {
5069                }
5070
5071                public Annotations(org.eigenbase.xom.DOMWrapper _def)
5072                        throws org.eigenbase.xom.XOMException
5073                {
5074                        try {
5075                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5076                                org.eigenbase.xom.NodeDef[] _tempArray;
5077                                _tempArray = _parser.getArray(Annotation.class, 0, 0);
5078                                array = new Annotation[_tempArray.length];
5079                                for (int _i = 0; _i < array.length; _i++)
5080                                        array[_i] = (Annotation)_tempArray[_i];
5081                        } catch(org.eigenbase.xom.XOMException _ex) {
5082                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5083                        }
5084                }
5085
5086
5087                public Annotation[] array;  //optional array
5088
5089                public String getName()
5090                {
5091                        return "Annotations";
5092                }
5093
5094                public void display(java.io.PrintWriter _out, int _indent)
5095                {
5096                        _out.println(getName());
5097                        displayElementArray(_out, "array", array, _indent+1);
5098                }
5099                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5100                {
5101                        _out.beginTag("Annotations", new org.eigenbase.xom.XMLAttrVector()
5102                                );
5103                        displayXMLElementArray(_out, array);
5104                        _out.endTag("Annotations");
5105                }
5106                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5107                {
5108                        Annotations _cother = (Annotations)_other;
5109                        boolean _diff = displayElementArrayDiff("array", array, _cother.array, _out, _indent+1);
5110                        return _diff;
5111                }
5112        }
5113
5114        /**
5115         * User-defined property value.
5116         */
5117        public static class Annotation extends org.eigenbase.xom.ElementDef
5118        {
5119                public Annotation()
5120                {
5121                }
5122
5123                public Annotation(org.eigenbase.xom.DOMWrapper _def)
5124                        throws org.eigenbase.xom.XOMException
5125                {
5126                        try {
5127                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5128                                name = (String)_parser.getAttribute("name", "String", null, null, true);
5129                                cdata = _parser.getText();
5130                        } catch(org.eigenbase.xom.XOMException _ex) {
5131                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5132                        }
5133                }
5134
5135                public String name;  // required attribute
5136
5137                public String cdata;  // All text goes here
5138                public String getName()
5139                {
5140                        return "Annotation";
5141                }
5142
5143                public void display(java.io.PrintWriter _out, int _indent)
5144                {
5145                        _out.println(getName());
5146                        displayAttribute(_out, "name", name, _indent+1);
5147                        displayString(_out, "cdata", cdata, _indent+1);
5148                }
5149                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5150                {
5151                        _out.beginTag("Annotation", new org.eigenbase.xom.XMLAttrVector()
5152                                .add("name", name)
5153                                );
5154                        _out.cdata(cdata);
5155                        _out.endTag("Annotation");
5156                }
5157                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5158                {
5159                        Annotation _cother = (Annotation)_other;
5160                        boolean _diff = displayAttributeDiff("name", name, _cother.name, _out, _indent+1);
5161                        _diff = _diff && displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
5162                        return _diff;
5163                }
5164        }
5165
5166        /**
5167         * Script fragment to implement an SPI such as user-defined function,
5168         * member formatter, cell formatter.
5169         */
5170        public static class Script extends org.eigenbase.xom.ElementDef
5171        {
5172                public Script()
5173                {
5174                }
5175
5176                public Script(org.eigenbase.xom.DOMWrapper _def)
5177                        throws org.eigenbase.xom.XOMException
5178                {
5179                        try {
5180                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5181                                language = (String)_parser.getAttribute("language", "String", "JavaScript", null, false);
5182                                cdata = _parser.getText();
5183                        } catch(org.eigenbase.xom.XOMException _ex) {
5184                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5185                        }
5186                }
5187
5188                public String language;  // attribute default: JavaScript
5189
5190                public String cdata;  // All text goes here
5191                public String getName()
5192                {
5193                        return "Script";
5194                }
5195
5196                public void display(java.io.PrintWriter _out, int _indent)
5197                {
5198                        _out.println(getName());
5199                        displayAttribute(_out, "language", language, _indent+1);
5200                        displayString(_out, "cdata", cdata, _indent+1);
5201                }
5202                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5203                {
5204                        _out.beginTag("Script", new org.eigenbase.xom.XMLAttrVector()
5205                                .add("language", language)
5206                                );
5207                        _out.cdata(cdata);
5208                        _out.endTag("Script");
5209                }
5210                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5211                {
5212                        Script _cother = (Script)_other;
5213                        boolean _diff = displayAttributeDiff("language", language, _cother.language, _out, _indent+1);
5214                        _diff = _diff && displayStringDiff("cdata", cdata, _cother.cdata, _out, _indent+1);
5215                        return _diff;
5216                }
5217        }
5218
5219        /**
5220         * Plugin that formats the values of cells.
5221         * It must be implemented by a Java
5222         * class which implements the interface
5223         * mondrian.spi.CellFormatter,
5224         * or by a script.
5225         */
5226        public static class CellFormatter extends org.eigenbase.xom.ElementDef
5227        {
5228                public CellFormatter()
5229                {
5230                }
5231
5232                public CellFormatter(org.eigenbase.xom.DOMWrapper _def)
5233                        throws org.eigenbase.xom.XOMException
5234                {
5235                        try {
5236                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5237                                className = (String)_parser.getAttribute("className", "String", null, null, false);
5238                                script = (Script)_parser.getElement(Script.class, false);
5239                        } catch(org.eigenbase.xom.XOMException _ex) {
5240                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5241                        }
5242                }
5243
5244                public String className;  // optional attribute
5245
5246                /**
5247                 * Script to implement this cell formatter.
5248                 * Either the "Script" element or the "className" attribute
5249                 * must be specified.
5250                 */
5251                public Script script;  //optional element
5252
5253                public String getName()
5254                {
5255                        return "CellFormatter";
5256                }
5257
5258                public void display(java.io.PrintWriter _out, int _indent)
5259                {
5260                        _out.println(getName());
5261                        displayAttribute(_out, "className", className, _indent+1);
5262                        displayElement(_out, "script", (org.eigenbase.xom.ElementDef) script, _indent+1);
5263                }
5264                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5265                {
5266                        _out.beginTag("CellFormatter", new org.eigenbase.xom.XMLAttrVector()
5267                                .add("className", className)
5268                                );
5269                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) script);
5270                        _out.endTag("CellFormatter");
5271                }
5272                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5273                {
5274                        CellFormatter _cother = (CellFormatter)_other;
5275                        boolean _diff = displayAttributeDiff("className", className, _cother.className, _out, _indent+1);
5276                        _diff = _diff && displayElementDiff("script", script, _cother.script, _out, _indent+1);
5277                        return _diff;
5278                }
5279        }
5280
5281        /**
5282         * Plugin that formats members.
5283         * It must be implemented by a Java
5284         * class which implements the interface
5285         * mondrian.spi.MemberFormatter,
5286         * or by a script.
5287         */
5288        public static class MemberFormatter extends org.eigenbase.xom.ElementDef
5289        {
5290                public MemberFormatter()
5291                {
5292                }
5293
5294                public MemberFormatter(org.eigenbase.xom.DOMWrapper _def)
5295                        throws org.eigenbase.xom.XOMException
5296                {
5297                        try {
5298                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5299                                className = (String)_parser.getAttribute("className", "String", null, null, false);
5300                                script = (Script)_parser.getElement(Script.class, false);
5301                        } catch(org.eigenbase.xom.XOMException _ex) {
5302                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5303                        }
5304                }
5305
5306                public String className;  // optional attribute
5307
5308                /**
5309                 * Script to implement this member formatter.
5310                 * Either the "Script" element or the "className" attribute
5311                 * must be specified.
5312                 */
5313                public Script script;  //optional element
5314
5315                public String getName()
5316                {
5317                        return "MemberFormatter";
5318                }
5319
5320                public void display(java.io.PrintWriter _out, int _indent)
5321                {
5322                        _out.println(getName());
5323                        displayAttribute(_out, "className", className, _indent+1);
5324                        displayElement(_out, "script", (org.eigenbase.xom.ElementDef) script, _indent+1);
5325                }
5326                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5327                {
5328                        _out.beginTag("MemberFormatter", new org.eigenbase.xom.XMLAttrVector()
5329                                .add("className", className)
5330                                );
5331                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) script);
5332                        _out.endTag("MemberFormatter");
5333                }
5334                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5335                {
5336                        MemberFormatter _cother = (MemberFormatter)_other;
5337                        boolean _diff = displayAttributeDiff("className", className, _cother.className, _out, _indent+1);
5338                        _diff = _diff && displayElementDiff("script", script, _cother.script, _out, _indent+1);
5339                        return _diff;
5340                }
5341        }
5342
5343        /**
5344         * Plugin that formats properties.
5345         * It must be implemented by a Java
5346         * class which implements the interface
5347         * mondrian.spi.PropertyFormatter,
5348         * or by a script.
5349         */
5350        public static class PropertyFormatter extends org.eigenbase.xom.ElementDef
5351        {
5352                public PropertyFormatter()
5353                {
5354                }
5355
5356                public PropertyFormatter(org.eigenbase.xom.DOMWrapper _def)
5357                        throws org.eigenbase.xom.XOMException
5358                {
5359                        try {
5360                                org.eigenbase.xom.DOMElementParser _parser = new org.eigenbase.xom.DOMElementParser(_def, "", MondrianGuiDef.class);
5361                                className = (String)_parser.getAttribute("className", "String", null, null, false);
5362                                script = (Script)_parser.getElement(Script.class, false);
5363                        } catch(org.eigenbase.xom.XOMException _ex) {
5364                                throw new org.eigenbase.xom.XOMException("In " + getName() + ": " + _ex.getMessage());
5365                        }
5366                }
5367
5368                public String className;  // optional attribute
5369
5370                /**
5371                 * Script to implement this property formatter.
5372                 * Either the "Script" element or the "className" attribute
5373                 * must be specified.
5374                 */
5375                public Script script;  //optional element
5376
5377                public String getName()
5378                {
5379                        return "PropertyFormatter";
5380                }
5381
5382                public void display(java.io.PrintWriter _out, int _indent)
5383                {
5384                        _out.println(getName());
5385                        displayAttribute(_out, "className", className, _indent+1);
5386                        displayElement(_out, "script", (org.eigenbase.xom.ElementDef) script, _indent+1);
5387                }
5388                public void displayXML(org.eigenbase.xom.XMLOutput _out, int _indent)
5389                {
5390                        _out.beginTag("PropertyFormatter", new org.eigenbase.xom.XMLAttrVector()
5391                                .add("className", className)
5392                                );
5393                        displayXMLElement(_out, (org.eigenbase.xom.ElementDef) script);
5394                        _out.endTag("PropertyFormatter");
5395                }
5396                public boolean displayDiff(org.eigenbase.xom.ElementDef _other, java.io.PrintWriter _out, int _indent)
5397                {
5398                        PropertyFormatter _cother = (PropertyFormatter)_other;
5399                        boolean _diff = displayAttributeDiff("className", className, _cother.className, _out, _indent+1);
5400                        _diff = _diff && displayElementDiff("script", script, _cother.script, _out, _indent+1);
5401                        return _diff;
5402                }
5403        }
5404
5405
5406}