To access dimension search results, use ENEQueryResults. containsDimensionSearch() (Java) and ENEQueryResults. ContainsDimensionSearch(), as shown in examples in this topic.

If a valid dimension search request has been made, the following method calls for the query result object will evaluate to true:

However, regardless of how the dimension search request is created to control the number of dimension value results returned, the same objects and methods are used to access those results.

Any matching dimension values are organized by dimension (or dimension list, in the compound dimension search case), and each specific match contains methods to access other values that describe the hierarchy of that dimension value within the dimension.

For this reason, the results are actually dimension locations instead of dimension values. Dimension locations contain a single dimension value, as well as a list of ancestor dimension values.

For example, if a resulting dimension value is merlot, it will not only be returned in the Wine Types dimension, but it will be contained in a dimension location that contains the dimension value red, because red is an ancestor of merlot.

Example 68. Java example

The following code sample in Java shows how to access dimension search results:

ENEQuery usq = new ENEQuery(request.getQueryString(), "UTF-8");
// Set query so that compound dimension search is enabled
usq.setDimSearchCompound(true);
ENEQueryResults qr = nec.query(usq);
// If query results object contains dimension search results
if (qr.containsDimensionSearch()) {
	// Get dimension search results object
	DimensionSearchResult dsr = qr.getDimensionSearch();
	// Get results grouped by dimension groups
	DimensionSearchResultGroupList dsrgl = dsr.getResults();
	// Loop over result dimension groups
	for (int i=0; i < dsrgl.size(); i++) {
		// Get individual result dimension group
		DimensionSearchResultGroup dsrg = 
				(DimensionSearchResultGroup)dsrgl.get(i);
		// Get roots for dimension group
		DimValList roots = dsrg.getRoots();
		// Loop over dimension group roots
		for (int j=0; j < roots.size(); j++) {
			// Get dimension root
			DimVal root = (DimVal)roots.get(j);
			// Display dimension root
			%><%= root.getName() %><%
		}
		// Loop over results in group
		for (int j=0; j< dsrg.getTotalNumResults(); j++) {
			// Get individual result
			DimLocationList dll = (DimLocationList)dsrg.get(j);
			// Loop over dimlocations in result
			for (int k=0; k<dll.size(); k++) {
				// Get individual dimlocation from result
				DimLocation dl = (DimLocation)dll.get(k);
				// Get ancestors list
				DimValList ancs = dl.getAncestors();
				// Loop over ancestors for results
				for (int l=0; l < ancs.size(); l++) {
					// Get ancestor and display its name
					DimVal anc = (DimVal)ancs.get(l);
					%><%= anc.getName() %> > <%
				}
				 %><%= dl.getDimValue().getName() %><%
			}
		}
	}	
}


Example 69. .NET example

The following code sample in .NET shows how to access dimension search results:

ENEQuery usq = new ENEQuery(queryString, "UTF-8");
// Set query so that compound dimension search is enabled
usq.DimSearchCompound = true;
ENEQueryResults qr = nec.Query(usq);
// If query results object contains dimension search results
if (qr.ContainsDimensionSearch()) {
	// Get dimension search results object
	DimensionSearchResult dsr = qr.DimensionSearch;
	// Get results grouped by dimension groups
	DimensionSearchResultGroupList dsrgl = dsr.Results;
	// Loop over result dimension groups
	for (int i=0; i < dsrgl.Count; i++) {
		// Get individual result dimension group
		DimensionSearchResultGroup dsrg = 
				(DimensionSearchResultGroup)dsrgl[i];
		// Get roots for dimension group
		DimValList roots = dsrg.Roots;
		// Loop over dimension group roots
		for (int j=0; j < roots.Count; j++) {
			// Get dimension root
			DimVal root = (DimVal)roots[j];
			// Display dimension root
			%><%= root.Name %><%
		}
		// Loop over results in group
		for (int k=0; k< dsrg.TotalNumResults; k++) {
			// Get individual result
			DimLocationList dll = (DimLocationList)dsrg[k];
			// Loop over dimlocations in result
			for (int m=0; m<dll.Count; m++) {
				// Get individual dimlocation from result
				DimLocation dl = (DimLocation)dll[m];
				// Get ancestors list
				DimValList ancs = dl.Ancestors;
				// Loop over ancestors for results
				for (int n=0; l < ancs.Count; n++) {
					// Get ancestor and display its name
					DimVal anc = (DimVal)ancs[n];
					%><%= anc.Name %> > <%
				}
				 %><%= dl.DimValue.Name %><%
			}
		}
	}	
}



Copyright © Legal Notices