Subversion Repositories SmartDukaan

Rev

Rev 24472 | Rev 27028 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed


package com.spice.profitmandi.web.config;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Properties;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.spice.profitmandi.dao.convertor.LocalDateTimeJsonConverter;

@Configuration
@ComponentScan("com.spice.profitmandi.*")
public class AppConfig {

        private static final String PATH_PREFIX = "/WEB-INF/views/";
        private static final String PATH_SUFFIX = ".jsp";
        private static final String MESSAGE_PATH_SOURCE_NAME = "classpath:message";
        private static final Logger LOGGER = LogManager.getLogger(AppConfig.class);
        private static Resource resource;

        public static Resource getResource() {
                return resource;
        }

        public void setResource(Resource resource) {
                AppConfig.resource = resource;
        }

        @Bean(name = "viewResolver")
        public InternalResourceViewResolver getViewResolver() {
                LOGGER.debug("creating view resolver bean with prefix : " + PATH_PREFIX + " and suffix : " + PATH_SUFFIX);
                InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
                viewResolver.setPrefix(PATH_PREFIX);
                viewResolver.setSuffix(PATH_SUFFIX);
                return viewResolver;
        }

        @Bean(name = "messageSource")
        public ReloadableResourceBundleMessageSource getReloadableResourceBundleMessageSource() {
                LOGGER.debug("creating messageSource bean with message path source name : " + MESSAGE_PATH_SOURCE_NAME);
                ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
                messageSource.setBasename(MESSAGE_PATH_SOURCE_NAME);
                return messageSource;
        }

        @Bean(name = "multipartResolver")
        public CommonsMultipartResolver getCommonsMultipartResolver() {
                LOGGER.info("creating common multipart resolver bean");
                CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
                multipartResolver.setMaxUploadSizePerFile(5000000);
                multipartResolver.setMaxUploadSize(5000000);
                return multipartResolver;
        }

        @Bean
        public PropertySourcesPlaceholderConfigurer propertyConfigurer1() {
                String activeProfile;

                PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();

                Properties properties = new Properties();
                try {
                        properties.load(this.getClass().getClassLoader().getResourceAsStream("META-INF/env.property"));
                } catch (IOException e) {
                        LOGGER.error("Error in reading env property file.Adding default property" + e);
                        properties.put("profile", "dev");
                }
                activeProfile = (String) properties.get("profile");

                if ("prod".equals(activeProfile)) {
                        resource = new ClassPathResource("/META-INF/prod.properties");
                } else if ("staging".equals(activeProfile)) {
                        resource = new ClassPathResource("/META-INF/staging.properties");
                } else {
                        resource = new ClassPathResource("/META-INF/dev.properties");
                }

                propertySourcesPlaceholderConfigurer.setLocation(resource);

                return propertySourcesPlaceholderConfigurer;
        }

        @Bean(name = "mailSender")
        public JavaMailSender getGmailSender() {
                JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

                // Using gmail
                mailSender.setHost("smtp.sendgrid.net");
                mailSender.setPort(587);
                mailSender.setUsername("shop2020");
                mailSender.setPassword("U2/=fP,t");

                Properties javaMailProperties = new Properties();
                javaMailProperties.put("mail.smtp.starttls.enable", "false");
                javaMailProperties.put("mail.smtp.auth", "true");
                javaMailProperties.put("mail.transport.protocol", "smtp");
                javaMailProperties.put("mail.debug", "true");// Prints out everything on screen

                mailSender.setJavaMailProperties(javaMailProperties);
                return mailSender;
        }

        @Bean(name = "gson")
        public Gson gson() {

                Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls()
                                .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeJsonConverter()).create();

                return gson;

        }

}