package controls;

import org.apache.beehive.controls.api.bean.ControlExtension;
import com.bea.dsp.control.core.DSPControl;
import com.bea.dsp.control.core.annotation.DSPControlInterfaceAnnotation;
import com.bea.dsp.control.core.annotation.ALDSPControlMethodAnnotation;
import com.bea.dsp.RequestConfig;

@ControlExtension
@DSPControlInterfaceAnnotation(version = "3.0" , application = "RetailDataspace", urlKey = "RetailDataspace.controls.DSPControlFile")
public interface DSPControlFile extends DSPControl {

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getProfile", schemaURI = "urn:retailer", schemaRootElement = "PROFILE", locator  = "0{ld:RetailApplication/CustomerManagement/ProfileService}getProfile", functionKind  = "function")
 public retailer.PROFILE_SERVICE[] getProfile() ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getCustomerService", schemaURI = "urn:retailer", schemaRootElement = "CUSTOMER", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getCustomerService", functionKind  = "function")
 public retailer.CUSTOMER_SERVICE getCustomerService(retailer.PROFILE_SERVICE profile) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getServiceCase", schemaURI = "urn:retailer", schemaRootElement = "CASE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getServiceCase", functionKind  = "function")
 public retailer.CASE_SERVICE[] getServiceCase(retailer.PROFILE_SERVICE profile) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="createPROFILE", schemaURI = "urn:retailer", schemaRootElement = "ProfileService_KEY", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}createPROFILE", functionKind  = "procedure")
 public retailer.ProfileService_KEY[] createPROFILE(retailer.PROFILE_SERVICE[] profile) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="updatePROFILE", schemaURI = "", schemaRootElement = "", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}updatePROFILE", functionKind  = "procedure")
 public void updatePROFILE(retailer.PROFILE_SERVICE[] profile) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="deletePROFILE", schemaURI = "", schemaRootElement = "", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}deletePROFILE", functionKind  = "procedure")
 public void deletePROFILE(retailer.PROFILE_SERVICE[] profile) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getCustomerByCustID", schemaURI = "urn:retailer", schemaRootElement = "PROFILE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getCustomerByCustID", functionKind  = "function")
 public retailer.PROFILE_SERVICE[] getCustomerByCustID(java.lang.String custID) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getCustomerByLoginID", schemaURI = "urn:retailer", schemaRootElement = "PROFILE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getCustomerByLoginID", functionKind  = "function")
 public retailer.PROFILE_SERVICE[] getCustomerByLoginID(java.lang.String loginID) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getCustomerByLoginID", schemaURI = "urn:retailer", schemaRootElement = "PROFILE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getCustomerByLoginID", functionKind  = "function")
 public retailer.PROFILE_SERVICE[] getCustomerByLoginID(java.lang.String loginID, RequestConfig config) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getCustomerByZipID", schemaURI = "urn:retailer", schemaRootElement = "PROFILE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getCustomerByZipID", functionKind  = "function")
 public retailer.PROFILE_SERVICE[] getCustomerByZipID(java.lang.String zipID) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getOrderCount", schemaURI = "http://www.w3.org/2001/XMLSchema", schemaRootElement = "integer", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getOrderCount", functionKind  = "function")
 public java.math.BigInteger getOrderCount(java.lang.String arg) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getServiceCases", schemaURI = "urn:retailer", schemaRootElement = "CASE", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getServiceCases", functionKind  = "function")
 public retailer.CASE_SERVICE[] getServiceCases(retailer.PROFILE_SERVICES profiles) ;

@ALDSPControlMethodAnnotation(functionURI = "ld:RetailApplication/CustomerManagement/ProfileService", functionName ="getOrderCounts", schemaURI = "http://www.w3.org/2001/XMLSchema", schemaRootElement = "integer", locator  = "1{ld:RetailApplication/CustomerManagement/ProfileService}getOrderCounts", functionKind  = "function")
 public java.math.BigInteger[] getOrderCounts(java.lang.String arg) ;


/** 
* Using RequestConfig:
* In order to use a RequestConfig parameter with functions,
* procedures and submit methods
* please edit a method signature as follows:
* From:
* Customer getCustomer(java.lang.String p0);
* To:
* Customer getCustomer(java.lang.String p0, RequestConfig
* config);
* The RequestConfig parameter allows you to send FilterXQuery and
 * QueryAttributes
* to the server and receive Audit Event. **/

/**
* Using Ad-hoc queries in DSP Control:
* You can issue ad-hoc queries from DSP control by creating method
* with  folowing signatures:
*  i) @DSPControlAdhocQueryAnnotation(body="<adhoc-xquery>")
*     Object[] executeQuery()
*
* ii) @DSPControlAdhocQueryAnnotation(body="")
*     Object[] executeQuery(String xquery, ExternalVariables params);
*
*     @DSPControlAdhocQueryAnnotation(body="")
*     Object[] executeQuery(String xquery, RequestConfig config);
*
*     @DSPControlAdhocQueryAnnotation(body="")
*     Object[] executeQuery(String xquery, ExternalVariables params, RequestConfig config);
*
*     @DSPControlAdhocQueryAnnotation(body="")
*     Object[] executeQuery(String xquery);
*
*  In each of the above cases the name of the function need not strictly be 'executeQuery'
**/  

}