You use the 
	 ENEQuery class, or its subclass 
	 UrlENEQuery, to create an MDEX Engine query.
  
You use the 
	 UrlENEQuery class to parse MDEX Engine-specific
	 parameters from the browser request query string into MDEX Engine query
	 parameters. 
  
The code to accomplish this task looks like the following:
Java:
//Create a query from the browser request query string ENEQuery nequery = new UrlENEQuery(request.getQueryString(), "UTF-8");
The browser request query string resides in the 
		HTTPServletRequest object from the 
		javax.servlet.http package. 
	 
.NET:
//Create a query from the browser request query string ENEQuery nequery = new UrlENEQuery(Request.QueryString.ToString(), "UTF-8");
Note
The browser request query string resides in the 
		  HttpRequest object from the 
		  System.Web namespace in ASP.NET. ASP.NET exposes
		  the 
		  HttpRequest object as the intrinsic request object. 
		
The 
		UrlENEQuery class ignores non-MDEX Engine-specific
		parameters, so this class is still safe to use when additional
		application-specific parameters are needed (as long as they don’t conflict with
		the MDEX Engine URL parameter namespace). 
	 
                     Alternatively, you can use the 
		  ENEQuery class to instantiate an empty 
		  ENEQuery object, and then populate it with MDEX
		  Engine query parameters using a variety of 
		  setter methods in Java, or 
		  ENEQuery properties in .NET. 
		
The code to accomplish this task is similar to the example below:
Java:
//Create an empty ENEQuery object and populate it using setter methods ENEQuery nequery = new ENEQuery(); nequery.setNavDescriptors(dimensionValueIDs); nequery.setERec(recordID); ...
.NET:
//Create an empty ENEQuery object and populate it using properties ENEQuery nequery = new ENEQuery(); nequery.NavDescriptors = dimensionValueIDs nequery.ERec = recordID ...
                     You can use the 
		  ENEQuery class to construct a query from any source
		  of state information, including non-Oracle Commerce URL parameters, cookies,
		  server-side session objects, and so forth. These are all application design
		  decisions and have no impact on the final MDEX Engine query or its results. 
		
The following are all valid ways of creating an MDEX Engine query:
Java:
ENEQuery nequery = new UrlENEQuery("N=123", "UTF-8");
ENEQuery nequery = new ENEQuery();
DimValIdList descriptors = new DimValIdList("123");
nequery.setNavDescriptors(descriptors);
ENEQuery nequery = new ENEQuery();
DimValIdList descriptors = 
	new DimValIdList((String)session.getAttribute("<variableName>");
nequery.setNavDescriptors(descriptors);
ENEQuery nequery = new ENEQuery();
DimValIdList descriptors = new DimValIdList(request.getParameter("N"));
nequery.setNavDescriptors(descriptors);.NET:
ENEQuery nequery = new UrlENEQuery("N=123", "UTF-8");
ENEQuery nequery = new ENEQuery();
DimValIdList descriptors = new DimValIdList("123");
nequery.NavDescriptors = descriptors;
ENEQuery nequery = new ENEQuery();
DimValIdList descriptors = new DimValIdList(Request.QueryString["N"]);
nequery.NavDescriptors = descriptors;The 
	 ENEConnection 
	                 query() method in Java, and the 
	 HttpENEConnection 
	                 Query() method in .NET use an 
	 ENEQuery object as its argument when they query the MDEX
	 Engine.
  
The code to execute an MDEX Engine query looks like this:
Example 103. Java Example
//Execute the MDEX Engine query ENEQueryResults qr = eneConnectionObject.query(eneQueryObject);
Example 104. .NET Example
//Execute the Navigation Engine query ENEQueryResults qr = eneConnectionObject.Query(eneQueryObject);

