diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/PropertyDefinition.java b/api/src/main/java/org/eclipse/daanse/xmla/api/PropertyDefinition.java index 7a2c218..f8bd0f2 100644 --- a/api/src/main/java/org/eclipse/daanse/xmla/api/PropertyDefinition.java +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/PropertyDefinition.java @@ -102,7 +102,7 @@ public enum PropertyDefinition { ProviderName(RowsetDefinitionType.STRING, null, XmlaConstants.Access.Read, "Mondrian XML for Analysis Provider", XmlaConstants.Method.DISCOVER, "The XML for Analysis Provider name."), - ProviderVersion(RowsetDefinitionType.STRING, null, XmlaConstants.Access.Read, "10.50.1600.1", + ProviderVersion(RowsetDefinitionType.STRING, null, XmlaConstants.Access.Read, "11.0.7001.0", // MondrianServer.forId(null).getVersion().getVersionString(), XmlaConstants.Method.DISCOVER, "The version of the Mondrian XMLA Provider"), @@ -186,7 +186,15 @@ public enum PropertyDefinition { // Microsoft-specific XMLA definition. DbpropMsmdSubqueries(RowsetDefinitionType.INTEGER, null, XmlaConstants.Access.ReadWrite, "1", XmlaConstants.Method.DISCOVER_AND_EXECUTE, - "An enumeration value that determines the behavior of subqueries."); + "An enumeration value that determines the behavior of subqueries."), + + DbpropMsmdActivityID(RowsetDefinitionType.STRING, null, XmlaConstants.Access.ReadWrite, null, + XmlaConstants.Method.DISCOVER_AND_EXECUTE, + "DbpropMsmdActivityID"), + + DBMSVersion(RowsetDefinitionType.STRING, null, XmlaConstants.Access.Read, "11.0.7001.0", + XmlaConstants.Method.DISCOVER_AND_EXECUTE, + "DBMSVersion"); final RowsetDefinitionType type; final Set enumSet; diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/common/enums/ItemTypeEnum.java b/api/src/main/java/org/eclipse/daanse/xmla/api/common/enums/ItemTypeEnum.java index 32ac927..674beed 100644 --- a/api/src/main/java/org/eclipse/daanse/xmla/api/common/enums/ItemTypeEnum.java +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/common/enums/ItemTypeEnum.java @@ -23,7 +23,15 @@ public enum ItemTypeEnum { DOUBLE("xsd:double"), - STRING("xsd:string"); + STRING("xsd:string"), + + DATETIME("xsd:dateTime"), + + UNSIGNEDSHOT("xsd:unsignedShort"), + + UNSIGNEDINT("xsd:unsignedInt"), + + BOOLEAN("xsd:boolean"); private final String value; diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/common/properties/OperationNames.java b/api/src/main/java/org/eclipse/daanse/xmla/api/common/properties/OperationNames.java index ddfa7ee..043660c 100644 --- a/api/src/main/java/org/eclipse/daanse/xmla/api/common/properties/OperationNames.java +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/common/properties/OperationNames.java @@ -27,6 +27,7 @@ public class OperationNames { public static final String DBSCHEMA_CATALOGS = "DBSCHEMA_CATALOGS"; public static final String DISCOVER_DATASOURCES = "DISCOVER_DATASOURCES"; public static final String DISCOVER_XML_METADATA = "DISCOVER_XML_METADATA"; + public static final String DISCOVER_CSDL_METADATA = "DISCOVER_CSDL_METADATA"; public static final String DBSCHEMA_COLUMNS = "DBSCHEMA_COLUMNS"; public static final String DBSCHEMA_PROVIDER_TYPES = "DBSCHEMA_PROVIDER_TYPES"; public static final String DBSCHEMA_SCHEMATA = "DBSCHEMA_SCHEMATA"; diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequest.java b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequest.java new file mode 100644 index 0000000..8736a29 --- /dev/null +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequest.java @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ +package org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata; + +import org.eclipse.daanse.xmla.api.annotation.Operation; +import org.eclipse.daanse.xmla.api.discover.Properties; + +import static org.eclipse.daanse.xmla.api.common.properties.OperationNames.DISCOVER_CSDL_METADATA; + +@Operation(name = DISCOVER_CSDL_METADATA, guid = "87B86062-21C3-460F-B4F8-5BE98394F13B") +public interface DiscoverCsdlMetaDataRequest { + + Properties properties(); + + DiscoverCsdlMetaDataRestrictions restrictions(); + +} diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRow.java b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRow.java new file mode 100644 index 0000000..dc05e00 --- /dev/null +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRow.java @@ -0,0 +1,26 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ +package org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata; + +/** + * This schema rowset returns a rowset with one row and one column. The single cell in the rowset + * contains an XML document that contains the requested XML metadata. + */ +public interface DiscoverCsdlMetaDataResponseRow { + + /** + * @return An XML document that describes the object requested by the restriction. + */ + String metaData(); +} diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictions.java b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictions.java new file mode 100644 index 0000000..bf71c60 --- /dev/null +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictions.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * SmartCity Jena - initial + * Stefan Bischof (bipolis.org) - initial + */ +package org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata; + +import static org.eclipse.daanse.xmla.api.common.properties.XsdType.XSD_STRING; + +import java.util.Optional; + +import org.eclipse.daanse.xmla.api.annotation.Restriction; + +public interface DiscoverCsdlMetaDataRestrictions { + + @Restriction(name = "CATALOG_NAME", type = XSD_STRING, order = 0) + Optional catalogName(); + + @Restriction(name = "PERSPECTIVE_NAME", type = XSD_STRING, order = 1) + Optional perspectiveName(); + + @Restriction(name = "VERSION", type = XSD_STRING, order = 2) + Optional version(); +} diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/package-info.java b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/package-info.java new file mode 100644 index 0000000..4887098 --- /dev/null +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/discover/discover/csdlmetadata/package-info.java @@ -0,0 +1,17 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ + +@org.osgi.annotation.bundle.Export +@org.osgi.annotation.versioning.Version("0.0.1") +package org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata; diff --git a/api/src/main/java/org/eclipse/daanse/xmla/api/mddataset/RowSetRowItem.java b/api/src/main/java/org/eclipse/daanse/xmla/api/mddataset/RowSetRowItem.java index 6b36f02..664ed4f 100644 --- a/api/src/main/java/org/eclipse/daanse/xmla/api/mddataset/RowSetRowItem.java +++ b/api/src/main/java/org/eclipse/daanse/xmla/api/mddataset/RowSetRowItem.java @@ -21,6 +21,8 @@ public interface RowSetRowItem { String tagName(); + String fieldName(); + String value(); Optional type(); diff --git a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequestR.java b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequestR.java new file mode 100644 index 0000000..5c4eb52 --- /dev/null +++ b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRequestR.java @@ -0,0 +1,22 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ +package org.eclipse.daanse.xmla.model.record.discover.discover.csdlmetadata; + +import org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata.DiscoverCsdlMetaDataRequest; +import org.eclipse.daanse.xmla.model.record.discover.PropertiesR; + +public record DiscoverCsdlMetaDataRequestR(PropertiesR properties, DiscoverCsdlMetaDataRestrictionsR restrictions) + implements DiscoverCsdlMetaDataRequest { + +} diff --git a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRowR.java b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRowR.java new file mode 100644 index 0000000..f744e00 --- /dev/null +++ b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataResponseRowR.java @@ -0,0 +1,19 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ +package org.eclipse.daanse.xmla.model.record.discover.discover.csdlmetadata; + +import org.eclipse.daanse.xmla.api.discover.discover.xmlmetadata.DiscoverXmlMetaDataResponseRow; + +public record DiscoverCsdlMetaDataResponseRowR(String metaData) implements DiscoverXmlMetaDataResponseRow { +} diff --git a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictionsR.java b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictionsR.java new file mode 100644 index 0000000..34bb61d --- /dev/null +++ b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/DiscoverCsdlMetaDataRestrictionsR.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * SmartCity Jena - initial + * Stefan Bischof (bipolis.org) - initial + */ +package org.eclipse.daanse.xmla.model.record.discover.discover.csdlmetadata; + +import java.util.Optional; + +import org.eclipse.daanse.xmla.api.discover.discover.csdlmetadata.DiscoverCsdlMetaDataRestrictions; + +public record DiscoverCsdlMetaDataRestrictionsR(Optional catalogName, Optional perspectiveName, Optional version ) implements DiscoverCsdlMetaDataRestrictions { + +} diff --git a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/package-info.java b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/package-info.java new file mode 100644 index 0000000..cd7098a --- /dev/null +++ b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/discover/discover/csdlmetadata/package-info.java @@ -0,0 +1,17 @@ +/* +* Copyright (c) 2023 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ + +@org.osgi.annotation.bundle.Export +@org.osgi.annotation.versioning.Version("0.0.1") +package org.eclipse.daanse.xmla.model.record.discover.discover.csdlmetadata; diff --git a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/mddataset/RowSetRowItemR.java b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/mddataset/RowSetRowItemR.java index 91f9bdf..16691b6 100644 --- a/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/mddataset/RowSetRowItemR.java +++ b/model.record/src/main/java/org/eclipse/daanse/xmla/model/record/mddataset/RowSetRowItemR.java @@ -18,6 +18,9 @@ import java.util.Optional; -public record RowSetRowItemR(String tagName, String value, Optional type) implements RowSetRowItem { +public record RowSetRowItemR(String tagName, String fieldName, String value, Optional type) implements RowSetRowItem { + public RowSetRowItemR(String tagName, String value, Optional type) { + this(tagName, tagName, value, type); + } } diff --git a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Constants.java b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Constants.java index d569ffe..a696c55 100644 --- a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Constants.java +++ b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Constants.java @@ -33,6 +33,7 @@ static class MSXMLA { public static final QName QN_EXECUTE = new QName(NS_URN, "Execute", PREFIX); public static final QName QN_EXECUTE_RESPONSE = new QName(NS_URN, "ExecuteResponse", ""); public static final QName QN_PROPERTIES = new QName(NS_URN, "Properties", PREFIX); + public static final QName QN_PARAMETERS = new QName(NS_URN, "Parameters", PREFIX); public static final QName QN_PROPERTY_LIST = new QName(NS_URN, "PropertyList", PREFIX); public static final QName QN_RESTRICTIONS = new QName(NS_URN, "Restrictions", PREFIX); public static final QName QN_RESTRICTION_LIST = new QName(NS_URN, "RestrictionList", PREFIX); @@ -179,8 +180,8 @@ static class ROW_PROPERTY { public static final String AUTHENTICATION_MODE = "AuthenticationMode"; public static final QName QN_AUTHENTICATION_MODE = new QName(ROWSET.NS_URN, AUTHENTICATION_MODE, ROWSET.PREFIX); - public static final String META_DATA = "MetaData"; - public static final QName QN_META_DATA = new QName(ROWSET.NS_URN, META_DATA, ROWSET.PREFIX); + public static final String META_DATA = "METADATA"; + public static final QName QN_META_DATA = new QName(ROWSET.NS_URN, META_DATA, "xars"); public static final String SCHEMA_OWNER = "SCHEMA_OWNER"; public static final QName QN_SCHEMA_OWNER = new QName(ROWSET.NS_URN, SCHEMA_OWNER, ROWSET.PREFIX); diff --git a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Convert.java b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Convert.java index c17d74c..fb4caae 100644 --- a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Convert.java +++ b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/Convert.java @@ -56,6 +56,7 @@ import org.eclipse.daanse.xmla.api.engine300_300.RelationshipEndTranslation; import org.eclipse.daanse.xmla.api.engine300_300.Relationships; import org.eclipse.daanse.xmla.api.engine300_300.XEvent; +import org.eclipse.daanse.xmla.api.execute.ExecuteParameter; import org.eclipse.daanse.xmla.api.xmla.*; import org.eclipse.daanse.xmla.model.record.discover.PropertiesR; import org.eclipse.daanse.xmla.model.record.discover.dbschema.catalogs.DbSchemaCatalogsRestrictionsR; @@ -97,6 +98,7 @@ import org.eclipse.daanse.xmla.model.record.engine300_300.RelationshipR; import org.eclipse.daanse.xmla.model.record.engine300_300.RelationshipsR; import org.eclipse.daanse.xmla.model.record.engine300_300.XEventR; +import org.eclipse.daanse.xmla.model.record.execute.ExecuteParameterR; import org.eclipse.daanse.xmla.model.record.xmla.*; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NodeList; @@ -134,6 +136,38 @@ public static PropertiesR propertiestoProperties(SOAPElement propertiesElement) } + public static List parametersToParameters(SOAPElement parametersElement) { + + List parameters = new ArrayList(); + + Iterator nodeIteratorParameterList = parametersElement.getChildElements(); + while (nodeIteratorParameterList.hasNext()) { + Node n = nodeIteratorParameterList.next(); + + if (n instanceof SOAPElement parameterElement) { + Iterator parameterList = parameterElement.getChildElements(); + String name = null; + String value = null; + while (parameterList.hasNext()) { + Node n1 = parameterList.next(); + if (n1 instanceof SOAPElement pElement) { + if ("name".equalsIgnoreCase(pElement.getLocalName())) { + name = pElement.getTextContent(); + } + if ("value".equalsIgnoreCase(pElement.getLocalName())) { + value = pElement.getTextContent(); + } + } + } + if (name != null && value != null) { + parameters.add(new ExecuteParameterR(name, value)); + } + } + } + return parameters; + + } + private static PropertiesR propertyListToProperties(SOAPElement propertyList) { PropertiesR properties = new PropertiesR(); diff --git a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/SoapUtil.java b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/SoapUtil.java index 5038f51..6a31a71 100644 --- a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/SoapUtil.java +++ b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/SoapUtil.java @@ -31,260 +31,18 @@ import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.MDDATASET.QN_TUPLE; import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.MDDATASET.QN_TUPLES; import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.MDDATASET.QN_UNION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.DESCRIPTION_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ALL_MEMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ANNOTATIONS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_APPLICATION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_AUTHENTICATION_MODE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_AUTO_UNIQUE_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BASE_CUBE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BEST_MATCH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BOOKMARKS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BOOKMARK_DATA_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BOOKMARK_INFORMATION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BOOKMARK_MAXIMUM_LENGTH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_BOOKMARK_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CASE_SENSITIVE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CATALOG_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHARACTER_MAXIMUM_LENGTH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHARACTER_OCTET_LENGTH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHARACTER_SET_CATALOG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHARACTER_SET_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHARACTER_SET_SCHEMA; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CHILDREN_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CLIENTCACHEREFRESHPOLICY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLLATION_CATALOG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLLATION_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLLATION_SCHEMA; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_DEFAULT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_FLAG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_HAS_DEFAULT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_OLAP_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_PROPID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COLUMN_SIZE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_COMPATIBILITY_LEVEL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CREATED_ON; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CREATE_PARAMS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUBE_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUBE_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUBE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUBE_SOURCE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUBE_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CURRENTLY_USED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_CUSTOM_ROLLUP_SETTINGS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATABASE_ID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATA_SOURCE_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATA_SOURCE_INFO; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATA_SOURCE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATA_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATA_UPDATED_BY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATETIME_PRECISION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATE_CREATED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATE_MODIFIED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DATE_QUERIED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DEFAULT_FORMAT_STRING; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DEFAULT_HIERARCHY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DEFAULT_MEMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DESCRIPTION_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSIONS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_GRANULARITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_IS_FACT_DIMENSION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_IS_SHARED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_IS_VISIBLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_MASTER_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_MASTER_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_ORDINAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_PATH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIMENSION_UNIQUE_SETTINGS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DIRECTQUERY_PUSHABLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DLL_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DOMAIN_CATALOG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DOMAIN_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_DOMAIN_SCHEMA; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ELEMENT_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ELEMENT_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ELEMENT_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ENUM_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ENUM_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ENUM_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_EXPRESSION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_FIXED_PREC_SCALE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_FUNCTION_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_GROUPING_BEHAVIOR; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HELP_CONTEXT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HELP_FILE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_DISPLAY_FOLDER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_IS_VISIBLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_ORDINAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_ORIGIN; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_HIERARCHY_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_INSTANCE_SELECTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_INTERFACE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_INVOCATION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_DATAMEMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_DRILLTHROUGH_ENABLED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_FIXEDLENGTH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_LINKABLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_LONG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_NULLABLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_PLACEHOLDERMEMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_READWRITE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_REQUIRED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_SQL_ENABLED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_VIRTUAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_IS_WRITE_ENABLED; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KEYWORD; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_CURRENT_TIME_MEMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_DISPLAY_FOLDER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_GOAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_PARENT_KPI_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_STATUS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_STATUS_GRAPHIC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_TREND; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_TREND_GRAPHIC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_KPI_WEIGHT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LAST_SCHEMA_UPDATE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVELS_LIST; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_IS_VISIBLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_NUMBER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_ORIGIN; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LEVEL_UNIQUE_SETTINGS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LIBRARY_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_INVALID_CHARS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_INVALID_STARTING_CHARS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_MAX_LENGTH; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_NAME_ENUM_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_PREFIX; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_SUFFIX; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LITERAL_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_LOCAL_TYPE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MAXIMUM_SCALE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASUREGROUP_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASUREGROUP_CARDINALITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASUREGROUP_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_AGGREGATOR; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_DISPLAY_FOLDER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_GROUP_DIMENSION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_IS_VISIBLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_NAME_SQL_COLUMN_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_UNITS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_UNQUALIFIED_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEASURE_VISIBILITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBERS_LOOKUP; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_DISP_INFO; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_KEY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_ORDINAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_REF; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MEMBER_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_META_DATA; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_MINIMUM_SCALE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NAME_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NORM_TUPLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NORM_TUPLES; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NUMERIC_PRECISION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_NUMERIC_SCALE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_OBJECT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_OPTIONAL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ORDINAL_POSITION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ORIGIN; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PARAMETERINFO; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PARAMETER_LIST; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PARENT_COUNT; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PARENT_LEVEL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PARENT_UNIQUE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_POPULARITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PREFERRED_QUERY_PATTERNS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_ACCESS_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_CONTENT_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_DESCRIPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_NAME_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_ORIGIN; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_TYPE_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROPERTY_VISIBILITY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROVIDER_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_PROVIDER_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_REPEATABLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_REPEATGROUP; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_RESTRICTIONS; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_RESTRICTIONS_MASK; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_RETURN_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_ROLES; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCHEMA_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCHEMA_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCHEMA_NAME_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCHEMA_OWNER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCHEMA_UPDATED_BY; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SCOPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SEARCHABLE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SET_CAPTION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SET_DISPLAY_FOLDER; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SET_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_SQL_COLUMN_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_STRUCTURE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_STRUCTURE_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_CATALOG; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_PROP_ID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_SCHEMA; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TABLE_VERSION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TYPE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TYPE_GUID; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TYPE_LC; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TYPE_LIB; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_TYPE_NAME; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_UNSIGNED_ATTRIBUTE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_URL; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_VALUE; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_VERSION; -import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.QN_WEIGHTEDPOPULARITY; +import static org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.ROWSET.ROW_PROPERTY.*; +import java.io.IOException; +import java.io.StringReader; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import org.eclipse.daanse.xmla.api.common.enums.ItemTypeEnum; import org.eclipse.daanse.xmla.api.discover.dbschema.catalogs.DbSchemaCatalogsResponseRow; @@ -361,17 +119,23 @@ import org.eclipse.daanse.xmla.api.msxmla.NormTuplesType; import org.eclipse.daanse.xmla.api.xmla.Restriction; import org.eclipse.daanse.xmla.api.xmla_empty.Emptyresult; -import org.eclipse.daanse.xmla.server.adapter.soapmessage.Constants.XSD; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; import jakarta.xml.soap.SOAPBody; import jakarta.xml.soap.SOAPElement; import jakarta.xml.soap.SOAPException; +import jakarta.xml.soap.SOAPFactory; public class SoapUtil { - private static final String UUID_VALUE = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"; + //private static final String UUID_VALUE = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"; + private static final String UUID_VALUE = "[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}"; private static final Logger LOGGER = LoggerFactory.getLogger(SoapUtil.class); private SoapUtil() { @@ -817,7 +581,7 @@ private static void addDiscoverDataSourcesResponseRow(SOAPElement root, Discover private static void addDiscoverXmlMetaDataResponseRow(SOAPElement root, DiscoverXmlMetaDataResponseRow r) throws SOAPException { SOAPElement row = root.addChildElement(Constants.ROWSET.QN_ROW); - addChildElement(row, QN_META_DATA, r.metaData()); + addChildElementTextNode(row, QN_META_DATA, r.metaData()); } private static void addDbSchemaColumnsResponseRow(SOAPElement root, DbSchemaColumnsResponseRow r) @@ -2530,10 +2294,15 @@ private static SOAPElement addDiscoverXmlMetaDataRoot(SOAPBody body) throws SOAP SOAPElement seRoot = prepareRootElement(body); SOAPElement schema = fillRoot(seRoot); + SOAPElement el1complexType = addChildElement(schema, Constants.XSD.QN_COMPLEX_TYPE); + el1complexType.setAttribute("name", "xmlDocument"); + SOAPElement sequence = addChildElement(el1complexType, Constants.XSD.QN_SEQUENCE); + addChildElement(sequence, Constants.XSD.QN_ANY); + SOAPElement s = prepareSequenceElement(schema); - addElement(s, "METADATA", "xsd:string", null); - addElement(s, "ObjectType", "xsd:string", "0"); - addElement(s, "DatabaseID", "xsd:string", "0"); + addElement(s, "METADATA", "xmlDocument", null); + //addElement(s, "ObjectType", "xsd:string", "0"); + //addElement(s, "DatabaseID", "xsd:string", "0"); return seRoot; } @@ -2693,6 +2462,11 @@ private static void addRowsetSchema(SOAPElement root, RowSet rowSet) { SOAPElement pattern = addChildElement(restriction, Constants.XSD.QN_PATTERN); pattern.setAttribute("value", UUID_VALUE); + SOAPElement complexType = addChildElement(schema, Constants.XSD.QN_COMPLEX_TYPE); + complexType.setAttribute("name", "xmlDocument"); + SOAPElement sequence = addChildElement(complexType, Constants.XSD.QN_SEQUENCE); + addChildElement(sequence, Constants.XSD.QN_ANY); + SOAPElement ct = addChildElement(schema, Constants.XSD.QN_COMPLEX_TYPE); ct.setAttribute("name", "row"); SOAPElement ctSequence = addChildElement(ct, Constants.XSD.QN_SEQUENCE); @@ -2703,7 +2477,7 @@ private static void addRowsetSchema(SOAPElement root, RowSet rowSet) { ItemTypeEnum type = item.type().orElse(ItemTypeEnum.STRING); ctSequenceEl1.setAttribute("minOccurs", "0"); ctSequenceEl1.setAttribute("name", item.tagName()); - ctSequenceEl1.setAttribute("sql:field", item.tagName()); + ctSequenceEl1.setAttribute("sql:field", item.fieldName()); ctSequenceEl1.setAttribute("type", type.getValue()); } } @@ -3063,6 +2837,71 @@ private static void addMddatasetSchema(SOAPElement root) { elementComplexTypeSequenceE3.setAttribute("type", "CellData"); } + private static SOAPElement addChildElementTextNode(SOAPElement element, QName qNameOfChild, String valueOfChild) { + try { + SOAPElement createdChild = element.addChildElement(qNameOfChild); + createdChild.setAttribute("xmlns", "http://schemas.microsoft.com/analysisservices/2003/engine"); + createdChild.setAttribute("xmlns:ddl2", "http://schemas.microsoft.com/analysisservices/2003/engine/2"); + createdChild.setAttribute("xmlns:ddl2_2", "http://schemas.microsoft.com/analysisservices/2003/engine/2/2"); + createdChild.setAttribute("xmlns:ddl100", "http://schemas.microsoft.com/analysisservices/2008/engine/100"); + createdChild.setAttribute("xmlns:ddl100_100", "http://schemas.microsoft.com/analysisservices/2008/engine/100/100"); + createdChild.setAttribute("xmlns:ddl200", "http://schemas.microsoft.com/analysisservices/2010/engine/200"); + createdChild.setAttribute("xmlns:ddl200_200", "http://schemas.microsoft.com/analysisservices/2010/engine/200/200"); + createdChild.setAttribute("xmlns:ddl300", "http://schemas.microsoft.com/analysisservices/2011/engine/300"); + createdChild.setAttribute("xmlns:ddl300_300", "http://schemas.microsoft.com/analysisservices/2011/engine/300/300"); + createdChild.setAttribute("xmlns:ddl400", "http://schemas.microsoft.com/analysisservices/2012/engine/400"); + createdChild.setAttribute("xmlns:ddl400_400", "http://schemas.microsoft.com/analysisservices/2012/engine/400/400"); + if (valueOfChild != null && !valueOfChild.isEmpty()) { + SOAPElement se = xmlStringToSoapElement(valueOfChild, createdChild); + createdChild.addChildElement(se); + } + return createdChild; + + } catch (SOAPException | SAXException | IOException | ParserConfigurationException e) { + LOGGER.error("addChildElement {} error", qNameOfChild); + throw new RuntimeException("addChildElement error", e); + } + } + + public static SOAPElement xmlStringToSoapElement(String xmlFragment, SOAPElement context) throws SAXException, IOException, ParserConfigurationException, SOAPException { + // Парсим XML-строку как DOM + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setNamespaceAware(true); + Document doc = dbf.newDocumentBuilder() + .parse(new InputSource(new StringReader(xmlFragment))); + + Element root = doc.getDocumentElement(); + + // Импортируем узел в документ SOAP'а + Node imported = context.getOwnerDocument().importNode(root, true); + + // Преобразуем к SOAPElement (если возможно) + if (imported instanceof SOAPElement) { + return (SOAPElement) imported; + } else { + // Если нет — вручную создаём SOAPElement и копируем содержимое + SOAPFactory soapFactory = SOAPFactory.newInstance(); + SOAPElement newElement = soapFactory.createElement(root.getNodeName(), "", root.getNamespaceURI()); + + // Копируем атрибуты + for (int i = 0; i < root.getAttributes().getLength(); i++) { + Node attr = root.getAttributes().item(i); + newElement.addAttribute( + soapFactory.createName(attr.getNodeName()), attr.getNodeValue() + ); + } + + // Копируем дочерние узлы + Node child = root.getFirstChild(); + while (child != null) { + Node importedChild = context.getOwnerDocument().importNode(child, true); + newElement.appendChild(importedChild); + child = child.getNextSibling(); + } + + return newElement; + } + } private static SOAPElement addChildElement(SOAPElement element, QName qNameOfChild, String valueOfChild) { try { SOAPElement createdChild = element.addChildElement(qNameOfChild); diff --git a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/XmlaApiAdapter.java b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/XmlaApiAdapter.java index b56511d..056fb53 100644 --- a/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/XmlaApiAdapter.java +++ b/server/adapter.soapmessage/src/main/java/org/eclipse/daanse/xmla/server/adapter/soapmessage/XmlaApiAdapter.java @@ -353,6 +353,9 @@ private void execute(SOAPElement discover, SOAPBody responseBody, RequestMetaDat if (properties == null && Constants.MSXMLA.QN_PROPERTIES.equals(element.getElementQName())) { properties = Convert.propertiestoProperties(element); } + if (parameters == null && Constants.MSXMLA.QN_PARAMETERS.equals(element.getElementQName())) { + parameters = Convert.parametersToParameters(element); + } if (command == null && Constants.MSXMLA.QN_COMMAND.equals(element.getElementQName())) { command = Convert.commandtoCommand(element); } diff --git a/server/tck/src/main/java/org/eclipse/daanse/xmla/server/tck/DiscoverResponseTest.java b/server/tck/src/main/java/org/eclipse/daanse/xmla/server/tck/DiscoverResponseTest.java index c312c38..5296dec 100644 --- a/server/tck/src/main/java/org/eclipse/daanse/xmla/server/tck/DiscoverResponseTest.java +++ b/server/tck/src/main/java/org/eclipse/daanse/xmla/server/tck/DiscoverResponseTest.java @@ -437,7 +437,7 @@ void testDiscoverSchemaRowSets(@InjectService XmlaService xmlaService) throws SO void testDiscoverXmlMetadata(@InjectService XmlaService xmlaService) throws SOAPException, IOException, TransformerException { - DiscoverXmlMetaDataResponseRowR row = new DiscoverXmlMetaDataResponseRowR("metaData"); + DiscoverXmlMetaDataResponseRowR row = new DiscoverXmlMetaDataResponseRowR(""); DiscoverService discoverService = xmlaService.discover(); when(discoverService.xmlMetaData(any(), any(), any())).thenReturn(List.of(row)); @@ -453,7 +453,7 @@ void testDiscoverXmlMetadata(@InjectService XmlaService xmlaService) throws SOAP XmlAssert xmlAssert = XMLUtil.createAssert(response); checkRow(xmlAssert); checkRowValues(xmlAssert, Map.of( - "MetaData", "metaData" + "MetaData", "" )); }