/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.petra.salesforce.client.partner; import com.liferay.petra.salesforce.client.BaseSalesforceClientImpl; import com.sforce.soap.partner.DeleteResult; import com.sforce.soap.partner.DescribeGlobalResult; import com.sforce.soap.partner.DescribeSObjectResult; import com.sforce.soap.partner.GetDeletedResult; import com.sforce.soap.partner.GetUpdatedResult; import com.sforce.soap.partner.LoginResult; import com.sforce.soap.partner.PartnerConnection; import com.sforce.soap.partner.QueryResult; import com.sforce.soap.partner.SaveResult; import com.sforce.soap.partner.UpsertResult; import com.sforce.soap.partner.sobject.SObject; import com.sforce.ws.ConnectionException; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; /** * @author Brian Wing Shun Chan * @author Peter Shin */ public class SalesforcePartnerClientImpl extends BaseSalesforceClientImpl implements SalesforcePartnerClient { @Override public List<SaveResult> create(SObject[] sObjects) throws ConnectionException { PartnerConnection partnerConnection = getPartnerConnection(); SaveResult[] saveResults = partnerConnection.create(sObjects); return _toList(saveResults); } @Override public List<DeleteResult> delete(String[] salesforceKeys) throws ConnectionException { PartnerConnection partnerConnection = getPartnerConnection(); DeleteResult[] deleteResults = partnerConnection.delete(salesforceKeys); return _toList(deleteResults); } @Override public DescribeGlobalResult describeGlobal(int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.describeGlobal(); } catch (ConnectionException ce) { return describeGlobal(getRetryCount(retryCount, ce)); } } @Override public List<DescribeSObjectResult> describeSObjects( String[] typeNames, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); DescribeSObjectResult[] describeSObjectResults = partnerConnection.describeSObjects(typeNames); return _toList(describeSObjectResults); } catch (ConnectionException ce) { return describeSObjects(typeNames, getRetryCount(retryCount, ce)); } } @Override public GetDeletedResult getDeleted( String typeName, Calendar startCalendar, Calendar endCalendar, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.getDeleted( typeName, startCalendar, endCalendar); } catch (ConnectionException ce) { return getDeleted( typeName, startCalendar, endCalendar, getRetryCount(retryCount, ce)); } } @Override public GetUpdatedResult getUpdated( String typeName, Calendar startCalendar, Calendar endCalendar, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.getUpdated( typeName, startCalendar, endCalendar); } catch (ConnectionException ce) { return getUpdated( typeName, startCalendar, endCalendar, getRetryCount(retryCount, ce)); } } @Override public LoginResult login(String username, String password, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.login(username, password); } catch (ConnectionException ce) { return login(username, password, getRetryCount(retryCount, ce)); } } @Override public QueryResult query(String queryString, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.query(queryString); } catch (ConnectionException ce) { return query(queryString, getRetryCount(retryCount, ce)); } } @Override public QueryResult queryAll(String queryString, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.queryAll(queryString); } catch (ConnectionException ce) { return queryAll(queryString, getRetryCount(retryCount, ce)); } } @Override public QueryResult queryMore(String queryLocator, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); return partnerConnection.queryMore(queryLocator); } catch (ConnectionException ce) { return queryMore(queryLocator, getRetryCount(retryCount, ce)); } } @Override public List<SObject> retrieve( String fieldNames, String typeName, String[] salesforceKeys, int retryCount) throws ConnectionException { try { PartnerConnection partnerConnection = getPartnerConnection(); SObject[] sObjects = partnerConnection.retrieve( fieldNames, typeName, salesforceKeys); return _toList(sObjects); } catch (ConnectionException ce) { return retrieve( fieldNames, typeName, salesforceKeys, getRetryCount(retryCount, ce)); } } @Override public List<SaveResult> update(SObject[] sObjects) throws ConnectionException { PartnerConnection partnerConnection = getPartnerConnection(); SaveResult[] saveResults = partnerConnection.update(sObjects); return _toList(saveResults); } @Override public List<UpsertResult> upsert( String salesforceExternalKeyFieldName, SObject[] sObjects) throws ConnectionException { PartnerConnection partnerConnection = getPartnerConnection(); UpsertResult[] upsertResults = partnerConnection.upsert( salesforceExternalKeyFieldName, sObjects); return _toList(upsertResults); } private <E> List<E> _toList(E[] array) { if ((array == null) || (array.length == 0)) { return new ArrayList<>(); } return new ArrayList<>(Arrays.asList(array)); } }