de.hybris.platform.sap.core.configuration.global.impl.SAPGlobalConfigurationServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for de.hybris.platform.sap.core.configuration.global.impl.SAPGlobalConfigurationServiceImpl.java

Source

/*
 * [y] hybris Platform
 *
 * Copyright (c) 2000-2014 hybris AG
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of hybris
 * ("Confidential Information"). You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the
 * license agreement you entered into with hybris.
 *
 * 
 */
package de.hybris.platform.sap.core.configuration.global.impl;

import de.hybris.platform.sap.core.configuration.ConfigurationPropertyAccess;
import de.hybris.platform.sap.core.configuration.global.SAPGlobalConfigurationService;
import de.hybris.platform.sap.core.configuration.global.dao.SAPGlobalConfigurationDAO;
import de.hybris.platform.sap.core.configuration.impl.ConfigurationPropertyAccessImpl;
import de.hybris.platform.sap.core.configuration.model.SAPGlobalConfigurationModel;

import java.util.Collection;
import java.util.Map;

import org.apache.commons.configuration.ConfigurationRuntimeException;
import org.apache.log4j.Logger;

/**
 * Exemplary Implementation to read global configuration properties.
 */
public class SAPGlobalConfigurationServiceImpl implements SAPGlobalConfigurationService {
    private static final Logger LOG = Logger.getLogger(SAPGlobalConfigurationServiceImpl.class.getName());

    private SAPGlobalConfigurationDAO globalConfigurationDAO = null;

    private final ThreadLocal<ConfigurationPropertyAccess> threadLocalBaseStoreConfigurationPropertyAccess = new ThreadLocal<ConfigurationPropertyAccess>() {
        @Override
        protected ConfigurationPropertyAccess initialValue() {
            final SAPGlobalConfigurationModel sapGlobalConfiguration = globalConfigurationDAO
                    .getSAPGlobalConfiguration();
            if (sapGlobalConfiguration != null) {
                return new ConfigurationPropertyAccessImpl(sapGlobalConfiguration);
            }
            return null;
        }
    };

    /**
     * Setter for the globalConfigurationDAO variable.
     * 
     * @param globalConfigurationDAO
     *           the new value for the variable.
     */
    public void setSapGlobalConfigurationDAO(final SAPGlobalConfigurationDAO globalConfigurationDAO) {
        this.globalConfigurationDAO = globalConfigurationDAO;
    }

    @Override
    public <T> T getProperty(final String propertyName) {
        return getSAPGlobalConfigurationCPA().getProperty(propertyName);
    }

    @Override
    public Map<String, Object> getAllProperties() {
        return getSAPGlobalConfigurationCPA().getAllProperties();
    }

    @Override
    public ConfigurationPropertyAccess getPropertyAccess(final String propertyAccessName) {
        return getSAPGlobalConfigurationCPA().getPropertyAccess(propertyAccessName);
    }

    @Override
    public Map<String, ConfigurationPropertyAccess> getAllPropertyAccesses() {
        return getSAPGlobalConfigurationCPA().getAllPropertyAccesses();
    }

    @Override
    public Collection<ConfigurationPropertyAccess> getPropertyAccessCollection(
            final String propertyAccessCollectionName) {
        return getSAPGlobalConfigurationCPA().getPropertyAccessCollection(propertyAccessCollectionName);
    }

    @Override
    public Map<String, Collection<ConfigurationPropertyAccess>> getAllPropertyAccessCollections() {
        return getSAPGlobalConfigurationCPA().getAllPropertyAccessCollections();
    }

    /**
     * Returns the sap configuration configuration property access.
     * 
     * @return sap configuration configuration property access
     */
    protected ConfigurationPropertyAccess getSAPGlobalConfigurationCPA() {
        final SAPGlobalConfigurationModel sapGlobalConfiguration = globalConfigurationDAO
                .getSAPGlobalConfiguration();
        ConfigurationPropertyAccessImpl cpa = (ConfigurationPropertyAccessImpl) threadLocalBaseStoreConfigurationPropertyAccess
                .get();
        if (cpa != null && cpa.getConfigurationModel() != sapGlobalConfiguration) {
            cpa = null;
        }
        if (cpa == null && sapGlobalConfiguration != null) {
            cpa = new ConfigurationPropertyAccessImpl(sapGlobalConfiguration);
        }
        if (cpa == null || cpa.getConfigurationModel() == null) {
            LOG.fatal("SAP Configuration exception: no SAP Global Configuration exists!");
            throw new ConfigurationRuntimeException(
                    "SAP Configuration exception: no SAP Global Configuration exists!");
        }
        return cpa;
    }

}