package fr.openwide.core.basicapp.web.application.config.spring;
import java.util.Date;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import fr.openwide.core.basicapp.core.business.user.model.BasicUser;
import fr.openwide.core.basicapp.core.business.user.model.TechnicalUser;
import fr.openwide.core.basicapp.core.business.user.model.User;
import fr.openwide.core.basicapp.core.config.spring.BasicApplicationCoreCommonConfig;
import fr.openwide.core.basicapp.web.application.BasicApplicationApplication;
import fr.openwide.core.basicapp.web.application.common.renderer.UserRenderer;
import fr.openwide.core.basicapp.web.application.common.template.styles.notification.NotificationLessCssResourceReference;
import fr.openwide.core.jpa.exception.ServiceException;
import fr.openwide.core.jpa.more.rendering.service.IRendererService;
import fr.openwide.core.wicket.more.config.spring.AbstractWebappConfig;
import fr.openwide.core.wicket.more.notification.model.IWicketNotificationDescriptor;
import fr.openwide.core.wicket.more.notification.service.IHtmlNotificationCssService;
import fr.openwide.core.wicket.more.notification.service.IWicketContextProvider;
import fr.openwide.core.wicket.more.rendering.BooleanRenderer;
import fr.openwide.core.wicket.more.rendering.Renderer;
import fr.openwide.core.wicket.more.rendering.service.RendererServiceImpl;
import fr.openwide.core.wicket.more.util.DatePattern;
@Configuration
@Import({
BasicApplicationCoreCommonConfig.class,
BasicApplicationWebappSecurityConfig.class,
BasicApplicationWebappCacheConfig.class,
BasicApplicationWebappApplicationPropertyRegistryConfig.class
})
@ComponentScan(
basePackageClasses = {
BasicApplicationApplication.class
},
excludeFilters = @Filter(Configuration.class)
)
public class BasicApplicationWebappConfig extends AbstractWebappConfig {
@Override
@Bean(name = { "BasicApplicationApplication", "application" })
public BasicApplicationApplication application() {
return new BasicApplicationApplication();
}
@Override
public IRendererService rendererService(IWicketContextProvider wicketContextProvider) {
RendererServiceImpl rendererService = new RendererServiceImpl(wicketContextProvider);
rendererService.registerRenderer(Boolean.class, BooleanRenderer.get());
rendererService.registerRenderer(boolean.class, BooleanRenderer.get());
Renderer<Date> shortDateRenderer = Renderer.fromDatePattern(DatePattern.SHORT_DATE);
rendererService.registerRenderer(Date.class, shortDateRenderer);
rendererService.registerRenderer(java.sql.Date.class, shortDateRenderer);
rendererService.registerRenderer(User.class, UserRenderer.get());
rendererService.registerRenderer(TechnicalUser.class, UserRenderer.get());
rendererService.registerRenderer(BasicUser.class, UserRenderer.get());
return rendererService;
}
@Override
@Bean
public IHtmlNotificationCssService htmlNotificationCssService() throws ServiceException {
IHtmlNotificationCssService service = super.htmlNotificationCssService();
service.registerStyles(IWicketNotificationDescriptor.DEFAULT_NOTIFICATION_VARIATION, NotificationLessCssResourceReference.get());
return service;
}
}