/**
* This code was auto-generated by a Codezu.
*
* Changes to this file may cause incorrect behavior and will be lost if
* the code is regenerated.
*/
package com.mozu.api.resources.commerce.catalog.admin.attributedefinition;
import com.mozu.api.ApiContext;
import java.util.List;
import java.util.ArrayList;
import com.mozu.api.MozuClient;
import com.mozu.api.MozuClientFactory;
import com.mozu.api.MozuUrl;
import com.mozu.api.Headers;
import org.joda.time.DateTime;
import com.mozu.api.AsyncCallback;
import java.util.concurrent.CountDownLatch;
import com.mozu.api.security.AuthTicket;
import org.apache.commons.lang.StringUtils;
import com.mozu.api.DataViewMode;
/** <summary>
* Use the Product Types resource to manage the types for your product catalog. Product types act as configuration templates, which store a set of attributes common to all products associated with that type. Unlike categories, products can only be associated with a single product type.
* </summary>
*/
public class ProductTypeResource {
///
/// <see cref="Mozu.Api.ApiContext"/>
///
private ApiContext _apiContext;
private DataViewMode _dataViewMode;
public ProductTypeResource(ApiContext apiContext)
{
_apiContext = apiContext;
_dataViewMode = DataViewMode.Live;
}
public ProductTypeResource(ApiContext apiContext, DataViewMode dataViewMode)
{
_apiContext = apiContext;
_dataViewMode = dataViewMode;
}
/**
* Retrieves a list of product types according to any specified filter criteria and sort options.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductTypeCollection productTypeCollection = producttype.getProductTypes();
* </code></pre></p>
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductTypeCollection
* @see com.mozu.api.contracts.productadmin.ProductTypeCollection
*/
public com.mozu.api.contracts.productadmin.ProductTypeCollection getProductTypes() throws Exception
{
return getProductTypes( null, null, null, null, null);
}
/**
* Retrieves a list of product types according to any specified filter criteria and sort options.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.getProductTypes( callback );
* latch.await() * </code></pre></p>
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductTypeCollection
* @see com.mozu.api.contracts.productadmin.ProductTypeCollection
*/
public CountDownLatch getProductTypesAsync( AsyncCallback<com.mozu.api.contracts.productadmin.ProductTypeCollection> callback) throws Exception
{
return getProductTypesAsync( null, null, null, null, null, callback);
}
/**
* Retrieves a list of product types according to any specified filter criteria and sort options.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductTypeCollection productTypeCollection = producttype.getProductTypes( startIndex, pageSize, sortBy, filter, responseFields);
* </code></pre></p>
* @param filter A set of filter expressions representing the search parameters for a query. This parameter is optional. Refer to [Sorting and Filtering](../../../../Developer/applications/sorting-filtering.htm) for a list of supported filters.
* @param pageSize The number of results to display on each page when creating paged results from a query. The maximum value is 200.
* @param responseFields Use this field to include those fields which are not included by default.
* @param sortBy
* @param startIndex
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductTypeCollection
* @see com.mozu.api.contracts.productadmin.ProductTypeCollection
*/
public com.mozu.api.contracts.productadmin.ProductTypeCollection getProductTypes(Integer startIndex, Integer pageSize, String sortBy, String filter, String responseFields) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductTypeCollection> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.getProductTypesClient(_dataViewMode, startIndex, pageSize, sortBy, filter, responseFields);
client.setContext(_apiContext);
client.executeRequest();
return client.getResult();
}
/**
* Retrieves a list of product types according to any specified filter criteria and sort options.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.getProductTypes( startIndex, pageSize, sortBy, filter, responseFields, callback );
* latch.await() * </code></pre></p>
* @param filter A set of filter expressions representing the search parameters for a query. This parameter is optional. Refer to [Sorting and Filtering](../../../../Developer/applications/sorting-filtering.htm) for a list of supported filters.
* @param pageSize The number of results to display on each page when creating paged results from a query. The maximum value is 200.
* @param responseFields Use this field to include those fields which are not included by default.
* @param sortBy
* @param startIndex
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductTypeCollection
* @see com.mozu.api.contracts.productadmin.ProductTypeCollection
*/
public CountDownLatch getProductTypesAsync(Integer startIndex, Integer pageSize, String sortBy, String filter, String responseFields, AsyncCallback<com.mozu.api.contracts.productadmin.ProductTypeCollection> callback) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductTypeCollection> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.getProductTypesClient(_dataViewMode, startIndex, pageSize, sortBy, filter, responseFields);
client.setContext(_apiContext);
return client.executeRequest(callback);
}
/**
* Retrieves the details of the product type specified in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.getProductType( productTypeId);
* </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType getProductType(Integer productTypeId) throws Exception
{
return getProductType( productTypeId, null);
}
/**
* Retrieves the details of the product type specified in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.getProductType( productTypeId, callback );
* latch.await() * </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch getProductTypeAsync(Integer productTypeId, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
return getProductTypeAsync( productTypeId, null, callback);
}
/**
* Retrieves the details of the product type specified in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.getProductType( productTypeId, responseFields);
* </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param responseFields Use this field to include those fields which are not included by default.
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType getProductType(Integer productTypeId, String responseFields) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.getProductTypeClient(_dataViewMode, productTypeId, responseFields);
client.setContext(_apiContext);
client.executeRequest();
return client.getResult();
}
/**
* Retrieves the details of the product type specified in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.getProductType( productTypeId, responseFields, callback );
* latch.await() * </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param responseFields Use this field to include those fields which are not included by default.
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch getProductTypeAsync(Integer productTypeId, String responseFields, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.getProductTypeClient(_dataViewMode, productTypeId, responseFields);
client.setContext(_apiContext);
return client.executeRequest(callback);
}
/**
* Creates a new product type based on the information supplied in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.addProductType( productType);
* </code></pre></p>
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType addProductType(com.mozu.api.contracts.productadmin.ProductType productType) throws Exception
{
return addProductType( productType, null);
}
/**
* Creates a new product type based on the information supplied in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.addProductType( productType, callback );
* latch.await() * </code></pre></p>
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch addProductTypeAsync(com.mozu.api.contracts.productadmin.ProductType productType, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
return addProductTypeAsync( productType, null, callback);
}
/**
* Creates a new product type based on the information supplied in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.addProductType( productType, responseFields);
* </code></pre></p>
* @param responseFields Use this field to include those fields which are not included by default.
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType addProductType(com.mozu.api.contracts.productadmin.ProductType productType, String responseFields) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.addProductTypeClient(_dataViewMode, productType, responseFields);
client.setContext(_apiContext);
client.executeRequest();
return client.getResult();
}
/**
* Creates a new product type based on the information supplied in the request.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.addProductType( productType, responseFields, callback );
* latch.await() * </code></pre></p>
* @param responseFields Use this field to include those fields which are not included by default.
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch addProductTypeAsync(com.mozu.api.contracts.productadmin.ProductType productType, String responseFields, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.addProductTypeClient(_dataViewMode, productType, responseFields);
client.setContext(_apiContext);
return client.executeRequest(callback);
}
/**
* Updates one or more properties of a product type.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.updateProductType( productType, productTypeId);
* </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType updateProductType(com.mozu.api.contracts.productadmin.ProductType productType, Integer productTypeId) throws Exception
{
return updateProductType( productType, productTypeId, null);
}
/**
* Updates one or more properties of a product type.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.updateProductType( productType, productTypeId, callback );
* latch.await() * </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch updateProductTypeAsync(com.mozu.api.contracts.productadmin.ProductType productType, Integer productTypeId, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
return updateProductTypeAsync( productType, productTypeId, null, callback);
}
/**
* Updates one or more properties of a product type.
* <p><pre><code>
* ProductType producttype = new ProductType();
* ProductType productType = producttype.updateProductType( productType, productTypeId, responseFields);
* </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param responseFields Use this field to include those fields which are not included by default.
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public com.mozu.api.contracts.productadmin.ProductType updateProductType(com.mozu.api.contracts.productadmin.ProductType productType, Integer productTypeId, String responseFields) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.updateProductTypeClient(_dataViewMode, productType, productTypeId, responseFields);
client.setContext(_apiContext);
client.executeRequest();
return client.getResult();
}
/**
* Updates one or more properties of a product type.
* <p><pre><code>
* ProductType producttype = new ProductType();
* CountDownLatch latch = producttype.updateProductType( productType, productTypeId, responseFields, callback );
* latch.await() * </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param responseFields Use this field to include those fields which are not included by default.
* @param callback callback handler for asynchronous operations
* @param dataViewMode DataViewMode
* @param productType A product type is like a product template.
* @return com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
* @see com.mozu.api.contracts.productadmin.ProductType
*/
public CountDownLatch updateProductTypeAsync(com.mozu.api.contracts.productadmin.ProductType productType, Integer productTypeId, String responseFields, AsyncCallback<com.mozu.api.contracts.productadmin.ProductType> callback) throws Exception
{
MozuClient<com.mozu.api.contracts.productadmin.ProductType> client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.updateProductTypeClient(_dataViewMode, productType, productTypeId, responseFields);
client.setContext(_apiContext);
return client.executeRequest(callback);
}
/**
* Deletes the product type by providing the product type ID.
* <p><pre><code>
* ProductType producttype = new ProductType();
* producttype.deleteProductType( productTypeId);
* </code></pre></p>
* @param productTypeId Identifier of the product type.
* @param dataViewMode DataViewMode
* @return
*/
public void deleteProductType(Integer productTypeId) throws Exception
{
MozuClient client = com.mozu.api.clients.commerce.catalog.admin.attributedefinition.ProductTypeClient.deleteProductTypeClient(_dataViewMode, productTypeId);
client.setContext(_apiContext);
client.executeRequest();
client.cleanupHttpConnection();
}
}