org.lightadmin.core.config.domain.unit.ConfigurationUnitsConverter.java Source code

Java tutorial

Introduction

Here is the source code for org.lightadmin.core.config.domain.unit.ConfigurationUnitsConverter.java

Source

/*
 * Copyright 2012-2014 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.lightadmin.core.config.domain.unit;

import org.lightadmin.api.config.AdministrationConfiguration;
import org.lightadmin.api.config.builder.*;
import org.lightadmin.core.config.domain.common.GenericFieldSetConfigurationUnitBuilder;
import org.lightadmin.core.config.domain.common.PersistentFieldSetConfigurationUnitBuilderAdapter;
import org.lightadmin.core.config.domain.configuration.DefaultEntityMetadataConfigurationUnitBuilder;
import org.lightadmin.core.config.domain.context.DefaultScreenContextConfigurationUnitBuilder;
import org.lightadmin.core.config.domain.filter.DefaultFiltersConfigurationUnitBuilder;
import org.lightadmin.core.config.domain.scope.DefaultScopesConfigurationUnitBuilder;
import org.lightadmin.core.config.domain.sidebar.DefaultSidebarsConfigurationUnitBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;

import static org.lightadmin.core.config.domain.unit.DomainConfigurationUnitType.*;
import static org.lightadmin.core.util.DomainConfigurationUtils.initializeConfigurationUnitWithBuilder;
import static org.lightadmin.core.util.DomainConfigurationUtils.isAnnotationBasedConfigurationCandidate;

public final class ConfigurationUnitsConverter {

    private static final ConfigurationUnitsConverter INSTANCE = new ConfigurationUnitsConverter();

    public static ConfigurationUnits unitsFromAutowiredConfiguration(Class configurationClass,
            AutowireCapableBeanFactory beanFactory) {
        return isAnnotationBasedConfigurationCandidate(configurationClass)
                ? INSTANCE.convertAnnotationBasedConfiguration(configurationClass)
                : INSTANCE.convertSuperClassBasedConfiguration(configurationClass,
                        autowiredConfigurationInstance(configurationClass, beanFactory));
    }

    public static ConfigurationUnits unitsFromConfiguration(Class configurationClass) {
        return isAnnotationBasedConfigurationCandidate(configurationClass)
                ? INSTANCE.convertAnnotationBasedConfiguration(configurationClass)
                : INSTANCE.convertSuperClassBasedConfiguration(configurationClass,
                        configurationInstance(configurationClass));
    }

    private static AdministrationConfiguration configurationInstance(final Class configurationClass) {
        return (AdministrationConfiguration) BeanUtils.instantiateClass(configurationClass);
    }

    private static AdministrationConfiguration autowiredConfigurationInstance(final Class configurationClass,
            AutowireCapableBeanFactory beanFactory) {
        final AdministrationConfiguration configurationInstance = configurationInstance(configurationClass);
        beanFactory.autowireBean(configurationInstance);
        return configurationInstance;
    }

    private ConfigurationUnits convertAnnotationBasedConfiguration(final Class configurationClass) {
        return new ConfigurationUnits(configurationClass,
                initializeConfigurationUnitWithBuilder(configurationClass, FILTERS,
                        FiltersConfigurationUnitBuilder.class, DefaultFiltersConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, SCOPES,
                        ScopesConfigurationUnitBuilder.class, DefaultScopesConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, SIDEBARS,
                        SidebarsConfigurationUnitBuilder.class, DefaultSidebarsConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, QUICK_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, LIST_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, SHOW_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, FORM_VIEW,
                        PersistentFieldSetConfigurationUnitBuilder.class,
                        PersistentFieldSetConfigurationUnitBuilderAdapter.class),
                initializeConfigurationUnitWithBuilder(configurationClass, SCREEN_CONTEXT,
                        ScreenContextConfigurationUnitBuilder.class,
                        DefaultScreenContextConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationClass, CONFIGURATION,
                        EntityMetadataConfigurationUnitBuilder.class,
                        DefaultEntityMetadataConfigurationUnitBuilder.class));
    }

    private ConfigurationUnits convertSuperClassBasedConfiguration(final Class configurationClass,
            final AdministrationConfiguration configurationInstance) {
        return new ConfigurationUnits(configurationClass,
                initializeConfigurationUnitWithBuilder(configurationInstance, FILTERS,
                        FiltersConfigurationUnitBuilder.class, DefaultFiltersConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, SCOPES,
                        ScopesConfigurationUnitBuilder.class, DefaultScopesConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, SIDEBARS,
                        SidebarsConfigurationUnitBuilder.class, DefaultSidebarsConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, QUICK_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, LIST_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, SHOW_VIEW,
                        FieldSetConfigurationUnitBuilder.class, GenericFieldSetConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, FORM_VIEW,
                        PersistentFieldSetConfigurationUnitBuilder.class,
                        PersistentFieldSetConfigurationUnitBuilderAdapter.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, SCREEN_CONTEXT,
                        ScreenContextConfigurationUnitBuilder.class,
                        DefaultScreenContextConfigurationUnitBuilder.class),
                initializeConfigurationUnitWithBuilder(configurationInstance, CONFIGURATION,
                        EntityMetadataConfigurationUnitBuilder.class,
                        DefaultEntityMetadataConfigurationUnitBuilder.class));
    }
}