Guest User

Untitled

a guest
Dec 20th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.51 KB | None | 0 0
  1. @Service
  2. public class Utils {
  3.  
  4. @Autowired
  5. private FleetServices fleetServices;
  6. @Autowired
  7. private CarServices carServices;
  8.  
  9. public static long stream(InputStream input, OutputStream output) throws IOException {
  10. try (
  11. ReadableByteChannel inputChannel = Channels.newChannel(input);
  12. WritableByteChannel outputChannel = Channels.newChannel(output);
  13. ) {
  14. ByteBuffer buffer = ByteBuffer.allocateDirect(10240);
  15. long size = 0;
  16.  
  17. while (inputChannel.read(buffer) != -1) {
  18. buffer.flip();
  19. size += outputChannel.write(buffer);
  20. buffer.clear();
  21. }
  22. return size;
  23. }
  24. }
  25.  
  26. @Transactional
  27. public void unSetEditingFleet(Integer idFleet) throws QueryException {
  28. try {
  29. fleetServices.setEditingFleet(idFleet, false);
  30. for(Car car : carServices.findByFleetIdFleet(idFleet)){
  31. carServices.setEditingCar(car.getIdCar(), false); //Unset cars associated with the fleet
  32. }
  33. }catch(Exception e){
  34. throw new QueryException(e);
  35. }
  36. }
  37.  
  38. @Transactional
  39. public void setEditingFleet(User user, FleetForm fleetForm) throws QueryException {
  40. try{
  41. fleetServices.setEditingFleet(fleetForm.getIdFleet(), true);
  42. for(Car car : carServices.findByFleetIdFleet(fleetForm.getIdFleet())){
  43. carServices.setEditingCar(car.getIdCar(), true); //Set cars associated with the fleet
  44. throw new Exception("fleet has been restored Exception");
  45. }
  46. }catch(Exception e){
  47. throw new QueryException(e);
  48. }
  49. }
  50. }
  51.  
  52. @Component
  53. @Aspect
  54. public class AOP {
  55.  
  56. @Autowired
  57. private FleetServices fleetServices;
  58. @Autowired
  59. private CarServices carServices;
  60. @Autowired
  61. private Utils utils;
  62.  
  63. @Before("@annotation(SetEditingFleet) && args(user, fleetForm)")
  64. public void setEditingFleet(User user, FleetForm fleetForm) throws QueryException {
  65. utils.setEditingFleet(user, fleetForm);
  66. }
  67.  
  68. @After("@annotation(UnSetEditingFleet) && args(user, fleetForm)")
  69. public void unSetEditingFleet(User user, FleetForm fleetForm) throws QueryException {
  70. utils.unSetEditingFleet(fleetForm.getIdFleet());
  71. }
  72. }
  73.  
  74. @Service
  75. public class FleetAndCarServicesImpl implements FleetAndCarServices {
  76.  
  77. @Autowired
  78. private DatabaseFleetsAndCarsServices databaseFleetsAndCarsServices;
  79. @Autowired
  80. private DatabaseAcquisitionServices databaseAcquisitionServices;
  81. @Autowired
  82. private DatabaseAdministrationServices databaseAdministrationServices;
  83. @Autowired
  84. private MakeName makeName;
  85. @Autowired
  86. private MakeAcquisitionPath makeAcquisitionPath;
  87. @Autowired
  88. private Environment env;
  89. private static String PROPERTY_NAME_FILESYSTEM_BASEPATH = "filesystem.basepath";
  90.  
  91. @Override
  92. @SetEditingFleet
  93. public void modifyFleet(User user, FleetForm fleetForm) throws Exception{
  94. databaseFleetsAndCarsServices.modifyFleet(user, fleetForm);
  95. }
  96. }
  97.  
  98. @Service
  99. public class FleetAndCarServicesImpl implements FleetAndCarServices {
  100.  
  101. @Autowired
  102. private DatabaseFleetsAndCarsServices databaseFleetsAndCarsServices;
  103. @Autowired
  104. private DatabaseAcquisitionServices databaseAcquisitionServices;
  105. @Autowired
  106. private DatabaseAdministrationServices databaseAdministrationServices;
  107. @Autowired
  108. private MakeName makeName;
  109. @Autowired
  110. private MakeAcquisitionPath makeAcquisitionPath;
  111. @Autowired
  112. private Environment env;
  113. private static String PROPERTY_NAME_FILESYSTEM_BASEPATH = "filesystem.basepath";
  114.  
  115. @Override
  116. public void modifyFleet(User user, FleetForm fleetForm) throws Exception{
  117. databaseFleetsAndCarsServices.modifyFleet(user, fleetForm);
  118. }
  119. }
  120.  
  121. @EnableWebSecurity //It allows use of @AuthenticationPrincipal to retrieve current user
  122. @EnableAspectJAutoProxy
  123. @EnableAsync
  124. @EnableWebMvc
  125. @Configuration
  126. @PropertySource(value = { "classpath:application.properties" })
  127. @ComponentScan({ "com.*" })
  128. @EnableTransactionManagement
  129. @Import({ SecurityConfig.class, SpringMvcInitializer.class})
  130. @EnableJpaRepositories("com.repository")
  131. public class AppConfig extends WebMvcConfigurerAdapter implements AsyncConfigurer{
  132. @Autowired
  133. private Environment env;
  134. @Autowired
  135. private MyAsyncUncaughtExceptionHandler myAsyncUncaughtExceptionHandler;
  136.  
  137. private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
  138. private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
  139. private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
  140. private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
  141.  
  142. private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
  143. // private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
  144. private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";
  145. private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
  146.  
  147. /**
  148. * This method allows use of . with pathparam into web services, otherwise it truncate after dot.
  149. * @param configurer
  150. */
  151. public void configurePathMatch(PathMatchConfigurer configurer) {
  152. configurer.setUseSuffixPatternMatch(false);
  153. }
  154.  
  155. /**
  156. * This and the next methods are used to avoid exception while jackson mapping the entity, so fields are setted with null value
  157. * unless use Hibernate.initialize
  158. * @return
  159. */
  160. public MappingJackson2HttpMessageConverter jacksonMessageConverter(){
  161. MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
  162.  
  163. ObjectMapper mapper = new ObjectMapper();
  164. //Registering Hibernate4Module to support lazy objects
  165. mapper.registerModule(new Hibernate4Module());
  166.  
  167. messageConverter.setObjectMapper(mapper);
  168. return messageConverter;
  169.  
  170. }
  171. /**
  172. * Used for spring security
  173. * @return
  174. */
  175. @Bean
  176. public SpringSecurityDialect springSecurityDialect() {
  177. SpringSecurityDialect dialect = new SpringSecurityDialect();
  178. return dialect;
  179. }
  180.  
  181. @Override
  182. public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
  183. //Here we add our custom-configured HttpMessageConverter
  184. converters.add(jacksonMessageConverter());
  185. super.configureMessageConverters(converters);
  186. }
  187.  
  188. private Properties getHibernateProperties() {
  189. Properties properties = new Properties();
  190. properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
  191. // properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
  192. properties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_FORMAT_SQL));
  193. properties.put("hibernate.enable_lazy_load_no_trans",true);
  194. return properties;
  195. }
  196.  
  197. @Bean(name = "dataSource")
  198. public BasicDataSource dataSource() {
  199. BasicDataSource ds = new BasicDataSource();
  200. ds.setValidationQuery("SELECT 1");
  201. ds.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
  202. ds.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
  203. ds.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
  204. ds.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
  205. return ds;
  206. }
  207.  
  208. @Bean
  209. public ServletContextTemplateResolver TemplateResolver(){
  210. ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
  211. resolver.setPrefix("/WEB-INF/templates/pages/");
  212. resolver.setSuffix(".html");
  213. resolver.setTemplateMode("LEGACYHTML5");
  214. resolver.setCacheable(false);
  215. return resolver;
  216. /*ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
  217. resolver.setPrefix("/WEB-INF/pages/");
  218. resolver.setSuffix(".html");
  219. resolver.setTemplateMode("HTML5");
  220. return resolver;*/
  221. }
  222.  
  223. @Bean
  224. public SpringTemplateEngine templateEngine(){
  225. SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  226. templateEngine.setTemplateResolver(TemplateResolver());
  227. templateEngine.addDialect(springSecurityDialect());
  228. return templateEngine;
  229. }
  230.  
  231.  
  232. @Bean
  233. public ThymeleafViewResolver viewResolver() {
  234. ThymeleafViewResolver resolver = new ThymeleafViewResolver();
  235. resolver.setTemplateEngine(templateEngine());
  236. resolver.setOrder(1);
  237. resolver.setViewNames(new String[]{"*", "js/*", "template/*"});
  238. return resolver;
  239. }
  240.  
  241. /**
  242. * Register multipartResolver for file upload
  243. * @return
  244. */
  245. @Bean
  246. public CommonsMultipartResolver multipartResolver() {
  247. CommonsMultipartResolver resolver=new CommonsMultipartResolver();
  248. resolver.setDefaultEncoding("utf-8");
  249. return resolver;
  250. }
  251.  
  252. /**
  253. * Allow use of bootstrap
  254. */
  255. @Override
  256. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  257. registry.addResourceHandler("/static/**")
  258. .addResourceLocations("/static/");
  259. }
  260.  
  261. /**
  262. * Allow use of JPA
  263. */
  264. @Bean
  265. public JpaTransactionManager transactionManager() {
  266. JpaTransactionManager transactionManager = new JpaTransactionManager();
  267. transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
  268. return transactionManager;
  269. }
  270. @Bean
  271. public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  272. LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
  273. entityManagerFactoryBean.setDataSource(dataSource());
  274. entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
  275. entityManagerFactoryBean.setPackagesToScan(env.
  276. getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
  277. entityManagerFactoryBean.setJpaProperties(getHibernateProperties());
  278. return entityManagerFactoryBean;
  279. }
  280.  
  281. @Override
  282. public Executor getAsyncExecutor() {
  283. ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
  284. executor.setCorePoolSize(10);
  285. executor.setMaxPoolSize(100);
  286. executor.setQueueCapacity(100);
  287. executor.initialize();
  288. return executor;
  289. }
  290.  
  291. public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
  292. return myAsyncUncaughtExceptionHandler;
  293. }
  294.  
  295. //Concurrent Session Control. Necessary for maximumSessions(1) into securityConfig
  296. @Bean
  297. public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() {
  298. return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher());
  299. }
  300. }
  301.  
  302. @Service
  303. public class Utils {
  304.  
  305. @Autowired
  306. private FleetServices fleetServices;
  307. @Autowired
  308. private CarServices carServices;
  309.  
  310. public static long stream(InputStream input, OutputStream output) throws IOException {
  311. try (
  312. ReadableByteChannel inputChannel = Channels.newChannel(input);
  313. WritableByteChannel outputChannel = Channels.newChannel(output);
  314. ) {
  315. ByteBuffer buffer = ByteBuffer.allocateDirect(10240);
  316. long size = 0;
  317.  
  318. while (inputChannel.read(buffer) != -1) {
  319. buffer.flip();
  320. size += outputChannel.write(buffer);
  321. buffer.clear();
  322. }
  323. return size;
  324. }
  325. }
  326.  
  327. @Test
  328. @Transactional
  329. public void unSetEditingFleet(Integer idFleet) throws QueryException {
  330. try {
  331. fleetServices.setEditingFleet(idFleet, false);
  332. for(Car car : carServices.findByFleetIdFleet(idFleet)){
  333. carServices.setEditingCar(car.getIdCar(), false); //Unset cars associated with the fleet
  334. }
  335. }catch(Exception e){
  336. throw new QueryException(e);
  337. }
  338. }
  339.  
  340. @Test
  341. @Transactional
  342. public void setEditingFleet(User user, FleetForm fleetForm) throws QueryException {
  343. try{
  344. fleetServices.setEditingFleet(fleetForm.getIdFleet(), true);
  345. for(Car car : carServices.findByFleetIdFleet(fleetForm.getIdFleet())){
  346. carServices.setEditingCar(car.getIdCar(), true); //Set cars associated with the fleet
  347. throw new Exception("fleet has been restored Exception");
  348. }
  349. }catch(Exception e){
  350. throw new QueryException(e);
  351. }
  352. }
  353. }
Add Comment
Please, Sign In to add comment