Package org.lightadmin.demo.config

Source Code of org.lightadmin.demo.config.CustomerAdministration

package org.lightadmin.demo.config;

import org.lightadmin.api.config.AdministrationConfiguration;
import org.lightadmin.api.config.builder.*;
import org.lightadmin.api.config.unit.*;
import org.lightadmin.api.config.utils.DomainTypePredicates;
import org.lightadmin.api.config.utils.DomainTypeSpecification;
import org.lightadmin.api.config.utils.FieldValueRenderer;
import org.lightadmin.api.config.utils.ScopeMetadataUtils;
import org.lightadmin.demo.config.listener.SimpleRepositoryEventListener;
import org.lightadmin.demo.model.Customer;
import org.lightadmin.demo.service.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import static org.lightadmin.api.config.utils.FilterMetadataUtils.filter;
import static org.lightadmin.api.config.utils.ScopeMetadataUtils.all;
import static org.lightadmin.api.config.utils.ScopeMetadataUtils.specification;

@SuppressWarnings("unused")
public class CustomerAdministration extends AdministrationConfiguration<Customer> {

    @Autowired
    private CustomerService customerService;

    public EntityMetadataConfigurationUnit configuration(EntityMetadataConfigurationUnitBuilder configurationBuilder) {
        return configurationBuilder
                .nameField("firstname")
                .singularName("Customer")
                .pluralName("Customers")
                .repositoryEventListener(SimpleRepositoryEventListener.class)
                .build();
    }

    public ScreenContextConfigurationUnit screenContext(ScreenContextConfigurationUnitBuilder screenContextBuilder) {
        return screenContextBuilder.screenName("Customers Administration").build();
    }

    public FieldSetConfigurationUnit listView(final FieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("avatar").caption("Avatar")
                .field("registrationDate").caption("Registration Date")
                .field("registrationDateTime").caption("Registration Date Time")
                .field("firstname").caption("First Name")
                .field("lastname").caption("Last Name")
                .field("emailAddress").caption("Email Address")
                .field("addresses").caption("Addresses")
                .field("discountPrograms").caption("Discount Programs")
                .renderable(vipStatusRenderer()).caption("VIP").build();
    }

    public FieldSetConfigurationUnit quickView(final FieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("avatar").caption("Avatar")
                .field("registrationDate").caption("Registration Date")
                .field("firstname").caption("First Name")
                .field("lastname").caption("Last Name")
                .field("discountPrograms").caption("Discount Programs")
                .field("addresses").caption("Addresses")
                .renderable(vipStatusRenderer()).caption("VIP").build();
    }

    public FieldSetConfigurationUnit showView(final FieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("avatar").caption("Avatar")
                .field("registrationDate").caption("Registration Date")
                .field("registrationDateTime").caption("Registration Date Time")
                .field("firstname").caption("First Name")
                .field("lastname").caption("Last Name")
                .field("emailAddress").caption("Email Address")
                .field("discountPrograms").caption("Discount Programs")
                .field("addresses").caption("Addresses")
                .renderable(vipStatusRenderer()).caption("VIP").build();
    }

    public FieldSetConfigurationUnit formView(final PersistentFieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("avatar").caption("Avatar")
                .field("registrationDate").caption("Registration Date")
                .field("registrationDateTime").caption("Registration Date Time")
                .field("firstname").caption("First Name")
                .field("lastname").caption("Last Name")
                .field("emailAddress").caption("Email Address")
                .field("discountPrograms").caption("Discount Programs")
                .field("addresses").caption("Addresses").build();
    }

    public ScopesConfigurationUnit scopes(final ScopesConfigurationUnitBuilder scopeBuilder) {
        return scopeBuilder
                .scope("All", all()).defaultScope()
                .scope("Buyers", ScopeMetadataUtils.filter(DomainTypePredicates.alwaysTrue()))
                .scope("Sellers", specification(customerNameEqDave())).build();
    }

    public FiltersConfigurationUnit filters(final FiltersConfigurationUnitBuilder filterBuilder) {
        return filterBuilder.filters(
                filter().field("id").caption("ID").build(),
                filter().field("registrationDate").caption("Registration Date").build(),
                filter().field("registrationDateTime").caption("Registration Date Time").build(),
                filter().field("firstname").caption("First Name").build(),
                filter().field("lastname").caption("Last Name").build(),
                filter().field("emailAddress").caption("Email Address").build(),
                filter().field("addresses").caption("Addresses").build(),
                filter().field("discountPrograms").caption("Discount Programs").build()
        ).build();
    }

    private DomainTypeSpecification<Customer> customerNameEqDave() {
        return new DomainTypeSpecification<Customer>() {
            @Override
            public Predicate toPredicate(final Root<Customer> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) {
                return cb.equal(root.get("firstname"), "Dave");
            }
        };
    }

    private FieldValueRenderer<Customer> vipStatusRenderer() {
        final CustomerService _customerService = customerService;
        return new FieldValueRenderer<Customer>() {
            @Override
            public String apply(Customer customer) {
                return _customerService.isVIP(customer) ? "Yes" : "No";
            }
        };
    }
}
TOP

Related Classes of org.lightadmin.demo.config.CustomerAdministration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.