com.ebay.sdk.call.RelistItemCall Maven / Gradle / Ivy
/*
Copyright (c) 2013 eBay, Inc.
This program is licensed under the terms of the eBay Common Development and
Distribution License (CDDL) Version 1.0 (the "License") and any subsequent version
thereof released by eBay. The then-current version of the License can be found
at http://www.opensource.org/licenses/cddl1.php and in the eBaySDKLicense file that
is under the eBay SDK ../docs directory.
*/
package com.ebay.sdk.call;
import com.ebay.sdk.pictureservice.*;
import com.ebay.sdk.pictureservice.eps.*;
import java.lang.String;
import java.util.Calendar;
import com.ebay.sdk.*;
import com.ebay.soap.eBLBaseComponents.*;
/**
* Wrapper class of the RelistItem call of eBay SOAP API.
*
* Title: SOAP API wrapper library.
* Description: Contains wrapper classes for eBay SOAP APIs.
* Copyright: Copyright (c) 2009
* Company: eBay Inc.
*
Input property: ItemToBeRelisted
- The Item container is used to configure the item that will be relisted. If the seller plans to relist the item with no changes, the only field under the Item container that is required is the ItemID field. In the ItemID field, the seller specifies the item that will be relisted. If the seller wishes to change anything else for the listing, the seller should include this field in the call request and give it a new value.
*
* If the seller wants to delete one or more optional settings in the listing, the seller should use the DeletedField tag.
*
Input property: DeletedField
- Specifies the name of the field to delete from a listing.
* See Relisting Items for rules on deleting values when relisting items.
* Also see the relevant field descriptions to determine when to use DeletedField (and potential consequences).
* The request can contain zero, one, or many instances of DeletedField (one for each field to be deleted).
*
* Case-sensitivity must be taken into account when using a DeletedField tag to delete a field. The value passed into a DeletedField tag must either match the case of the schema element names in the full field path (Item.PictureDetails.GalleryURL), or the initial letter of each schema element name in the full field path must be lowercase (item.pictureDetails.galleryURL).
* Do not change the case of letters in the middle of a field name.
* For example, item.picturedetails.galleryUrl is not allowed.
* To delete a listing enhancement like 'BoldTitle', specify the value you are deleting;
* for example, Item.ListingEnhancement[BoldTitle].
*
Output property: ReturnedItemID
- The unique identifier for the relisted item. Note that the ItemID changes when a listing is relisted, so this will not be the same ItemID value that was passed in the call request.
*
*
Output property: ListingFees
- This container consists of the estimated listing fees for the relisted item. Each type of fee is returned even if it is not appplicable (has a value of 0.0
. The Final Value Fee (FVF) is not in this container, as this value cannot be determined until a sale is made.
*
Output property: ReturnedStartTime
- This timestamp indicates the date and time when the relisted item became active on the eBay site.
*
Output property: ReturnedEndTime
- This timestamp indicates the date and time when the relisted item is scheduled to end on the eBay site. This date/time is calculated by using the StartTime and the the listing duration.
*
Output property: ReturnedCategoryID
- Unique identifier of the primary eBay category in which the item was relisted. This field is only returned if the Item.CategoryMappingAllowed field was included and set to true
in the request and the category ID passed in the Item.PrimaryCategory field was mapped to a new category ID by eBay. If the primary category has not changed or it has expired with no replacement, this field is not returned.
*
*
Output property: ReturnedCategory2ID
- Unique identifier of the secondary eBay category (if one was used) in which the item was relisted. This field is only returned if the Item.CategoryMappingAllowed field was included and set to true
in the request and the category ID passed in the Item.SecondaryCategory field was mapped to a new category ID by eBay. If the secondary category has not changed or it has expired with no replacement, this field is not returned.
*
*
Output property: ReturnedDiscountReason
- This field is returned if an eBay special offer or promotion is applicable to the listing.
*
Output property: ReturnedProductSuggestions
- Provides a list of products recommended by eBay which match the item information provided by the seller.
*
Output property: ReturnedListingRecommendations
- Container consisting of one or more Recommendation containers. Each Recommendation container provides a message to the seller on how a listing can be improved or brought up to standard in regards to top-rated seller/listing requirements, mandated or recommended Item Specifics, picture quality requirements, pricing and/or listing format recommendations, recommended keywords and/or Item Specifics in a Title, and/or a recommendation to offer fast handling (same-day handling or handling time of 1 day) and/or a free shipping option in order to qualify the listing for a Fast 'N Free badge.
*
* This container is only returned if the IncludeRecommendations
* flag was included and set to 'true' in the RelistItem request, and if
* at least one listing recommendation exists for the newly relisted item. If
* one or more listing recommendations are returned, it will be at the seller's
* discretion about whether to revise the item based on eBay's listing
* recommendation(s).
*
* @author Ron Murphy
* @version 1.0
*/
public class RelistItemCall extends com.ebay.sdk.ApiCall
{
private ItemType itemToBeRelisted = null;
private String[] deletedField = null;
private String returnedItemID=null;
private FeesType listingFees=null;
private Calendar returnedStartTime=null;
private Calendar returnedEndTime=null;
private String returnedCategoryID=null;
private String returnedCategory2ID=null;
private DiscountReasonCodeType[] returnedDiscountReason=null;
private ProductSuggestionsType returnedProductSuggestions=null;
private ListingRecommendationsType returnedListingRecommendations=null;
private PictureService pictureService;
/**
* Constructor.
*/
public RelistItemCall() {
}
/**
* Constructor.
* @param apiContext The ApiContext object to be used to make the call.
*/
public RelistItemCall(ApiContext apiContext) {
super(apiContext);
this.pictureService = eBayPictureServiceFactory.getPictureService(apiContext);
}
/**
* Enables a seller to relist a listing that has recently ended on a specified eBay site. A seller has to up to 90 days to relist an ended listing. When an item is relisted, it will receive a new ItemID value, but this item will remain on other users' Watch Lists after it is relisted. The seller has the opportunity to make changes to the listing through the Item container, and the seller can also use one or more DeletedField tags to remove an optional field/setting from the listing.
*
*
* @throws ApiException
* @throws SdkException
* @throws Exception
* @return The FeesType object.
*/
public FeesType relistItem()
throws com.ebay.sdk.ApiException, com.ebay.sdk.SdkException, java.lang.Exception
{
RelistItemRequestType req;
req = new RelistItemRequestType();
if( this.itemToBeRelisted == null )
throw new SdkException("ItemToBeRelisted property is not set.");
String origItemID = this.itemToBeRelisted.getItemID();
req.setItem(this.itemToBeRelisted);
if (this.itemToBeRelisted != null)
req.setItem(this.itemToBeRelisted);
if (this.deletedField != null)
req.setDeletedField(this.deletedField);
RelistItemResponseType resp = (RelistItemResponseType) execute(req);
this.returnedItemID = resp.getItemID();
this.listingFees = resp.getFees();
this.returnedStartTime = resp.getStartTime();
this.returnedEndTime = resp.getEndTime();
this.returnedCategoryID = resp.getCategoryID();
this.returnedCategory2ID = resp.getCategory2ID();
this.returnedDiscountReason = resp.getDiscountReason();
this.returnedProductSuggestions = resp.getProductSuggestions();
this.returnedListingRecommendations = resp.getListingRecommendations();
if( this.itemToBeRelisted.getListingDetails() == null )
this.itemToBeRelisted.setListingDetails(new ListingDetailsType());
this.itemToBeRelisted.getListingDetails().setRelistedItemID(origItemID);
this.itemToBeRelisted.setItemID(resp.getItemID());
return this.getListingFees();
}
/**
* Gets the RelistItemRequestType.deletedField.
* @return String[]
*/
public String[] getDeletedField()
{
return this.deletedField;
}
/**
* Sets the RelistItemRequestType.deletedField.
* @param deletedField String[]
*/
public void setDeletedField(String[] deletedField)
{
this.deletedField = deletedField;
}
/**
* Gets the RelistItemRequestType.itemToBeRelisted.
* @return ItemType
*/
public ItemType getItemToBeRelisted()
{
return this.itemToBeRelisted;
}
/**
* Sets the RelistItemRequestType.itemToBeRelisted.
* @param itemToBeRelisted ItemType
*/
public void setItemToBeRelisted(ItemType itemToBeRelisted)
{
this.itemToBeRelisted = itemToBeRelisted;
}
public void uploadPictures(String[] pictureFiles, PictureDetailsType pictureDetails) throws SdkException {
if(pictureFiles == null) {
return;
}
PictureInfo[] pictureInfoArray = new PictureInfo[pictureFiles.length];
for(int i = 0; i < pictureFiles.length; i ++) {
pictureInfoArray[i] = new PictureInfo();
pictureInfoArray[i].setPictureFilePath(pictureFiles[i]);
}
uploadPictures(pictureInfoArray, pictureDetails);
}
public void uploadPictures(PictureInfo[] pictureInfoArray, PictureDetailsType pictureDetails) throws SdkException {
String epsUrl = getApiContext().getEpsServerUrl();
if(pictureInfoArray == null || epsUrl == null) {
return;
}
if(pictureDetails == null) {
pictureDetails = new PictureDetailsType();
}
if(pictureDetails.getPhotoDisplay() == null) {
pictureDetails.setPhotoDisplay(PhotoDisplayCodeType.NONE);
}
if(pictureDetails.getGalleryType() == null) {
pictureDetails.setGalleryType(GalleryTypeCodeType.NONE);
}
if(pictureDetails.getPictureSource() == null) {
pictureDetails.setPictureSource(PictureSourceCodeType.VENDOR);
}
itemToBeRelisted.setPictureDetails(pictureDetails);
int uploads = pictureService.uploadPictures(pictureDetails.getPhotoDisplay(), pictureInfoArray);
if(uploads != pictureInfoArray.length ) {
// Build error message.
StringBuffer sb = new StringBuffer();
for(int i = 0; i < pictureInfoArray.length; i ++ ) {
if (pictureInfoArray[i].hasError())
sb.append(pictureInfoArray[i].getErrorType() + " : " +
pictureInfoArray[i].getErrorMessage() + "\n");
}
throw new SdkException(sb.toString());
}
// Save urls back to item object.
String[] uris = new String[pictureInfoArray.length];
for(int i = 0; i < pictureInfoArray.length; i ++) {
uris[i] = pictureInfoArray[i].getURL();
}
itemToBeRelisted.getPictureDetails().setPictureURL(uris);
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.listingFees.
*
* @return FeesType
*/
public FeesType getListingFees()
{
return this.listingFees;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedCategory2ID.
*
* @return String
*/
public String getReturnedCategory2ID()
{
return this.returnedCategory2ID;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedCategoryID.
*
* @return String
*/
public String getReturnedCategoryID()
{
return this.returnedCategoryID;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedDiscountReason.
*
* @return DiscountReasonCodeType[]
*/
public DiscountReasonCodeType[] getReturnedDiscountReason()
{
return this.returnedDiscountReason;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedEndTime.
*
* @return Calendar
*/
public Calendar getReturnedEndTime()
{
return this.returnedEndTime;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedItemID.
*
* @return String
*/
public String getReturnedItemID()
{
return this.returnedItemID;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedListingRecommendations.
*
* @return ListingRecommendationsType
*/
public ListingRecommendationsType getReturnedListingRecommendations()
{
return this.returnedListingRecommendations;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedProductSuggestions.
*
* @return ProductSuggestionsType
*/
public ProductSuggestionsType getReturnedProductSuggestions()
{
return this.returnedProductSuggestions;
}
/**
* Valid after executing the API.
* Gets the returned RelistItemResponseType.returnedStartTime.
*
* @return Calendar
*/
public Calendar getReturnedStartTime()
{
return this.returnedStartTime;
}
}