/**
* 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.shopping.configuration.definition;
import com.liferay.portal.kernel.settings.LocalizedValuesMap;
import com.liferay.portal.kernel.settings.TypedSettings;
import com.liferay.portal.kernel.util.LocalizationUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.shopping.configuration.ShoppingGroupServiceConfigurationOverride;
import java.util.Currency;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
/**
* @author Brian Wing Shun Chan
* @author Eduardo Garcia
* @author Peter Fellwock
*/
public class ShoppingGroupServiceConfigurationOverrideImpl
implements ShoppingGroupServiceConfigurationOverride {
public static final String[] CURRENCY_IDS;
static {
String[] ids = null;
try {
Set<String> set = new TreeSet<>();
Locale[] locales = Locale.getAvailableLocales();
for (int i = 0; i < locales.length; i++) {
Locale locale = locales[i];
if (locale.getCountry().length() == 2) {
Currency currency = Currency.getInstance(locale);
String currencyId = currency.getCurrencyCode();
set.add(currencyId);
}
}
ids = set.toArray(new String[set.size()]);
}
catch (Exception e) {
ids = new String[] {"USD", "CAD", "EUR", "GBP", "JPY"};
}
finally {
CURRENCY_IDS = ids;
}
}
public ShoppingGroupServiceConfigurationOverrideImpl(
TypedSettings typedSettings) {
_typedSettings = typedSettings;
}
@Override
public String[][] getAlternativeShipping() {
String value = _typedSettings.getValue("alternativeShipping", null);
if (value == null) {
return new String[0][0];
}
String[] array = StringUtil.split("alternativeShipping", "[$_ARRAY_$]");
String[][] alternativeShipping = new String[array.length][0];
for (int i = 0; i < array.length; i++) {
alternativeShipping[i] = StringUtil.split(array[i]);
}
return alternativeShipping;
}
@Override
public String getAlternativeShippingName(int altShipping) {
String altShippingName = StringPool.BLANK;
try {
altShippingName = getAlternativeShipping()[0][altShipping];
}
catch (Exception e) {
}
return altShippingName;
}
@Override
public String[] getCcTypes() {
String[] ccTypes = _typedSettings.getValues("ccTypes");
if ((ccTypes.length == 1) && ccTypes[0].equals(CC_NONE)) {
return StringPool.EMPTY_ARRAY;
}
return ccTypes;
}
@Override
public String getCurrencyId() {
return _typedSettings.getValue("currencyId", "USD");
}
@Override
public String[] getCurrencyIds() {
return CURRENCY_IDS;
}
@Override
public String getEmailFromAddress() {
return _typedSettings.getValue("emailFromAddress");
}
@Override
public String getEmailFromName() {
return _typedSettings.getValue("emailFromName");
}
@Override
public LocalizedValuesMap getEmailOrderConfirmationBody() {
LocalizedValuesMap emailOrderConfirmationBody =
_typedSettings.getLocalizedValuesMap("emailOrderConfirmationBody");
return emailOrderConfirmationBody;
}
@Override
public String getEmailOrderConfirmationBodyXml() {
return LocalizationUtil.getXml(
getEmailOrderConfirmationBody(), "emailOrderConfirmationBody");
}
@Override
public LocalizedValuesMap getEmailOrderConfirmationSubject() {
LocalizedValuesMap emailOrderConfirmationSubject =
_typedSettings.getLocalizedValuesMap(
"emailOrderConfirmationSubject");
return emailOrderConfirmationSubject;
}
@Override
public String getEmailOrderConfirmationSubjectXml() {
return LocalizationUtil.getXml(
getEmailOrderConfirmationSubject(),
"emailOrderConfirmationSubject");
}
@Override
public LocalizedValuesMap getEmailOrderShippingBody() {
return _typedSettings.getLocalizedValuesMap("emailOrderShippingBody");
}
@Override
public String getEmailOrderShippingBodyXml() {
return LocalizationUtil.getXml(
getEmailOrderShippingBody(), "emailOrderShippingBody");
}
@Override
public LocalizedValuesMap getEmailOrderShippingSubject() {
return _typedSettings.getLocalizedValuesMap(
"emailOrderShippingSubject");
}
@Override
public String getEmailOrderShippingSubjectXml() {
return LocalizationUtil.getXml(
getEmailOrderShippingSubject(), "emailOrderShippingSubject");
}
@Override
public String[] getInsurance() {
return _typedSettings.getValues("insurance");
}
@Override
public String getInsuranceFormula() {
return _typedSettings.getValue("insuranceFormula");
}
@Override
public double getMinOrder() {
return _typedSettings.getDoubleValue("minOrder");
}
@Override
public String getPayPalEmailAddress() {
return _typedSettings.getValue("paypalEmailAddress");
}
@Override
public String[] getShipping() {
return _typedSettings.getValues("shipping");
}
@Override
public String getShippingFormula() {
return _typedSettings.getValue("shippingFormula");
}
@Override
public double getTaxRate() {
return _typedSettings.getDoubleValue("taxRate");
}
@Override
public String getTaxState() {
return _typedSettings.getValue("taxState");
}
@Override
public boolean isEmailOrderConfirmationEnabled() {
return _typedSettings.getBooleanValue("emailOrderConfirmationEnabled");
}
@Override
public boolean isEmailOrderShippingEnabled() {
return _typedSettings.getBooleanValue("emailOrderShippingEnabled");
}
@Override
public boolean useAlternativeShipping() {
String[][] alternativeShipping = getAlternativeShipping();
try {
for (int i = 0; i < 10; i++) {
if (Validator.isNotNull(alternativeShipping[0][i]) &&
Validator.isNotNull(alternativeShipping[1][i])) {
return true;
}
}
}
catch (Exception e) {
}
return false;
}
@Override
public boolean usePayPal() {
return Validator.isNotNull(getPayPalEmailAddress());
}
private final TypedSettings _typedSettings;
}