diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml index e4abb919..167bf26d 100644 --- a/.idea/dataSources.local.xml +++ b/.idea/dataSources.local.xml @@ -2,7 +2,7 @@ - + " diff --git a/SECURITY.md b/SECURITY.md index 1a233404..c6509e35 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,10 +4,10 @@ These versions of the project are currently being supported with security updates. -| Version | Supported | -| -------- | ------------------ | -| 2.3.x | :white_check_mark: | -| < 2.3.25 | :x: | +| Version | Supported | +|---------|-----------| +| 2.3.70 | #361 | +| 2.3.70 | #362 | ## Reporting a Vulnerability diff --git a/pom.xml b/pom.xml index 2148e8f0..fdf6c750 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.woehlke simpleworklist - 2.3.66-SNAPSHOT + 2.3.71-SNAPSHOT jar @@ -80,7 +80,6 @@ 3.1.0.M2 3.5.0 - 3.6.0 2.9.3 @@ -94,7 +93,7 @@ 2.63.0 2.4.21 2.2 - 1.14.2 + 1.15.3 6.46.0 @@ -109,8 +108,6 @@ true - - 3.0.0-M6 @@ -129,11 +126,6 @@ - - jcenter - JCenter Repository - https://jcenter.bintray.com/ - central Central @@ -144,23 +136,6 @@ Sonatype Repository https://oss.sonatype.org/content/repositories/releases/ - apache-releases Apache Releases @@ -186,13 +161,6 @@ WSO2 Public Repository https://maven.wso2.org/nexus/content/repositories/public/ - adobe-public AdobePublic Repository @@ -205,11 +173,6 @@ - - jcenter - JCenter Repository - https://jcenter.bintray.com/ - central Central @@ -220,31 +183,6 @@ Sonatype Repository https://oss.sonatype.org/content/repositories/releases/ - apache-releases Apache Releases @@ -270,13 +208,6 @@ WSO2 Public Repository https://maven.wso2.org/nexus/content/repositories/public/ - adobe-public AdobePublic Repository diff --git a/src/main/java/org/woehlke/java/simpleworklist/application/framework/AuditModel.java b/src/main/java/org/woehlke/java/simpleworklist/application/framework/AuditModel.java index 94693f8d..55029302 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/application/framework/AuditModel.java +++ b/src/main/java/org/woehlke/java/simpleworklist/application/framework/AuditModel.java @@ -19,10 +19,8 @@ value = {"rowCreatedAt", "rowUpdatedAt"}, allowGetters = true ) -//@ToString @Getter @Setter -//@EqualsAndHashCode(callSuper=false) public class AuditModel extends Object implements Serializable { private static final long serialVersionUID = 4399373914714726911L; diff --git a/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextRefreshedListener.java b/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextRefreshedListener.java index 23c2f4c3..65800741 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextRefreshedListener.java +++ b/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextRefreshedListener.java @@ -6,7 +6,7 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; -import org.woehlke.java.simpleworklist.domain.search.SearchService; +import org.woehlke.java.simpleworklist.domain.db.search.service.SearchService; /** diff --git a/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextStartedListener.java b/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextStartedListener.java index 6d8c0876..048037c1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextStartedListener.java +++ b/src/main/java/org/woehlke/java/simpleworklist/application/listener/ApplicationContextStartedListener.java @@ -5,7 +5,7 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextStartedEvent; import org.springframework.stereotype.Component; -import org.woehlke.java.simpleworklist.domain.search.SearchService; +import org.woehlke.java.simpleworklist.domain.db.search.service.SearchService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/org/woehlke/java/simpleworklist/config/SimpleworklistProperties.java b/src/main/java/org/woehlke/java/simpleworklist/config/SimpleworklistProperties.java index 33ec5b5b..7c2a3cde 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/config/SimpleworklistProperties.java +++ b/src/main/java/org/woehlke/java/simpleworklist/config/SimpleworklistProperties.java @@ -7,7 +7,6 @@ import org.springframework.validation.annotation.Validated; import javax.validation.Valid; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Component @@ -126,14 +125,6 @@ public static class WebSecurity { @NotNull private Integer strengthBCryptPasswordEncoder; - /* - @NotNull - private Integer hashWidth; - - @NotBlank - private String secret; - */ - } } diff --git a/src/main/java/org/woehlke/java/simpleworklist/config/WebMvcConfig.java b/src/main/java/org/woehlke/java/simpleworklist/config/WebMvcConfig.java index 65732f19..627bb4f2 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/config/WebMvcConfig.java +++ b/src/main/java/org/woehlke/java/simpleworklist/config/WebMvcConfig.java @@ -19,6 +19,7 @@ import org.springframework.web.servlet.i18n.SessionLocaleResolver; import org.thymeleaf.dialect.springdata.SpringDataDialect; +import javax.validation.constraints.NotNull; import java.util.Locale; import java.util.Properties; @@ -102,16 +103,16 @@ public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); } - public void addInterceptors(InterceptorRegistry registry) { + public void addInterceptors(@NotNull InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } - public void addViewControllers(ViewControllerRegistry registry) { + public void addViewControllers(@NotNull ViewControllerRegistry registry) { registry.addViewController("/").setViewName("redirect:/taskstate/inbox"); registry.addViewController("/home").setViewName("redirect:/taskstate/inbox"); } - public void addResourceHandlers(ResourceHandlerRegistry registry) { + public void addResourceHandlers(@NotNull ResourceHandlerRegistry registry) { for(String h : simpleworklistProperties.getWebMvc().getStaticResourceHandler()){ String location = "classpath:/static"+h+"/"; registry.addResourceHandler(h+"/*").addResourceLocations(location); diff --git a/src/main/java/org/woehlke/java/simpleworklist/config/WebSecurityConfig.java b/src/main/java/org/woehlke/java/simpleworklist/config/WebSecurityConfig.java index 980a881b..a04ea86e 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/config/WebSecurityConfig.java +++ b/src/main/java/org/woehlke/java/simpleworklist/config/WebSecurityConfig.java @@ -20,7 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.woehlke.java.simpleworklist.domain.user.access.ApplicationUserDetailsService; +import org.woehlke.java.simpleworklist.domain.security.access.ApplicationUserDetailsService; @Configuration @@ -54,16 +54,6 @@ public WebSecurityConfig( this.simpleworklistProperties = simpleworklistProperties; } - /* - @Override - public void init(WebSecurity builder) throws Exception { - - } - @Override - public void configure(WebSecurity builder) throws Exception { - } - */ - @Override protected void configure(HttpSecurity http) throws Exception { http @@ -102,21 +92,13 @@ public UserDetailsService userDetailsService(){ } /** - * https://bcrypt-generator.com/ + * @see bcrypt-generator.com * @return PasswordEncoder encoder */ @Bean public PasswordEncoder encoder(){ int strength = simpleworklistProperties.getWebSecurity().getStrengthBCryptPasswordEncoder(); return new BCryptPasswordEncoder(strength); - /* - CharSequence secret=this.simpleworklistProperties.getWebSecurity().getSecret(); - int iterations=this.simpleworklistProperties.getWebSecurity().getIterations(); - int hashWidth=this.simpleworklistProperties.getWebSecurity().getHashWidth(); - Pbkdf2PasswordEncoder encoder = (new Pbkdf2PasswordEncoder(secret,iterations,hashWidth)); - encoder.setEncodeHashAsBase64(true); - return encoder; - */ } @Bean diff --git a/src/main/java/org/woehlke/java/simpleworklist/application/framework/AbstractController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/AbstractController.java similarity index 64% rename from src/main/java/org/woehlke/java/simpleworklist/application/framework/AbstractController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/AbstractController.java index 436b99cb..9994b5ee 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/application/framework/AbstractController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/AbstractController.java @@ -1,27 +1,28 @@ -package org.woehlke.java.simpleworklist.application.framework; +package org.woehlke.java.simpleworklist.domain; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.SessionAttributes; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; -import org.woehlke.java.simpleworklist.domain.breadcrumb.BreadcrumbService; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.BreadcrumbService; import org.woehlke.java.simpleworklist.config.SimpleworklistProperties; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.task.TaskEnergy; -import org.woehlke.java.simpleworklist.domain.task.TaskTime; -import org.woehlke.java.simpleworklist.domain.context.ContextService; -import org.woehlke.java.simpleworklist.domain.project.ProjectService; -import org.woehlke.java.simpleworklist.domain.chat.ChatMessageService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountService; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.db.data.context.ContextService; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageService; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountService; import org.springframework.beans.factory.annotation.Autowired; -import org.woehlke.java.simpleworklist.domain.user.access.UserAuthorizationService; -import org.woehlke.java.simpleworklist.domain.user.login.UserAccountLoginSuccessService; +import org.woehlke.java.simpleworklist.domain.security.access.UserAuthorizationService; +import org.woehlke.java.simpleworklist.domain.security.login.LoginSuccessService; import javax.validation.constraints.NotNull; import java.util.ArrayList; @@ -29,7 +30,7 @@ import java.util.Locale; import static java.util.Locale.GERMAN; -import static org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState.*; +import static org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState.*; /** * Created by tw on 14.02.16. @@ -56,7 +57,7 @@ public abstract class AbstractController { protected ChatMessageService chatMessageService; @Autowired - protected UserAccountLoginSuccessService userAccountLoginSuccessService; + protected LoginSuccessService loginSuccessService; @Autowired protected ContextService contextService; @@ -149,7 +150,7 @@ public final boolean refreshMessagePage(){ } protected UserAccount getUser() { - return this.userAccountLoginSuccessService.retrieveCurrentUser(); + return this.loginSuccessService.retrieveCurrentUser(); } protected Context getContext(@NotNull final UserSessionBean userSession){ @@ -184,6 +185,47 @@ protected UserSessionBean updateUserSession(UserSessionBean userSession){ return userSession; } + protected Project addProjectFromTaskToModel(Task task, Model model){ + Project thisProject; + if (task.getProject() == null || task.getProject().getId() == null || task.getProject().getId() == 0L) { + thisProject = new Project(); + thisProject.setId(0L); + } else { + thisProject = task.getProject(); + } + model.addAttribute("thisProject", thisProject); + Project lastProject; + if (task.getLastProject() == null || task.getLastProject().getId() == null || task.getLastProject().getId() == 0L) { + lastProject = new Project(); + lastProject.setId(0L); + } else { + lastProject = task.getLastProject(); + } + model.addAttribute("lastProject", lastProject); + return thisProject; + } + + protected Task addProject(Task task){ + Task persistentTask = taskService.findOne(task.getId()); + if (task.getProject() == null || task.getProject().getId() == null || task.getProject().getId() == 0L) { + persistentTask.setProject(null); + if (persistentTask.getProject() == null || persistentTask.getProject().getId() == null || persistentTask.getProject().getId() == 0L) { + persistentTask.setLastProject(null); + } else { + persistentTask.setLastProject(persistentTask.getProject()); + } + } else { + persistentTask.setProject(task.getProject()); + if (persistentTask.getProject() == null || persistentTask.getProject().getId() == null || persistentTask.getProject().getId() == 0L) { + persistentTask.setLastProject(null); + } else { + persistentTask.setLastProject(persistentTask.getProject()); + } + } + persistentTask.merge(task); + return persistentTask; + } + /* protected Context getContext(UserSessionBean userSession){ UserAccount thisUser = this.getUser(); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/ChatMessageController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/ChatMessageController.java deleted file mode 100644 index e2f791ab..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/ChatMessageController.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.woehlke.java.simpleworklist.domain; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.web.PageableDefault; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; -import org.springframework.validation.ObjectError; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.chat.ChatMessage; -import org.woehlke.java.simpleworklist.domain.chat.ChatMessageForm; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; - -import javax.validation.Valid; -import java.util.Locale; - -/** - * Created by - * on 16.02.2016. - */ -@Slf4j -@Controller -@RequestMapping(path = "/user2user") -public class ChatMessageController extends AbstractController { - - @RequestMapping(path = "/{userId}/messages/", method = RequestMethod.GET) - public final String getLastMessagesBetweenCurrentAndOtherUser( - @PathVariable("userId") UserAccount otherUser, - @PageableDefault(sort = "rowCreatedAt", direction = Sort.Direction.DESC) Pageable request, - @ModelAttribute("userSession") UserSessionBean userSession, - Locale locale, - Model model - ) { - log.info("getLastMessagesBetweenCurrentAndOtherUser"); - Context context = super.getContext(userSession); - UserAccount thisUser = context.getUserAccount(); - model.addAttribute("userSession",userSession); - ChatMessageForm chatMessageForm = new ChatMessageForm(); - Page user2UserMessagePage = chatMessageService.readAllMessagesBetweenCurrentAndOtherUser(thisUser,otherUser,request); - model.addAttribute("newUser2UserMessage", chatMessageForm); - model.addAttribute("otherUser", otherUser); - model.addAttribute("user2UserMessagePage", user2UserMessagePage); - model.addAttribute("refreshMessages",true); - Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForMessagesBetweenCurrentAndOtherUser(locale,userSession); - model.addAttribute("breadcrumb",breadcrumb); - model.addAttribute("userSession", userSession); - return "user/messages/all"; - } - - @RequestMapping(path = "/{userId}/messages/", method = RequestMethod.POST) - public final String sendNewMessageToOtherUser( - @PathVariable("userId") UserAccount otherUser, - @Valid @ModelAttribute("newUser2UserMessage") ChatMessageForm chatMessageForm, - BindingResult result, - @PageableDefault(sort = "rowCreatedAt", direction = Sort.Direction.DESC) Pageable request, - @ModelAttribute("userSession") UserSessionBean userSession, - Locale locale, - Model model - ) { - log.info("sendNewMessageToOtherUser"); - Context context = super.getContext(userSession); - UserAccount thisUser = context.getUserAccount(); - model.addAttribute("userSession",userSession); - Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForMessagesBetweenCurrentAndOtherUser(locale,userSession); - model.addAttribute("breadcrumb",breadcrumb); - if(result.hasErrors()){ - log.info("result.hasErrors"); - for(ObjectError objectError:result.getAllErrors()){ - log.info("result.hasErrors: "+objectError.toString()); - } - Page user2UserMessagePage = chatMessageService.readAllMessagesBetweenCurrentAndOtherUser(thisUser,otherUser,request); - model.addAttribute("otherUser", otherUser); - model.addAttribute("user2UserMessagePage", user2UserMessagePage); - model.addAttribute("userSession", userSession); - return "user/messages/all"; - } else { - chatMessageService.sendNewUserMessage(thisUser, otherUser, chatMessageForm); - model.addAttribute("userSession", userSession); - return "redirect:/user2user/" + otherUser.getId() + "/messages/"; - } - } - -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageRepository.java deleted file mode 100644 index 0b30f667..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageRepository.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.chat; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; - -import java.util.List; - -/** - * Created by Fert on 16.02.2016. - */ -@Repository -public interface ChatMessageRepository extends JpaRepository { - - //TODO: #247 move the JQL Query-String to Entity as Prepared Statement - String JQL = "select m from ChatMessage m " - + "where (m.sender = :thisUser and m.receiver = :otherUser) " - + "or (m.sender = :otherUser and m.receiver = :thisUser)"; - - @Query(JQL) - Page findAllMessagesBetweenCurrentAndOtherUser( - @Param("thisUser") UserAccount thisUser, - @Param("otherUser") UserAccount otherUser, - Pageable request - ); - - List findByReceiverAndReadByReceiver( - UserAccount receiver, - boolean readByReceiver - ); - - List findBySenderAndReceiverAndReadByReceiver( - UserAccount sender, UserAccount receiver, boolean readByReceiver - ); - -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageService.java deleted file mode 100644 index 9e9dc83a..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageService.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.chat; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; - -/** - * Created by tw on 16.02.2016. - */ -public interface ChatMessageService { - - ChatMessage sendNewUserMessage( - UserAccount thisUser, - UserAccount otherUser, - ChatMessageForm chatMessageForm - ); - - int getNumberOfNewIncomingMessagesForUser(UserAccount user); - - Page readAllMessagesBetweenCurrentAndOtherUser( - UserAccount receiver, UserAccount sender, Pageable request - ); - -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageServiceImpl.java deleted file mode 100644 index aae8a7c0..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageServiceImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.chat; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; - -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.List; -import java.util.UUID; - -/** - * Created by tw on 16.02.2016. - */ -@Slf4j -@Service -@Transactional(propagation = Propagation.REQUIRED, readOnly = true) -public class ChatMessageServiceImpl implements ChatMessageService { - - private final ChatMessageRepository userMessageRepository; - - @Autowired - public ChatMessageServiceImpl(ChatMessageRepository userMessageRepository) { - this.userMessageRepository = userMessageRepository; - } - - @Override - @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public ChatMessage sendNewUserMessage( - UserAccount thisUser, - UserAccount otherUser, - ChatMessageForm chatMessageForm - ) { - log.info("sendNewUserMessage"); - ChatMessage m = new ChatMessage(); - m.setSender(thisUser); - m.setReceiver(otherUser); - m.setReadByReceiver(false); - m.setUuid(UUID.randomUUID()); - m.setMessageText(chatMessageForm.getMessageText()); - return userMessageRepository.saveAndFlush(m); - } - - @Override - public int getNumberOfNewIncomingMessagesForUser( - UserAccount receiver - ) { - log.info("getNumberOfNewIncomingMessagesForUser"); - boolean readByReceiver = false; - //TODO: #246 change List to Page - List chatMessageList = - userMessageRepository.findByReceiverAndReadByReceiver(receiver, readByReceiver); - return chatMessageList.size(); - } - - @Override - @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Page readAllMessagesBetweenCurrentAndOtherUser( - UserAccount receiver, - UserAccount sender, - Pageable request - ) { - log.info("readAllMessagesBetweenCurrentAndOtherUser"); - Page user2UserMessagePage = userMessageRepository.findAllMessagesBetweenCurrentAndOtherUser(sender,receiver,request); - for(ChatMessage chatMessage : user2UserMessagePage){ - if((!chatMessage.getReadByReceiver()) && (receiver.getId().longValue()== chatMessage.getReceiver().getId().longValue())){ - chatMessage.setReadByReceiver(true); - userMessageRepository.saveAndFlush(chatMessage); - } - } - return userMessageRepository.findAllMessagesBetweenCurrentAndOtherUser(sender,receiver,request); - } -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/ContextController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ContextController.java similarity index 80% rename from src/main/java/org/woehlke/java/simpleworklist/domain/ContextController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/ContextController.java index b32ccccd..cf11f4e9 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/ContextController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ContextController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -7,10 +7,10 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.context.ContextService; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.context.ContextService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/ProjectIdController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java similarity index 95% rename from src/main/java/org/woehlke/java/simpleworklist/domain/ProjectIdController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java index 9b133e82..3229e7c6 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/ProjectIdController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -11,19 +11,19 @@ import org.springframework.validation.FieldError; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.project.ProjectControllerService; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskEnergy; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.task.TaskTime; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TransformTaskIntoProjektService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectControllerService; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +31,7 @@ import java.util.List; import java.util.Locale; -import static org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState.PROJECTS; +import static org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState.PROJECTS; /** * Created by tw on 14.02.16. @@ -62,7 +62,7 @@ public final String projectTaskAddGet( @ModelAttribute("userSession") UserSessionBean userSession, Locale locale, Model model ) { - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); Task task = new Task(); task.setTaskState(TaskState.INBOX); task.setTaskEnergy(TaskEnergy.NONE); @@ -86,6 +86,7 @@ public final String projectTaskAddGet( model.addAttribute("userSession", userSession); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", false); return "project/id/task/add"; } @@ -101,6 +102,7 @@ public final String projectTaskAddPost( UserAccount userAccount = context.getUserAccount(); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", false); if (result.hasErrors()) { for (ObjectError e : result.getAllErrors()) { log.info(e.toString()); @@ -413,7 +415,7 @@ public final String editTaskGet( Locale locale, Model model ) { log.info("editTaskGet"); - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); Context thisContext = task.getContext(); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale,userSession); @@ -425,6 +427,7 @@ public final String editTaskGet( model.addAttribute("userSession", userSession); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); return "project/id/task/edit"; } @@ -441,6 +444,7 @@ public final String editTaskPost( log.info("editTaskPost"); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); if(task.getTaskState()==TaskState.SCHEDULED && task.getDueDate()==null){ String objectName="task"; String field="dueDate"; @@ -456,11 +460,9 @@ public final String editTaskPost( for (ObjectError e : result.getAllErrors()) { log.warn(e.toString()); } - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); - Task persistentTask = taskService.findOne(taskId); - persistentTask.merge(task); - task = persistentTask; + task = addProject(task); Context thisContext = task.getContext(); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale,userSession); model.addAttribute("breadcrumb", breadcrumb); @@ -475,8 +477,8 @@ public final String editTaskPost( model.addAttribute("userSession", userSession); return "project/id/task/edit"; } else { - task.setProject(thisProject); - Task persistentTask = taskService.findOne(task.getId()); + task.setLastProject(thisProject); + Task persistentTask = addProject(task); persistentTask.merge(task); task = taskService.updatedViaProject(persistentTask); userSession.setLastProjectId(Project.rootProjectId); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/ProjectRootController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java similarity index 93% rename from src/main/java/org/woehlke/java/simpleworklist/domain/ProjectRootController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java index 8b69b889..6d692e75 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/ProjectRootController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -12,26 +12,26 @@ import org.springframework.validation.FieldError; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.project.ProjectControllerService; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskEnergy; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.task.TaskTime; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TransformTaskIntoProjektService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectControllerService; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import javax.validation.Valid; import java.util.List; import java.util.Locale; import java.util.UUID; -import static org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState.PROJECTS; +import static org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState.PROJECTS; @Slf4j @Controller @@ -165,6 +165,7 @@ public final String projectRootTaskAddPost( log.info("/project/root/task/add (POST)"); Context context = super.getContext(userSession); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", false); model.addAttribute("taskstateType",PROJECTS.getType()); if (result.hasErrors()) { for (ObjectError e : result.getAllErrors()) { @@ -195,16 +196,10 @@ public final String editTaskGet( Locale locale, Model model ) { log.info("editTaskGet"); - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); - Project thisProject; - if (task.getContext() == null) { - thisProject = new Project(); - thisProject.setId(0L); - } else { - thisProject = task.getProject(); - } Context thisContext = task.getContext(); + Project thisProject = addProjectFromTaskToModel( task, model ); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(task.getTaskState(),locale,userSession); model.addAttribute("breadcrumb", breadcrumb); model.addAttribute("thisProject", thisProject); //TODO: remove? @@ -214,6 +209,7 @@ public final String editTaskGet( model.addAttribute("userSession", userSession); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); return "project/root/task/edit"; } @@ -229,6 +225,7 @@ public final String editTaskPost( log.info("editTaskPost"); model.addAttribute("taskstateType",PROJECTS.getType()); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); if(task.getTaskState()==TaskState.SCHEDULED && task.getDueDate()==null){ String objectName="task"; String field="dueDate"; @@ -244,14 +241,12 @@ public final String editTaskPost( for (ObjectError e : result.getAllErrors()) { log.warn(e.toString()); } - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); - Task persistentTask = taskService.findOne(taskId); - persistentTask.merge(task); - task = persistentTask; + task = addProject(task); Context thisContext = task.getContext(); - Project thisProject = new Project(); - thisProject.setId(0L); + Project thisProject = addProjectFromTaskToModel( task, model ); + //thisProject.setId(0L); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale,userSession); model.addAttribute("breadcrumb", breadcrumb); model.addAttribute("thisProject", thisProject); //TODO: remove? @@ -266,9 +261,8 @@ public final String editTaskPost( return "project/root/task/edit"; } else { //task.unsetFocus(); - task.setRootProject(); - Task persistentTask = taskService.findOne(task.getId()); - persistentTask.merge(task); + task.setLastProject(null); + Task persistentTask = addProject(task); task = taskService.updatedViaProjectRoot(persistentTask); userSession.setLastProjectId(Project.rootProjectId); userSession.setLastTaskState(task.getTaskState()); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/SearchController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/SearchController.java similarity index 77% rename from src/main/java/org/woehlke/java/simpleworklist/domain/SearchController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/SearchController.java index 55d8fc1b..32ac05d4 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/SearchController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/SearchController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -7,12 +7,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.search.SearchService; -import org.woehlke.java.simpleworklist.domain.search.result.SearchResult; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.search.service.SearchService; +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/UserPasswordRecoveryController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserPasswordRecoveryController.java similarity index 69% rename from src/main/java/org/woehlke/java/simpleworklist/domain/UserPasswordRecoveryController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/UserPasswordRecoveryController.java index 3bdbbea3..bd31bc8c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/UserPasswordRecoveryController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserPasswordRecoveryController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -8,12 +8,12 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountForm; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.passwordrecovery.UserPasswordRecovery; -import org.woehlke.java.simpleworklist.domain.user.passwordrecovery.UserPasswordRecoveryService; -import org.woehlke.java.simpleworklist.domain.user.signup.UserRegistrationForm; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountService; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountForm; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountPasswordRecovery; +import org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery.UserAccountPasswordRecoveryService; +import org.woehlke.java.simpleworklist.domain.db.user.signup.UserAccountRegistrationForm; import org.springframework.beans.factory.annotation.Autowired; @@ -25,12 +25,12 @@ public class UserPasswordRecoveryController { private final UserAccountService userAccountService; - private final UserPasswordRecoveryService userPasswordRecoveryService; + private final UserAccountPasswordRecoveryService userAccountPasswordRecoveryService; @Autowired - public UserPasswordRecoveryController(UserAccountService userAccountService, UserPasswordRecoveryService userPasswordRecoveryService) { + public UserPasswordRecoveryController(UserAccountService userAccountService, UserAccountPasswordRecoveryService userAccountPasswordRecoveryService) { this.userAccountService = userAccountService; - this.userPasswordRecoveryService = userPasswordRecoveryService; + this.userAccountPasswordRecoveryService = userAccountPasswordRecoveryService; } /** @@ -42,37 +42,37 @@ public UserPasswordRecoveryController(UserAccountService userAccountService, Use */ @RequestMapping(path="/resetPassword", method = RequestMethod.GET) public final String passwordForgottenForm(Model model) { - UserRegistrationForm userRegistrationForm = new UserRegistrationForm(); - model.addAttribute("userRegistrationForm", userRegistrationForm); + UserAccountRegistrationForm userAccountRegistrationForm = new UserAccountRegistrationForm(); + model.addAttribute("userAccountRegistrationForm", userAccountRegistrationForm); return "user/resetPassword/resetPasswordForm"; } /** * If email-address exists, send email with Link for password-Reset. * - * @param userRegistrationForm + * @param userAccountRegistrationForm * @param result * @param model * @return info page if without errors or formular again displaying error messages. */ @RequestMapping(path="/resetPassword", method = RequestMethod.POST) public final String passwordForgottenPost( - @Valid UserRegistrationForm userRegistrationForm, + @Valid UserAccountRegistrationForm userAccountRegistrationForm, BindingResult result, Model model ) { if (result.hasErrors()) { log.info("----------------------"); - log.info(userRegistrationForm.toString()); + log.info(userAccountRegistrationForm.toString()); log.info(result.toString()); log.info(model.toString()); log.info("----------------------"); return "user/resetPassword/resetPasswordForm"; } else { - log.info(userRegistrationForm.toString()); + log.info(userAccountRegistrationForm.toString()); log.info(result.toString()); log.info(model.toString()); - if (userAccountService.findByUserEmail(userRegistrationForm.getEmail()) == null) { + if (userAccountService.findByUserEmail(userAccountRegistrationForm.getEmail()) == null) { String objectName = "userRegistrationForm"; String field = "email"; String defaultMessage = "This Email is not registered."; @@ -80,7 +80,7 @@ public final String passwordForgottenPost( result.addError(e); return "user/resetPassword/resetPasswordForm"; } else { - userPasswordRecoveryService.passwordRecoverySendEmailTo(userRegistrationForm.getEmail()); + userAccountPasswordRecoveryService.passwordRecoverySendEmailTo(userAccountRegistrationForm.getEmail()); return "user/resetPassword/resetPasswordSentMail"; } } @@ -98,12 +98,12 @@ public final String enterNewPasswordFormular( @PathVariable String confirmId, Model model ) { - UserPasswordRecovery oUserPasswordRecovery = userPasswordRecoveryService.findByToken(confirmId); - if (oUserPasswordRecovery != null) { - userPasswordRecoveryService.passwordRecoveryClickedInEmail(oUserPasswordRecovery); - UserAccount ua = userAccountService.findByUserEmail(oUserPasswordRecovery.getEmail()); + UserAccountPasswordRecovery oUserAccountPasswordRecovery = userAccountPasswordRecoveryService.findByToken(confirmId); + if (oUserAccountPasswordRecovery != null) { + userAccountPasswordRecoveryService.passwordRecoveryClickedInEmail(oUserAccountPasswordRecovery); + UserAccount ua = userAccountService.findByUserEmail(oUserAccountPasswordRecovery.getEmail()); UserAccountForm userAccountForm = new UserAccountForm(); - userAccountForm.setUserEmail(oUserPasswordRecovery.getEmail()); + userAccountForm.setUserEmail(oUserAccountPasswordRecovery.getEmail()); userAccountForm.setUserFullname(ua.getUserFullname()); model.addAttribute("userAccountForm", userAccountForm); return "user/resetPassword/resetPasswordConfirmed"; @@ -128,12 +128,12 @@ public final String enterNewPasswordPost( @PathVariable String confirmId, Model model ) { - UserPasswordRecovery o = userPasswordRecoveryService.findByToken(confirmId); + UserAccountPasswordRecovery o = userAccountPasswordRecoveryService.findByToken(confirmId); boolean passwordsMatch = userAccountForm.passwordsAreTheSame(); if (o != null) { if (!result.hasErrors() && passwordsMatch) { userAccountService.changeUsersPassword(userAccountForm); - userPasswordRecoveryService.passwordRecoveryDone(o); + userAccountPasswordRecoveryService.passwordRecoveryDone(o); return "user/resetPassword/resetPasswordDone"; } else { if (!passwordsMatch) { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/UserRegistrationController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserRegistrationController.java similarity index 68% rename from src/main/java/org/woehlke/java/simpleworklist/domain/UserRegistrationController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/UserRegistrationController.java index 1293de2f..26786f28 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/UserRegistrationController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserRegistrationController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -9,11 +9,11 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountForm; -import org.woehlke.java.simpleworklist.domain.user.signup.UserRegistration; -import org.woehlke.java.simpleworklist.domain.user.signup.UserRegistrationForm; -import org.woehlke.java.simpleworklist.domain.user.signup.UserRegistrationService; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountService; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountForm; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountRegistration; +import org.woehlke.java.simpleworklist.domain.db.user.signup.UserAccountRegistrationForm; +import org.woehlke.java.simpleworklist.domain.db.user.signup.UserAccountRegistrationService; import javax.validation.Valid; @@ -23,12 +23,12 @@ public class UserRegistrationController { private final UserAccountService userAccountService; - private final UserRegistrationService userRegistrationService; + private final UserAccountRegistrationService userAccountRegistrationService; @Autowired - public UserRegistrationController(UserAccountService userAccountService, UserRegistrationService userRegistrationService) { + public UserRegistrationController(UserAccountService userAccountService, UserAccountRegistrationService userAccountRegistrationService) { this.userAccountService = userAccountService; - this.userRegistrationService = userRegistrationService; + this.userAccountRegistrationService = userAccountRegistrationService; } /** @@ -41,22 +41,22 @@ public UserRegistrationController(UserAccountService userAccountService, UserReg @RequestMapping(path = "/", method = RequestMethod.GET) public final String registerGet(Model model) { log.info("registerGet"); - UserRegistrationForm userRegistrationForm = new UserRegistrationForm(); - model.addAttribute("userRegistrationForm", userRegistrationForm); + UserAccountRegistrationForm userAccountRegistrationForm = new UserAccountRegistrationForm(); + model.addAttribute("userAccountRegistrationForm", userAccountRegistrationForm); return "user/register/registerForm"; } /** * Register new User: Store the Request and send Email for Verification. * - * @param userRegistrationForm UserRegistrationForm + * @param userAccountRegistrationForm UserRegistrationForm * @param result BindingResult * @param model Model * @return info page at success or return to form with error messages. */ @RequestMapping(path = "/", method = RequestMethod.POST) public final String registerPost( - @Valid UserRegistrationForm userRegistrationForm, + @Valid UserAccountRegistrationForm userAccountRegistrationForm, BindingResult result, Model model ) { @@ -64,21 +64,21 @@ public final String registerPost( if (result.hasErrors()) { return "user/register/registerForm"; } else { - userRegistrationService.registrationCheckIfResponseIsInTime(userRegistrationForm.getEmail()); - if (userAccountService.isEmailAvailable(userRegistrationForm.getEmail())) { - if (userRegistrationService.registrationIsRetryAndMaximumNumberOfRetries(userRegistrationForm.getEmail())) { - String objectName = "userRegistrationForm"; + userAccountRegistrationService.registrationCheckIfResponseIsInTime(userAccountRegistrationForm.getEmail()); + if (userAccountService.isEmailAvailable(userAccountRegistrationForm.getEmail())) { + if (userAccountRegistrationService.registrationIsRetryAndMaximumNumberOfRetries(userAccountRegistrationForm.getEmail())) { + String objectName = "userAccountRegistrationForm"; String field = "email"; String defaultMessage = "Maximum Number of Retries reached."; FieldError e = new FieldError(objectName, field, defaultMessage); result.addError(e); return "user/register/registerForm"; } else { - userRegistrationService.registrationSendEmailTo(userRegistrationForm.getEmail()); + userAccountRegistrationService.registrationSendEmailTo(userAccountRegistrationForm.getEmail()); return "user/register/registerConfirmSentMail"; } } else { - String objectName = "userRegistrationForm"; + String objectName = "userAccountRegistrationForm"; String field = "email"; String defaultMessage = "Email is already in use."; FieldError e = new FieldError(objectName, field, defaultMessage); @@ -102,9 +102,9 @@ public final String registerConfirmGet( ) { log.info("registerConfirmGet"); log.info("GET /confirm/" + confirmId); - UserRegistration o = userRegistrationService.findByToken(confirmId); + UserAccountRegistration o = userAccountRegistrationService.findByToken(confirmId); if (o != null) { - userRegistrationService.registrationClickedInEmail(o); + userAccountRegistrationService.registrationClickedInEmail(o); UserAccountForm userAccountForm = new UserAccountForm(); userAccountForm.setUserEmail(o.getEmail()); model.addAttribute("userAccountForm", userAccountForm); @@ -132,17 +132,17 @@ public final String registerConfirmPost( ) { log.info("registerConfirmPost"); log.info("POST /confirm/" + confirmId + " : " + userAccountForm.toString()); - userRegistrationService.registrationCheckIfResponseIsInTime(userAccountForm.getUserEmail()); - UserRegistration oUserRegistration = userRegistrationService.findByToken(confirmId); - if (oUserRegistration != null) { + userAccountRegistrationService.registrationCheckIfResponseIsInTime(userAccountForm.getUserEmail()); + UserAccountRegistration oUserAccountRegistration = userAccountRegistrationService.findByToken(confirmId); + if (oUserAccountRegistration != null) { boolean passwordsMatch = userAccountForm.passwordsAreTheSame(); if (!result.hasErrors() && passwordsMatch) { userAccountService.createUser(userAccountForm); - userRegistrationService.registrationUserCreated(oUserRegistration); + userAccountRegistrationService.registrationUserCreated(oUserAccountRegistration); return "user/register/registerConfirmFinished"; } else { if (!passwordsMatch) { - String objectName = "userAccountForm"; + String objectName = "userAccountRegistrationForm"; String field = "userPassword"; String defaultMessage = "Passwords aren't the same."; FieldError e = new FieldError(objectName, field, defaultMessage); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/UserSelfserviceController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserSelfserviceController.java similarity index 94% rename from src/main/java/org/woehlke/java/simpleworklist/domain/UserSelfserviceController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/UserSelfserviceController.java index e9f48014..98872aa1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/UserSelfserviceController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/UserSelfserviceController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.db; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -15,18 +15,18 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.domain.language.Language; -import org.woehlke.java.simpleworklist.domain.language.UserChangeLanguageForm; -import org.woehlke.java.simpleworklist.domain.user.access.UserAuthorizationService; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.context.NewContextForm; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; -import org.woehlke.java.simpleworklist.domain.user.accountselfservice.UserChangeDefaultContextForm; -import org.woehlke.java.simpleworklist.domain.user.accountselfservice.UserChangeNameForm; -import org.woehlke.java.simpleworklist.domain.user.accountselfservice.UserChangePasswordForm; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.meso.language.Language; +import org.woehlke.java.simpleworklist.domain.meso.language.UserChangeLanguageForm; +import org.woehlke.java.simpleworklist.domain.security.access.UserAuthorizationService; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.db.data.context.NewContextForm; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.db.user.accountselfservice.UserChangeDefaultContextForm; +import org.woehlke.java.simpleworklist.domain.db.user.accountselfservice.UserChangeNameForm; +import org.woehlke.java.simpleworklist.domain.db.user.accountselfservice.UserChangePasswordForm; import javax.validation.Valid; import java.util.List; @@ -388,7 +388,7 @@ public String userLanguageGet( Model model ){ log.info("userLanguageGet"); - UserAccount user = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount user = loginSuccessService.retrieveCurrentUser(); model.addAttribute("thisUser", user); model.addAttribute("languages", Language.list()); model.addAttribute("userChangeLanguageForm",new UserChangeLanguageForm(user.getDefaultLanguage())); @@ -407,7 +407,7 @@ public String userLanguagePost( Model model ){ log.info("userLanguagePost"); - UserAccount user = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount user = loginSuccessService.retrieveCurrentUser(); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForUserChangeLanguage(locale,userSession); model.addAttribute("breadcrumb", breadcrumb); if(result.hasErrors()){ diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/context/Context.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Context.java similarity index 90% rename from src/main/java/org/woehlke/java/simpleworklist/domain/context/Context.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Context.java index 30368a00..cb866b83 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/context/Context.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Context.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.context; +package org.woehlke.java.simpleworklist.domain.db.data; import lombok.*; import org.hibernate.annotations.LazyToOne; @@ -6,7 +6,7 @@ import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; import javax.persistence.*; import javax.persistence.Index; @@ -20,7 +20,7 @@ */ @Entity @Table( - name="context", + name="data_context", uniqueConstraints = { @UniqueConstraint( name="ux_context", @@ -42,10 +42,10 @@ public class Context extends AuditModel implements Serializable, ComparableById< private static final long serialVersionUID = -5035732370606951871L; @Id - @GeneratedValue(generator = "context_generator") + @GeneratedValue(generator = "data_context_generator") @SequenceGenerator( - name = "context_generator", - sequenceName = "context_sequence", + name = "data_context_generator", + sequenceName = "data_context_sequence", initialValue = 1000 ) private Long id; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/project/Project.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Project.java similarity index 81% rename from src/main/java/org/woehlke/java/simpleworklist/domain/project/Project.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Project.java index 426375a6..51257df8 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/project/Project.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Project.java @@ -1,33 +1,30 @@ -package org.woehlke.java.simpleworklist.domain.project; +package org.woehlke.java.simpleworklist.domain.db.data; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import javax.persistence.*; -import javax.persistence.Index; - -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotBlank; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.context.Context; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; @Entity @Table( - name="project", + name="data_project", uniqueConstraints = { @UniqueConstraint( name = "ux_project", - columnNames = {"uuid", "parent_id", "context_id"} + columnNames = {"uuid", "parent_id", "data_context_id"} ) }, indexes = { @Index(name = "ix_project_uuid", columnList = "uuid"), @@ -36,7 +33,6 @@ ) @Getter @Setter -@EqualsAndHashCode(callSuper = true, exclude = {"children","parent"}) @ToString(callSuper = true, exclude = {"children","parent","description"}) public class Project extends AuditModel implements Serializable, ComparableById { @@ -44,17 +40,14 @@ public class Project extends AuditModel implements Serializable, ComparableById< public final static long rootProjectId = 0L; @Id - @GeneratedValue(generator = "project_generator") + @GeneratedValue(generator = "data_project_generator") @SequenceGenerator( - name = "project_generator", - sequenceName = "project_sequence", + name = "data_project_generator", + sequenceName = "data_project_sequence", initialValue = 1000 ) private Long id; - @Version - private Long version; - @ManyToOne( fetch = FetchType.LAZY, optional = true, @@ -75,7 +68,7 @@ public class Project extends AuditModel implements Serializable, ComparableById< CascadeType.REFRESH } ) - @JoinColumn(name = "context_id") + @JoinColumn(name = "data_context_id") @OnDelete(action = OnDeleteAction.NO_ACTION) private Context context; @@ -166,5 +159,19 @@ public Project addOtherProjectToChildren(Project otherProject) { public String out(){ return "Project: "+name+" ("+id+")"; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Project)) return false; + if (!super.equals(o)) return false; + Project project = (Project) o; + return Objects.equals(getParent(), project.getParent()) && Objects.equals(getContext(), project.getContext()) && Objects.equals(getName(), project.getName()) && Objects.equals(getDescription(), project.getDescription()); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), getParent(), getContext(), getName(), getDescription()); + } } diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/Task.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Task.java similarity index 93% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/Task.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Task.java index 78ccc85b..40f9ad7c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/Task.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Task.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data; import java.io.Serializable; import java.util.Date; @@ -24,10 +24,10 @@ import javax.validation.constraints.NotNull; import org.springframework.format.annotation.DateTimeFormat; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; @@ -37,11 +37,11 @@ //TODO: test all three UniqueConstraints @Entity @Table( - name="task", + name="data_task", uniqueConstraints = { @UniqueConstraint( name="ux_task", - columnNames = {"uuid", "context_id" } + columnNames = {"uuid", "data_context_id" } ) }, indexes = { @@ -75,8 +75,8 @@ @NamedQuery( name = "findByTaskStateTrashAndContext", query = "select t from Task t " + - "where t.taskState = org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState.TRASH " + - "or t.taskState = org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState.DELETED " + + "where t.taskState = org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState.TRASH " + + "or t.taskState = org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState.DELETED " + "and t.context = :context", lockMode = LockModeType.READ ) @@ -90,10 +90,10 @@ public class Task extends AuditModel implements Serializable, ComparableById { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectService.java similarity index 80% rename from src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectService.java index 49879432..e03477e1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectService.java @@ -1,10 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.project; - -import java.util.List; +package org.woehlke.java.simpleworklist.domain.db.data.project; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.java.simpleworklist.domain.context.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; + +import java.util.List; public interface ProjectService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectServiceImpl.java similarity index 94% rename from src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectServiceImpl.java index c345143f..6a02ecf0 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/project/ProjectServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/project/ProjectServiceImpl.java @@ -1,23 +1,22 @@ -package org.woehlke.java.simpleworklist.domain.project; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +package org.woehlke.java.simpleworklist.domain.db.data.project; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; - import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskRepository; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskRepository; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; @Slf4j @Service diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskEnergy.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskEnergy.java similarity index 92% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskEnergy.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskEnergy.java index 4bbebff3..b8b61994 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskEnergy.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskEnergy.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data.task; import javax.persistence.Enumerated; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskRepository.java similarity index 88% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskRepository.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskRepository.java index 96337c55..5013406a 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskRepository.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskRepository.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data.task; import java.util.List; @@ -8,9 +8,10 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.data.Context; @Repository public interface TaskRepository extends JpaRepository { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java similarity index 89% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java index f88275d0..37a145fd 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java @@ -1,10 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data.task; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; public interface TaskService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java similarity index 87% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java index 0c752958..de99f87a 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data.task; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -7,16 +7,16 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectRepository; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; @Slf4j @Service @@ -24,16 +24,18 @@ public class TaskServiceImpl implements TaskService { private final TaskRepository taskRepository; + private final ProjectRepository projectRepository; + @Autowired - public TaskServiceImpl(TaskRepository taskRepository ) { + public TaskServiceImpl(TaskRepository taskRepository, ProjectRepository projectRepository) { this.taskRepository = taskRepository; + this.projectRepository = projectRepository; } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) public boolean projectHasNoTasks(Project project) { log.info("projectHasNoTasks"); - //TODO: #244 change List to Page return taskRepository.findByProject(project).isEmpty(); } @@ -58,7 +60,7 @@ public Page findbyTaskstate( @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) public Page findByProject( - @NotNull Project thisProject, @NotNull Pageable request + @NotNull Project thisProject,Pageable request ) { log.info("findByProject: "); log.info("---------------------------------"); @@ -69,7 +71,7 @@ public Page findByProject( @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) - public Page findByRootProject(@NotNull Context context, @NotNull Pageable request) { + public Page findByRootProject( Context context,Pageable request) { log.info("findByRootProject: "); return taskRepository.findByProjectIsNullAndContext(context, request); } @@ -87,8 +89,18 @@ public Task findOne(@Min(1L) long taskId) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task updatedViaTaskstate(@NotNull Task task) { + public Task updatedViaTaskstate(Task task) { log.info("updatedViaTaskstate"); + if(task.getProject() != null){ + Long projectId = task.getProject().getId(); + Project project = projectRepository.getReferenceById(projectId); + task.setProject(project); + } + if(task.getLastProject()!=null){ + Long projectId = task.getLastProject().getId(); + Project project = projectRepository.getReferenceById(projectId); + task.setLastProject(project); + } task = taskRepository.saveAndFlush(task); log.info("persisted: " + task.outTaskstate()); return task; @@ -96,7 +108,7 @@ public Task updatedViaTaskstate(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task updatedViaProject(@NotNull Task task) { + public Task updatedViaProject( @Valid Task task) { log.info("updatedViaProject"); task = taskRepository.saveAndFlush(task); log.info("persisted Task: " + task.outProject()); @@ -105,7 +117,7 @@ public Task updatedViaProject(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task updatedViaProjectRoot(@NotNull Task task) { + public Task updatedViaProjectRoot( @Valid Task task) { log.info("updatedViaProject"); task = taskRepository.saveAndFlush(task); log.info("persisted Task: " + task.outProject()); @@ -114,12 +126,13 @@ public Task updatedViaProjectRoot(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task addToInbox(@NotNull Task task) { + public Task addToInbox( @Valid Task task) { log.info("addToInbox"); task.setUuid(UUID.randomUUID()); task.setRootProject(); task.unsetFocus(); task.setTaskState(TaskState.INBOX); + task.setLastProject(null); long maxOrderIdProject = this.getMaxOrderIdProjectRoot(task.getContext()); task.setOrderIdProject(++maxOrderIdProject); long maxOrderIdTaskState = this.getMaxOrderIdTaskState(task.getTaskState(),task.getContext()); @@ -131,7 +144,7 @@ public Task addToInbox(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task addToProject(@NotNull Task task) { + public Task addToProject( @Valid Task task) { log.info("addToProject"); task.setUuid(UUID.randomUUID()); task.unsetFocus(); @@ -146,7 +159,7 @@ public Task addToProject(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task addToRootProject(@NotNull Task task) { + public Task addToRootProject( @Valid Task task) { log.info("addToRootProject"); task.setUuid(UUID.randomUUID()); task.setRootProject(); @@ -163,7 +176,7 @@ public Task addToRootProject(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToRootProject(@NotNull Task task) { + public Task moveTaskToRootProject( @Valid Task task) { task.moveTaskToRootProject(); long maxOrderIdProject = this.getMaxOrderIdProjectRoot(task.getContext()); task.setOrderIdProject(++maxOrderIdProject); @@ -172,7 +185,7 @@ public Task moveTaskToRootProject(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToAnotherProject(@NotNull Task task, @NotNull Project project) { + public Task moveTaskToAnotherProject( @Valid Task task,@Valid Project project) { boolean okContext = task.hasSameContextAs(project); if(okContext) { task.moveTaskToAnotherProject(project); @@ -188,7 +201,7 @@ public Task moveTaskToAnotherProject(@NotNull Task task, @NotNull Project projec @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void moveAllCompletedToTrash(@NotNull Context context) { + public void moveAllCompletedToTrash( Context context) { long maxOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.TRASH, context @@ -208,7 +221,7 @@ public void moveAllCompletedToTrash(@NotNull Context context) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void emptyTrash(@NotNull Context context) { + public void emptyTrash( Context context) { List taskList = taskRepository.findByTaskStateAndContext( TaskState.TRASH, context @@ -228,7 +241,7 @@ public void emptyTrash(@NotNull Context context) { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) - public long getMaxOrderIdTaskState(@NotNull TaskState taskState, @NotNull Context context) { + public long getMaxOrderIdTaskState( TaskState taskState,Context context) { Task task = taskRepository.findTopByTaskStateAndContextOrderByOrderIdTaskStateDesc( taskState, context @@ -238,7 +251,7 @@ public long getMaxOrderIdTaskState(@NotNull TaskState taskState, @NotNull Contex @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) - public long getMaxOrderIdProject(@NotNull Project project, @NotNull Context context) { + public long getMaxOrderIdProject( Project project,Context context) { Task task = taskRepository.findTopByProjectAndContextOrderByOrderIdProjectDesc( project, context @@ -248,7 +261,7 @@ public long getMaxOrderIdProject(@NotNull Project project, @NotNull Context cont @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = true) - public long getMaxOrderIdProjectRoot(@NotNull Context context) { + public long getMaxOrderIdProjectRoot( Context context) { Task task = taskRepository.findTopByProjectIsNullAndContextOrderByOrderIdProjectDesc( context ); @@ -257,7 +270,7 @@ public long getMaxOrderIdProjectRoot(@NotNull Context context) { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksUpByTaskState(@NotNull Task sourceTask, @NotNull Task destinationTask ) { + public void moveTasksUpByTaskState(Task sourceTask, Task destinationTask ) { TaskState taskState = sourceTask.getTaskState(); Context context = sourceTask.getContext(); final long lowerOrderIdTaskState = destinationTask.getOrderIdTaskState(); @@ -286,7 +299,7 @@ public void moveTasksUpByTaskState(@NotNull Task sourceTask, @NotNull Task desti @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksDownByTaskState(@NotNull Task sourceTask, @NotNull Task destinationTask ) { + public void moveTasksDownByTaskState(Task sourceTask, Task destinationTask ) { log.info("-------------------------------------------------------------------------------"); log.info(" moveTasks DOWN By TaskState: "+sourceTask.getId() +" -> "+ destinationTask.getId()); log.info("-------------------------------------------------------------------------------"); @@ -319,7 +332,7 @@ public void moveTasksDownByTaskState(@NotNull Task sourceTask, @NotNull Task des @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksUpByProjectRoot(@NotNull Task sourceTask, @NotNull Task destinationTask ) { + public void moveTasksUpByProjectRoot(Task sourceTask, Task destinationTask ) { log.info("-------------------------------------------------------------------------------"); log.info(" moveTasks UP By ProjectRoot: "+sourceTask.getId() +" -> "+ destinationTask.getId()); log.info("-------------------------------------------------------------------------------"); @@ -349,7 +362,7 @@ public void moveTasksUpByProjectRoot(@NotNull Task sourceTask, @NotNull Task des @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksDownByProjectRoot(@NotNull Task sourceTask, @NotNull Task destinationTask) { + public void moveTasksDownByProjectRoot(Task sourceTask, Task destinationTask) { log.info("-------------------------------------------------------------------------------"); log.info(" START moveTasks UP By Project Root"); log.info(" "+sourceTask.outProject() +" -> "+ destinationTask.outProject()); @@ -381,7 +394,7 @@ public void moveTasksDownByProjectRoot(@NotNull Task sourceTask, @NotNull Task d @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksUpByProject(@NotNull Task sourceTask, @NotNull Task destinationTask ) { + public void moveTasksUpByProject(Task sourceTask, Task destinationTask ) { Project project = sourceTask.getProject(); log.info("-------------------------------------------------------------------------------"); log.info(" START moveTasks UP By Project("+project.out()+"):"); @@ -414,7 +427,7 @@ public void moveTasksUpByProject(@NotNull Task sourceTask, @NotNull Task destina @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) - public void moveTasksDownByProject(@NotNull Task sourceTask, @NotNull Task destinationTask) { + public void moveTasksDownByProject(Task sourceTask, Task destinationTask) { Project project = sourceTask.getProject(); log.info("-------------------------------------------------------------------------------"); log.info(" START moveTasks DOWN By Project("+project.out()+"):"); @@ -446,7 +459,7 @@ public void moveTasksDownByProject(@NotNull Task sourceTask, @NotNull Task desti @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToInbox(@NotNull Task task) { + public Task moveTaskToInbox(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.INBOX, task.getContext() @@ -460,7 +473,7 @@ public Task moveTaskToInbox(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToToday(@NotNull Task task) { + public Task moveTaskToToday(Task task) { Date now = new Date(); long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.TODAY, @@ -475,7 +488,7 @@ public Task moveTaskToToday(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToNext(@NotNull Task task) { + public Task moveTaskToNext(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.NEXT, task.getContext() @@ -489,7 +502,7 @@ public Task moveTaskToNext(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToWaiting(@NotNull Task task) { + public Task moveTaskToWaiting(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.WAITING, task.getContext() @@ -503,7 +516,7 @@ public Task moveTaskToWaiting(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToSomeday(@NotNull Task task) { + public Task moveTaskToSomeday(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.SOMEDAY, task.getContext() @@ -517,7 +530,7 @@ public Task moveTaskToSomeday(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToFocus(@NotNull Task task) { + public Task moveTaskToFocus(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.FOCUS, task.getContext() @@ -531,7 +544,7 @@ public Task moveTaskToFocus(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToCompleted(@NotNull Task task) { + public Task moveTaskToCompleted(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.COMPLETED, task.getContext() @@ -545,7 +558,7 @@ public Task moveTaskToCompleted(@NotNull Task task) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task moveTaskToTrash(@NotNull Task task) { + public Task moveTaskToTrash(Task task) { long newOrderIdTaskState = this.getMaxOrderIdTaskState( TaskState.TRASH, task.getContext() diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskTime.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskTime.java similarity index 94% rename from src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskTime.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskTime.java index e3c9a098..87693465 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/task/TaskTime.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskTime.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.task; +package org.woehlke.java.simpleworklist.domain.db.data.task; import javax.persistence.Enumerated; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequest.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchRequest.java similarity index 90% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequest.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchRequest.java index a1bdd27f..67d1650c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequest.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchRequest.java @@ -1,11 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.search.request; +package org.woehlke.java.simpleworklist.domain.db.search; import lombok.*; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; -import org.woehlke.java.simpleworklist.domain.context.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Context; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -17,7 +17,7 @@ uniqueConstraints = { @UniqueConstraint( name = "ux_search_request", - columnNames = {"context_id", "searchterm"} + columnNames = {"data_context_id", "searchterm"} ) }, indexes = { @@ -56,7 +56,7 @@ public class SearchRequest extends AuditModel implements Serializable, Comparabl CascadeType.REFRESH } ) - @JoinColumn(name = "context_id") + @JoinColumn(name = "data_context_id") @OnDelete(action = OnDeleteAction.NO_ACTION) private Context context; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResult.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchResult.java similarity index 86% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResult.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchResult.java index c07a7077..02d330c3 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResult.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/SearchResult.java @@ -1,13 +1,12 @@ -package org.woehlke.java.simpleworklist.domain.search.result; +package org.woehlke.java.simpleworklist.domain.db.search; import lombok.*; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.search.request.SearchRequest; -import org.woehlke.java.simpleworklist.domain.task.Task; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; import javax.persistence.*; import java.io.Serializable; @@ -42,10 +41,10 @@ public class SearchResult extends AuditModel implements Serializable, Comparable private static final long serialVersionUID = 1682809351146047764L; @Id - @GeneratedValue(generator = "search_request_generator") + @GeneratedValue(generator = "search_result_generator") @SequenceGenerator( - name = "search_request_generator", - sequenceName = "search_request_sequence", + name = "search_result_generator", + sequenceName = "search_result_sequence", initialValue = 1000 ) private Long id; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestRepository.java similarity index 60% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestRepository.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestRepository.java index 1e22e4d0..f2ea8ed1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestRepository.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestRepository.java @@ -1,7 +1,8 @@ -package org.woehlke.java.simpleworklist.domain.search.request; +package org.woehlke.java.simpleworklist.domain.db.search.request; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.search.SearchRequest; @Repository public interface SearchRequestRepository extends JpaRepository { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestService.java similarity index 52% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestService.java index c7c0f647..aee9e1f3 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestService.java @@ -1,4 +1,6 @@ -package org.woehlke.java.simpleworklist.domain.search.request; +package org.woehlke.java.simpleworklist.domain.db.search.request; + +import org.woehlke.java.simpleworklist.domain.db.search.SearchRequest; public interface SearchRequestService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestServiceImpl.java similarity index 89% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestServiceImpl.java index 24c3f044..1ea9fd0c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/request/SearchRequestServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/request/SearchRequestServiceImpl.java @@ -1,10 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.search.request; +package org.woehlke.java.simpleworklist.domain.db.search.request; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.woehlke.java.simpleworklist.domain.db.search.SearchRequest; import java.util.UUID; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultRepository.java similarity index 61% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultRepository.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultRepository.java index d500c85e..9ebc3c4d 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultRepository.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultRepository.java @@ -1,7 +1,8 @@ -package org.woehlke.java.simpleworklist.domain.search.result; +package org.woehlke.java.simpleworklist.domain.db.search.result; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; @Repository public interface SearchResultRepository extends JpaRepository { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultService.java similarity index 56% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultService.java index 67237e5e..137bbb1a 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultService.java @@ -1,4 +1,6 @@ -package org.woehlke.java.simpleworklist.domain.search.result; +package org.woehlke.java.simpleworklist.domain.db.search.result; + +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; public interface SearchResultService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultServiceImpl.java similarity index 90% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultServiceImpl.java index ad490f10..6bc950b5 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/result/SearchResultServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/result/SearchResultServiceImpl.java @@ -1,10 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.search.result; +package org.woehlke.java.simpleworklist.domain.db.search.result; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; import java.util.UUID; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchService.java new file mode 100644 index 00000000..fdbd7cf6 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchService.java @@ -0,0 +1,18 @@ +package org.woehlke.java.simpleworklist.domain.db.search.service; + +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.search.SearchRequest; +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; + +/** + * Created by tw on 14.02.16. + */ +public interface SearchService { + + SearchResult search(SearchRequest searchRequest); + + SearchResult search(String searchterm, Context context); + + void resetSearchIndex(); + +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchServiceImpl.java similarity index 77% rename from src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchServiceImpl.java index a11effef..93d7b127 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/search/service/SearchServiceImpl.java @@ -1,14 +1,15 @@ -package org.woehlke.java.simpleworklist.domain.search; +package org.woehlke.java.simpleworklist.domain.db.search.service; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.search.request.SearchRequest; -import org.woehlke.java.simpleworklist.domain.search.request.SearchRequestService; -import org.woehlke.java.simpleworklist.domain.search.result.SearchResult; -import org.woehlke.java.simpleworklist.domain.search.result.SearchResultService; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.search.SearchRequest; +import org.woehlke.java.simpleworklist.domain.db.search.SearchResult; +import org.woehlke.java.simpleworklist.domain.db.search.request.SearchRequestService; +import org.woehlke.java.simpleworklist.domain.db.search.result.SearchResultService; /** @@ -21,6 +22,7 @@ public class SearchServiceImpl implements SearchService { private final SearchRequestService searchRequestService; private final SearchResultService searchResultService; + @Autowired public SearchServiceImpl(SearchRequestService searchRequestService, SearchResultService searchResultService) { this.searchRequestService = searchRequestService; this.searchResultService = searchResultService; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccount.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccount.java similarity index 89% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccount.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccount.java index 2a7d1b05..a7f30b72 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccount.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccount.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user; import javax.validation.constraints.Email; @@ -6,9 +6,8 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -//import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.java.simpleworklist.domain.language.Language; -import org.woehlke.java.simpleworklist.domain.context.Context; +import org.woehlke.java.simpleworklist.domain.meso.language.Language; +import org.woehlke.java.simpleworklist.domain.db.data.Context; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; @@ -75,7 +74,7 @@ public class UserAccount extends AuditModel implements Serializable, ComparableB CascadeType.REFRESH } ) - @JoinColumn(name = "default_context_id", nullable=true) + @JoinColumn(name = "default_data_context_id", nullable=true) private Context defaultContext; //@NotNull @@ -117,7 +116,12 @@ public boolean equalsByUuid(UserAccount otherObject) { return super.equalsByMyUuid(otherObject); } - public static UserAccount createUserAccount(final String userEmail, final String userFullname, final String userPassword, Context contexts[]){ + public static UserAccount createUserAccount( + final String userEmail, + final String userFullname, + final String userPassword, + Context[] contexts + ){ Date now = new Date(); UserAccount u = new UserAccount(); u.setUserEmail(userEmail); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessage.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountChatMessage.java similarity index 59% rename from src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessage.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountChatMessage.java index 856df9a6..05eb80be 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessage.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountChatMessage.java @@ -1,11 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.chat; +package org.woehlke.java.simpleworklist.domain.db.user; import lombok.*; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; -//import org.hibernate.validator.constraints.SafeHtml; import org.woehlke.java.simpleworklist.application.framework.AuditModel; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -16,33 +14,41 @@ */ @Entity @Table( - name="user_message", + name="user_account_chat_message", uniqueConstraints = { @UniqueConstraint( - name="ux_user_message", + name="ux_user_account_chat_message", columnNames = {"row_created_at", "user_account_id_sender", "user_account_id_receiver"} ) }, indexes = { - @Index(name = "ix_user_message_uuid", columnList = "uuid"), - @Index(name = "ix_user_message_row_created_at", columnList = "row_created_at") + @Index(name = "ix_user_account_chat_message_uuid", columnList = "uuid"), + @Index(name = "ix_user_account_chat_message_row_created_at", columnList = "row_created_at") } ) +@NamedQueries({ + @NamedQuery( + name = "queryFindAllMessagesBetweenCurrentAndOtherUser", + query = "select m from org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage m " + + "where (m.sender = :thisUser and m.receiver = :otherUser) " + + "or (m.sender = :otherUser and m.receiver = :thisUser) order by m.rowCreatedAt desc" + ) +}) @Getter @Setter @EqualsAndHashCode(callSuper = false) @ToString(callSuper=true) @NoArgsConstructor @AllArgsConstructor -public class ChatMessage extends AuditModel implements Serializable { +public class UserAccountChatMessage extends AuditModel implements Serializable { private static final long serialVersionUID = 4263078228257938175L; @Id - @GeneratedValue(generator = "user_message_generator") + @GeneratedValue(generator = "user_account_chat_message_generator") @SequenceGenerator( - name = "user_message_generator", - sequenceName = "user_message_sequence", + name = "user_account_chat_message_generator", + sequenceName = "user_account_chat_message_sequence", initialValue = 1000 ) private Long id; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPassword.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPassword.java similarity index 93% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPassword.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPassword.java index b825bd3b..d4079082 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPassword.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPassword.java @@ -1,10 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.accountpassword; +package org.woehlke.java.simpleworklist.domain.db.user; import lombok.Getter; import lombok.Setter; import org.woehlke.java.simpleworklist.application.framework.AuditModel; import org.woehlke.java.simpleworklist.application.framework.ComparableById; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecovery.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPasswordRecovery.java similarity index 71% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecovery.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPasswordRecovery.java index 53939e83..b921bf3e 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecovery.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountPasswordRecovery.java @@ -1,8 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.passwordrecovery; +package org.woehlke.java.simpleworklist.domain.db.user; import javax.validation.constraints.Email; import org.woehlke.java.simpleworklist.application.framework.AuditModel; +import org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery.UserAccountPasswordRecoveryStatus; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -11,31 +12,31 @@ @Entity @Table( - name="user_password_recovery", + name="user_account_password_recovery", uniqueConstraints = { @UniqueConstraint( - name="ux_user_password_recovery", + name="ux_user_account_password_recovery", columnNames = { "email" } ), @UniqueConstraint( - name="ux_user_password_recovery_token", + name="ux_user_account_password_recovery_token", columnNames = { "token" } ) }, indexes = { - @Index(name = "ix_user_password_recovery_uuid", columnList = "uuid"), - @Index(name = "ix_user_password_recovery_row_created_at", columnList = "row_created_at") + @Index(name = "ix_user_account_password_recovery_uuid", columnList = "uuid"), + @Index(name = "ix_user_account_password_recovery_row_created_at", columnList = "row_created_at") } ) -public class UserPasswordRecovery extends AuditModel implements Serializable { +public class UserAccountPasswordRecovery extends AuditModel implements Serializable { private static final long serialVersionUID = 6860716425733119940L; @Id - @GeneratedValue(generator = "user_password_recovery_generator") + @GeneratedValue(generator = "user_account_password_recovery_generator") @SequenceGenerator( - name = "user_password_recovery_generator", - sequenceName = "user_password_recovery_sequence", + name = "user_account_password_recovery_generator", + sequenceName = "user_account_password_recovery_sequence", initialValue = 1000 ) private Long id; @@ -52,7 +53,7 @@ public class UserPasswordRecovery extends AuditModel implements Serializable { @NotNull @Column(name = "double_optin_status", nullable = false) @Enumerated(EnumType.ORDINAL) - private UserPasswordRecoveryStatus doubleOptInStatus; + private UserAccountPasswordRecoveryStatus doubleOptInStatus; @NotNull @Column(name = "number_of_retries", nullable = false) @@ -87,11 +88,11 @@ public void setToken(String token) { this.token = token; } - public UserPasswordRecoveryStatus getDoubleOptInStatus() { + public UserAccountPasswordRecoveryStatus getDoubleOptInStatus() { return doubleOptInStatus; } - public void setDoubleOptInStatus(UserPasswordRecoveryStatus doubleOptInStatus) { + public void setDoubleOptInStatus(UserAccountPasswordRecoveryStatus doubleOptInStatus) { this.doubleOptInStatus = doubleOptInStatus; } @@ -106,9 +107,9 @@ public void setNumberOfRetries(Integer numberOfRetries) { @Override public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof UserPasswordRecovery)) return false; + if (!(o instanceof UserAccountPasswordRecovery)) return false; if (!super.equals(o)) return false; - UserPasswordRecovery that = (UserPasswordRecovery) o; + UserAccountPasswordRecovery that = (UserAccountPasswordRecovery) o; return Objects.equals(getId(), that.getId()) && getEmail().equals(that.getEmail()) && getToken().equals(that.getToken()) && diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistration.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountRegistration.java similarity index 72% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistration.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountRegistration.java index d9d8c365..22113aca 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistration.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/UserAccountRegistration.java @@ -1,8 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; +package org.woehlke.java.simpleworklist.domain.db.user; import javax.validation.constraints.Email; import org.woehlke.java.simpleworklist.application.framework.AuditModel; +import org.woehlke.java.simpleworklist.domain.db.user.signup.UserAccountRegistrationStatus; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -12,31 +13,31 @@ @Entity @Table( - name="user_registration", + name="user_account_registration", uniqueConstraints = { @UniqueConstraint( - name="ux_user_registration_recovery", + name="ux_user_account_registration", columnNames = { "email" } ), @UniqueConstraint( - name="ux_user_registration_recovery_token", + name="ux_user_account_registration_token", columnNames = { "token" } ) }, indexes = { - @Index(name = "ix_user_registration_uuid", columnList = "uuid"), - @Index(name = "ix_user_registration_row_created_at", columnList = "row_created_at") + @Index(name = "ix_user_account_registration_uuid", columnList = "uuid"), + @Index(name = "ix_user_account_registration_row_created_at", columnList = "row_created_at") } ) -public class UserRegistration extends AuditModel implements Serializable { +public class UserAccountRegistration extends AuditModel implements Serializable { private static final long serialVersionUID = -1955967514018161878L; @Id - @GeneratedValue(generator = "user_registration_generator") + @GeneratedValue(generator = "user_account_registration_generator") @SequenceGenerator( - name = "user_registration_generator", - sequenceName = "user_registration_sequence", + name = "user_account_registration_generator", + sequenceName = "user_account_registration_sequence", initialValue = 1000 ) private Long id; @@ -53,7 +54,7 @@ public class UserRegistration extends AuditModel implements Serializable { @NotNull @Column(name = "double_optin_status", nullable = false) @Enumerated(EnumType.ORDINAL) - private UserRegistrationStatus doubleOptInStatus; + private UserAccountRegistrationStatus doubleOptInStatus; @NotNull @Column(name = "number_of_retries") @@ -88,11 +89,11 @@ public void setToken(String token) { this.token = token; } - public UserRegistrationStatus getDoubleOptInStatus() { + public UserAccountRegistrationStatus getDoubleOptInStatus() { return doubleOptInStatus; } - public void setDoubleOptInStatus(UserRegistrationStatus doubleOptInStatus) { + public void setDoubleOptInStatus(UserAccountRegistrationStatus doubleOptInStatus) { this.doubleOptInStatus = doubleOptInStatus; } @@ -107,9 +108,9 @@ public void setNumberOfRetries(Integer numberOfRetries) { @Override public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof UserRegistration)) return false; + if (!(o instanceof UserAccountRegistration)) return false; if (!super.equals(o)) return false; - UserRegistration that = (UserRegistration) o; + UserAccountRegistration that = (UserAccountRegistration) o; return Objects.equals(getId(), that.getId()) && getEmail().equals(that.getEmail()) && getToken().equals(that.getToken()) && diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountForm.java similarity index 96% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountForm.java index 63bb4d91..3bb032e0 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user.account; import javax.persistence.Transient; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountRepository.java similarity index 72% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountRepository.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountRepository.java index 642f8da8..0df451a1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountRepository.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountRepository.java @@ -1,7 +1,8 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user.account; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; @Repository public interface UserAccountRepository extends JpaRepository { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountService.java similarity index 81% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountService.java index 9abb30d0..1b060c41 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountService.java @@ -1,9 +1,10 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user.account; import java.util.Map; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; public interface UserAccountService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountServiceImpl.java similarity index 87% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountServiceImpl.java index 937e6944..59dab63c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserAccountServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserAccountServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user.account; import java.util.*; @@ -13,10 +13,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.chat.ChatMessage; -import org.woehlke.java.simpleworklist.domain.context.ContextRepository; -import org.woehlke.java.simpleworklist.domain.chat.ChatMessageRepository; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageRepository; +import org.woehlke.java.simpleworklist.domain.db.data.context.ContextRepository; @Slf4j @Service("userAccountService") @@ -102,8 +103,8 @@ public Map getNewIncomingMessagesForEachOtherUser(UserAccount rec if(receiver.getId().longValue() == sender.getId().longValue()){ newIncomingMessagesForEachOtherUser.put(sender.getId(),0); } else { - List chatMessages = userMessageRepository.findBySenderAndReceiverAndReadByReceiver(sender,receiver,false); - newIncomingMessagesForEachOtherUser.put(sender.getId(), chatMessages.size()); + List userAccountChatMessages = userMessageRepository.findBySenderAndReceiverAndReadByReceiver(sender,receiver,false); + newIncomingMessagesForEachOtherUser.put(sender.getId(), userAccountChatMessages.size()); } } return newIncomingMessagesForEachOtherUser; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserRole.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserRole.java similarity index 78% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserRole.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserRole.java index e327ed35..03b9c936 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/account/UserRole.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/account/UserRole.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.account; +package org.woehlke.java.simpleworklist.domain.db.user.account; import javax.persistence.Enumerated; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordRepository.java new file mode 100644 index 00000000..1d7bd222 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordRepository.java @@ -0,0 +1,9 @@ +package org.woehlke.java.simpleworklist.domain.db.user.accountpassword; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountPassword; + +@Repository +public interface UserAccountPasswordRepository extends JpaRepository { +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordService.java new file mode 100644 index 00000000..05f6c681 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordService.java @@ -0,0 +1,6 @@ +package org.woehlke.java.simpleworklist.domain.db.user.accountpassword; + +import org.springframework.security.core.userdetails.UserDetailsPasswordService; + +public interface UserAccountPasswordService extends UserDetailsPasswordService { +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordServiceImpl.java similarity index 77% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordServiceImpl.java index 1253c60c..76785de4 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountpassword/UserAccountPasswordServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.accountpassword; +package org.woehlke.java.simpleworklist.domain.db.user.accountpassword; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -11,21 +11,21 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.access.UserDetailsDto; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountRepository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountRepository; +import org.woehlke.java.simpleworklist.domain.security.access.UserDetailsDto; @Slf4j @Service @Transactional(propagation = Propagation.REQUIRED, readOnly = true) -public class UserAccountSecurityPasswordServiceImpl implements UserAccountSecurityPasswordService { +public class UserAccountPasswordServiceImpl implements UserAccountPasswordService { private final UserAccountRepository userAccountRepository; private final PasswordEncoder encoder; private final AuthenticationManager authenticationManager; @Autowired - public UserAccountSecurityPasswordServiceImpl(UserAccountRepository userAccountRepository, AuthenticationManager authenticationManager) { + public UserAccountPasswordServiceImpl(UserAccountRepository userAccountRepository, AuthenticationManager authenticationManager) { this.userAccountRepository = userAccountRepository; int strength = 10; this.encoder = new BCryptPasswordEncoder(strength); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeDefaultContextForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeDefaultContextForm.java similarity index 76% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeDefaultContextForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeDefaultContextForm.java index f7cc9e88..a278e082 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeDefaultContextForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeDefaultContextForm.java @@ -1,7 +1,7 @@ -package org.woehlke.java.simpleworklist.domain.user.accountselfservice; +package org.woehlke.java.simpleworklist.domain.db.user.accountselfservice; import lombok.*; -import org.woehlke.java.simpleworklist.domain.context.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Context; import javax.validation.constraints.NotNull; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeNameForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeNameForm.java similarity index 89% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeNameForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeNameForm.java index ee5396e1..9facd794 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangeNameForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangeNameForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.accountselfservice; +package org.woehlke.java.simpleworklist.domain.db.user.accountselfservice; import javax.validation.constraints.NotBlank; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangePasswordForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangePasswordForm.java similarity index 94% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangePasswordForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangePasswordForm.java index 169244cc..a2134e91 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountselfservice/UserChangePasswordForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/accountselfservice/UserChangePasswordForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.accountselfservice; +package org.woehlke.java.simpleworklist.domain.db.user.accountselfservice; import javax.validation.constraints.NotBlank; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageForm.java similarity index 87% rename from src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageForm.java index f413576c..7a311fad 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/chat/ChatMessageForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.chat; +package org.woehlke.java.simpleworklist.domain.db.user.chat; import lombok.*; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageRepository.java new file mode 100644 index 00000000..22ea86fb --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageRepository.java @@ -0,0 +1,42 @@ +package org.woehlke.java.simpleworklist.domain.db.user.chat; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; + +import java.util.List; + +/** + * Created by Fert on 16.02.2016. + */ +@Repository +public interface ChatMessageRepository extends JpaRepository { + + @Query(name="queryFindAllMessagesBetweenCurrentAndOtherUser") + Page findAllMessagesBetweenCurrentAndOtherUser( + @Param("thisUser") UserAccount thisUser, + @Param("otherUser") UserAccount otherUser, + Pageable request + ); + + @Query(name="queryFindAllMessagesBetweenCurrentAndOtherUser") + List findAllMessagesBetweenCurrentAndOtherUser( + @Param("thisUser") UserAccount thisUser, + @Param("otherUser") UserAccount otherUser + ); + + List findByReceiverAndReadByReceiver( + UserAccount receiver, + boolean readByReceiver + ); + + List findBySenderAndReceiverAndReadByReceiver( + UserAccount sender, UserAccount receiver, boolean readByReceiver + ); + +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageService.java new file mode 100644 index 00000000..3fdc7d1d --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageService.java @@ -0,0 +1,29 @@ +package org.woehlke.java.simpleworklist.domain.db.user.chat; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * Created by tw on 16.02.2016. + */ +public interface ChatMessageService { + + int getNumberOfNewIncomingMessagesForUser(UserAccount user); + + Page findAllMessagesBetweenCurrentAndOtherUser( + UserAccount sender, + UserAccount receiver, + Pageable request + ); + + void saveAll(List user2UserMessageList); + + UserAccountChatMessage saveAndFlush(UserAccountChatMessage m); + + List findByReceiverAndReadByReceiver(UserAccount receiver, boolean readByReceiver); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageServiceImpl.java new file mode 100644 index 00000000..c0082c61 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/chat/ChatMessageServiceImpl.java @@ -0,0 +1,72 @@ +package org.woehlke.java.simpleworklist.domain.db.user.chat; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; + +import org.springframework.beans.factory.annotation.Autowired; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Created by tw on 16.02.2016. + */ +@Slf4j +@Service +public class ChatMessageServiceImpl implements ChatMessageService { + + private final ChatMessageRepository userMessageRepository; + + @Autowired + public ChatMessageServiceImpl(ChatMessageRepository userMessageRepository) { + this.userMessageRepository = userMessageRepository; + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = true) + public int getNumberOfNewIncomingMessagesForUser( + UserAccount receiver + ) { + log.info("getNumberOfNewIncomingMessagesForUser"); + boolean readByReceiver = false; + //TODO: #246 change List to Page + List userAccountChatMessageList = + userMessageRepository.findByReceiverAndReadByReceiver(receiver, readByReceiver); + return userAccountChatMessageList.size(); + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) + public Page findAllMessagesBetweenCurrentAndOtherUser( + UserAccount sender, UserAccount receiver, Pageable request + ) { + return userMessageRepository.findAllMessagesBetweenCurrentAndOtherUser(sender, receiver, request); + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) + public void saveAll(List user2UserMessageList) { + userMessageRepository.saveAll(user2UserMessageList); + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) + public UserAccountChatMessage saveAndFlush(UserAccountChatMessage m) { + return userMessageRepository.saveAndFlush(m); + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) + public List findByReceiverAndReadByReceiver(UserAccount receiver, boolean readByReceiver) { + return userMessageRepository.findByReceiverAndReadByReceiver(receiver, readByReceiver); + } + +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryRepository.java new file mode 100644 index 00000000..04ec632b --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryRepository.java @@ -0,0 +1,13 @@ +package org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountPasswordRecovery; + +@Repository +public interface UserAccountPasswordRecoveryRepository extends JpaRepository { + + UserAccountPasswordRecovery findByToken(String token); + + UserAccountPasswordRecovery findByEmail(String email); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryService.java new file mode 100644 index 00000000..6b1b254b --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryService.java @@ -0,0 +1,20 @@ +package org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery; + +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountPasswordRecovery; + +public interface UserAccountPasswordRecoveryService { + + UserAccountPasswordRecovery findByToken(String confirmId); + + boolean passwordRecoveryIsRetryAndMaximumNumberOfRetries(String email); + + void passwordRecoveryCheckIfResponseIsInTime(String email); + + void passwordRecoverySendEmailTo(String email); + + void passwordRecoverySentEmail(UserAccountPasswordRecovery o); + + void passwordRecoveryClickedInEmail(UserAccountPasswordRecovery o); + + void passwordRecoveryDone(UserAccountPasswordRecovery o); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryServiceImpl.java similarity index 59% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryServiceImpl.java index fb536d5e..d7ccba6c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.passwordrecovery; +package org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -10,7 +10,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.woehlke.java.simpleworklist.config.SimpleworklistProperties; -import org.woehlke.java.simpleworklist.domain.user.token.TokenGeneratorService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountPasswordRecovery; +import org.woehlke.java.simpleworklist.domain.db.user.token.TokenGeneratorService; import java.util.Date; import java.util.UUID; @@ -18,39 +19,39 @@ @Slf4j @Service @Transactional(propagation = Propagation.REQUIRED, readOnly = true) -public class UserPasswordRecoveryServiceImpl implements UserPasswordRecoveryService { +public class UserAccountPasswordRecoveryServiceImpl implements UserAccountPasswordRecoveryService { - private final UserPasswordRecoveryRepository userPasswordRecoveryRepository; + private final UserAccountPasswordRecoveryRepository userAccountPasswordRecoveryRepository; private final SimpleworklistProperties simpleworklistProperties; private final TokenGeneratorService tokenGeneratorService; private final JavaMailSender mailSender; @Autowired - public UserPasswordRecoveryServiceImpl(UserPasswordRecoveryRepository userPasswordRecoveryRepository, SimpleworklistProperties simpleworklistProperties, TokenGeneratorService tokenGeneratorService, JavaMailSender mailSender) { - this.userPasswordRecoveryRepository = userPasswordRecoveryRepository; + public UserAccountPasswordRecoveryServiceImpl(UserAccountPasswordRecoveryRepository userAccountPasswordRecoveryRepository, SimpleworklistProperties simpleworklistProperties, TokenGeneratorService tokenGeneratorService, JavaMailSender mailSender) { + this.userAccountPasswordRecoveryRepository = userAccountPasswordRecoveryRepository; this.simpleworklistProperties = simpleworklistProperties; this.tokenGeneratorService = tokenGeneratorService; this.mailSender = mailSender; } @Override - public UserPasswordRecovery findByToken(String token) { - return userPasswordRecoveryRepository.findByToken(token); + public UserAccountPasswordRecovery findByToken(String token) { + return userAccountPasswordRecoveryRepository.findByToken(token); } @Override public boolean passwordRecoveryIsRetryAndMaximumNumberOfRetries(String email) { - UserPasswordRecovery earlierOptIn = userPasswordRecoveryRepository.findByEmail(email); + UserAccountPasswordRecovery earlierOptIn = userAccountPasswordRecoveryRepository.findByEmail(email); return earlierOptIn == null?false:earlierOptIn.getNumberOfRetries() >= simpleworklistProperties.getRegistration().getMaxRetries(); } @Override public void passwordRecoveryCheckIfResponseIsInTime(String email) { - UserPasswordRecovery earlierOptIn = userPasswordRecoveryRepository.findByEmail(email); + UserAccountPasswordRecovery earlierOptIn = userAccountPasswordRecoveryRepository.findByEmail(email); if (earlierOptIn != null) { Date now = new Date(); if ((simpleworklistProperties.getRegistration().getTtlEmailVerificationRequest() + earlierOptIn.getRowCreatedAt().getTime()) < now.getTime()) { - userPasswordRecoveryRepository.delete(earlierOptIn); + userAccountPasswordRecoveryRepository.delete(earlierOptIn); } } } @@ -59,48 +60,48 @@ public void passwordRecoveryCheckIfResponseIsInTime(String email) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public void passwordRecoverySendEmailTo(String email) { - UserPasswordRecovery earlierOptIn = userPasswordRecoveryRepository.findByEmail(email); - UserPasswordRecovery o = new UserPasswordRecovery(); + UserAccountPasswordRecovery earlierOptIn = userAccountPasswordRecoveryRepository.findByEmail(email); + UserAccountPasswordRecovery o = new UserAccountPasswordRecovery(); if (earlierOptIn != null) { o = earlierOptIn; o.increaseNumberOfRetries(); } else { o.setUuid(UUID.randomUUID()); } - o.setDoubleOptInStatus(UserPasswordRecoveryStatus.PASSWORD_RECOVERY_SAVED_EMAIL); + o.setDoubleOptInStatus(UserAccountPasswordRecoveryStatus.PASSWORD_RECOVERY_SAVED_EMAIL); o.setEmail(email); String token = tokenGeneratorService.getToken(); o.setToken(token); log.info("To be saved: " + o.toString()); - o = userPasswordRecoveryRepository.saveAndFlush(o); + o = userAccountPasswordRecoveryRepository.saveAndFlush(o); log.info("Saved: " + o.toString()); this.sendEmailForPasswordReset(o); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void passwordRecoverySentEmail(UserPasswordRecovery o) { - o.setDoubleOptInStatus(UserPasswordRecoveryStatus.PASSWORD_RECOVERY_SENT_EMAIL); + public void passwordRecoverySentEmail(UserAccountPasswordRecovery o) { + o.setDoubleOptInStatus(UserAccountPasswordRecoveryStatus.PASSWORD_RECOVERY_SENT_EMAIL); log.info("about to save: " + o.toString()); - userPasswordRecoveryRepository.saveAndFlush(o); + userAccountPasswordRecoveryRepository.saveAndFlush(o); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void passwordRecoveryClickedInEmail(UserPasswordRecovery o) { - o.setDoubleOptInStatus(UserPasswordRecoveryStatus.PASSWORD_RECOVERY_CLICKED_IN_MAIL); - userPasswordRecoveryRepository.saveAndFlush(o); + public void passwordRecoveryClickedInEmail(UserAccountPasswordRecovery o) { + o.setDoubleOptInStatus(UserAccountPasswordRecoveryStatus.PASSWORD_RECOVERY_CLICKED_IN_MAIL); + userAccountPasswordRecoveryRepository.saveAndFlush(o); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void passwordRecoveryDone(UserPasswordRecovery o) { - o.setDoubleOptInStatus(UserPasswordRecoveryStatus.PASSWORD_RECOVERY_STORED_CHANGED); - o = userPasswordRecoveryRepository.saveAndFlush(o); - userPasswordRecoveryRepository.delete(o); + public void passwordRecoveryDone(UserAccountPasswordRecovery o) { + o.setDoubleOptInStatus(UserAccountPasswordRecoveryStatus.PASSWORD_RECOVERY_STORED_CHANGED); + o = userAccountPasswordRecoveryRepository.saveAndFlush(o); + userAccountPasswordRecoveryRepository.delete(o); } - private void sendEmailForPasswordReset(UserPasswordRecovery o) { + private void sendEmailForPasswordReset(UserAccountPasswordRecovery o) { String urlHost = simpleworklistProperties.getRegistration().getUrlHost(); String mailFrom= simpleworklistProperties.getRegistration().getMailFrom(); boolean success = true; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryStatus.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryStatus.java similarity index 69% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryStatus.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryStatus.java index a0c1bbbc..75101d2c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryStatus.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/passwordrecovery/UserAccountPasswordRecoveryStatus.java @@ -1,9 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.passwordrecovery; +package org.woehlke.java.simpleworklist.domain.db.user.passwordrecovery; import javax.persistence.Enumerated; import java.io.Serializable; -public enum UserPasswordRecoveryStatus implements Serializable { +public enum UserAccountPasswordRecoveryStatus implements Serializable { @Enumerated PASSWORD_RECOVERY_SAVED_EMAIL, diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationForm.java similarity index 81% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationForm.java index 9cc4f739..f950dc35 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; +package org.woehlke.java.simpleworklist.domain.db.user.signup; import lombok.*; @@ -14,7 +14,7 @@ @NoArgsConstructor @EqualsAndHashCode @ToString -public class UserRegistrationForm implements Serializable { +public class UserAccountRegistrationForm implements Serializable { private static final long serialVersionUID = 6864871862706880939L; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationRepository.java new file mode 100644 index 00000000..25228d44 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationRepository.java @@ -0,0 +1,13 @@ +package org.woehlke.java.simpleworklist.domain.db.user.signup; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountRegistration; + +@Repository +public interface UserAccountRegistrationRepository extends JpaRepository { + + UserAccountRegistration findByToken(String token); + + UserAccountRegistration findByEmail(String email); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationService.java new file mode 100644 index 00000000..ffef52cf --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationService.java @@ -0,0 +1,21 @@ +package org.woehlke.java.simpleworklist.domain.db.user.signup; + +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountRegistration; + +public interface UserAccountRegistrationService { + + UserAccountRegistration findByToken(String confirmId); + + boolean registrationIsRetryAndMaximumNumberOfRetries(String email); + + void registrationCheckIfResponseIsInTime(String email); + + void registrationSendEmailTo(String email); + + void registrationSentEmail(UserAccountRegistration o); + + void registrationClickedInEmail(UserAccountRegistration o); + + void registrationUserCreated(UserAccountRegistration o); + +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationServiceImpl.java similarity index 62% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationServiceImpl.java index d393fa43..8655c126 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; +package org.woehlke.java.simpleworklist.domain.db.user.signup; import java.util.Date; import java.util.UUID; @@ -14,40 +14,41 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.woehlke.java.simpleworklist.config.SimpleworklistProperties; -import org.woehlke.java.simpleworklist.domain.user.token.TokenGeneratorService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountRegistration; +import org.woehlke.java.simpleworklist.domain.db.user.token.TokenGeneratorService; @Slf4j @Service @Transactional(propagation = Propagation.REQUIRED, readOnly = true) -public class UserRegistrationServiceImpl implements UserRegistrationService { +public class UserAccountRegistrationServiceImpl implements UserAccountRegistrationService { private final SimpleworklistProperties simpleworklistProperties; - private final UserRegistrationRepository userRegistrationRepository; + private final UserAccountRegistrationRepository userAccountRegistrationRepository; private final TokenGeneratorService tokenGeneratorService; private final JavaMailSender mailSender; @Autowired - public UserRegistrationServiceImpl(SimpleworklistProperties simpleworklistProperties, UserRegistrationRepository userRegistrationRepository, TokenGeneratorService tokenGeneratorService, JavaMailSender mailSender) { + public UserAccountRegistrationServiceImpl(SimpleworklistProperties simpleworklistProperties, UserAccountRegistrationRepository userAccountRegistrationRepository, TokenGeneratorService tokenGeneratorService, JavaMailSender mailSender) { this.simpleworklistProperties = simpleworklistProperties; - this.userRegistrationRepository = userRegistrationRepository; + this.userAccountRegistrationRepository = userAccountRegistrationRepository; this.tokenGeneratorService = tokenGeneratorService; this.mailSender = mailSender; } @Override public boolean registrationIsRetryAndMaximumNumberOfRetries(String email) { - UserRegistration earlierOptIn = userRegistrationRepository.findByEmail(email); + UserAccountRegistration earlierOptIn = userAccountRegistrationRepository.findByEmail(email); return earlierOptIn == null?false:(earlierOptIn.getNumberOfRetries() >= simpleworklistProperties.getRegistration().getMaxRetries()); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public void registrationCheckIfResponseIsInTime(String email) { - UserRegistration earlierOptIn = userRegistrationRepository.findByEmail(email); + UserAccountRegistration earlierOptIn = userAccountRegistrationRepository.findByEmail(email); if (earlierOptIn != null) { Date now = new Date(); if ((simpleworklistProperties.getRegistration().getTtlEmailVerificationRequest() + earlierOptIn.getRowCreatedAt().getTime()) < now.getTime()) { - userRegistrationRepository.delete(earlierOptIn); + userAccountRegistrationRepository.delete(earlierOptIn); } } } @@ -56,52 +57,52 @@ public void registrationCheckIfResponseIsInTime(String email) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public void registrationSendEmailTo(String email) { - UserRegistration earlierOptIn = userRegistrationRepository.findByEmail(email); - UserRegistration o = new UserRegistration(); + UserAccountRegistration earlierOptIn = userAccountRegistrationRepository.findByEmail(email); + UserAccountRegistration o = new UserAccountRegistration(); o.setUuid(UUID.randomUUID()); if (earlierOptIn != null) { o = earlierOptIn; o.increaseNumberOfRetries(); } - o.setDoubleOptInStatus(UserRegistrationStatus.REGISTRATION_SAVED_EMAIL); + o.setDoubleOptInStatus(UserAccountRegistrationStatus.REGISTRATION_SAVED_EMAIL); o.setEmail(email); String token = tokenGeneratorService.getToken(); o.setToken(token); log.info("To be saved: " + o.toString()); - o = userRegistrationRepository.saveAndFlush(o); + o = userAccountRegistrationRepository.saveAndFlush(o); log.info("Saved: " + o.toString()); this.sendEmailToRegisterNewUser(o); } @Override - public UserRegistration findByToken(String confirmId) { - return userRegistrationRepository.findByToken(confirmId); + public UserAccountRegistration findByToken(String confirmId) { + return userAccountRegistrationRepository.findByToken(confirmId); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void registrationSentEmail(UserRegistration o) { - o.setDoubleOptInStatus(UserRegistrationStatus.REGISTRATION_SENT_MAIL); + public void registrationSentEmail(UserAccountRegistration o) { + o.setDoubleOptInStatus(UserAccountRegistrationStatus.REGISTRATION_SENT_MAIL); log.info("about to save: " + o.toString()); - userRegistrationRepository.saveAndFlush(o); + userAccountRegistrationRepository.saveAndFlush(o); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void registrationClickedInEmail(UserRegistration o) { - o.setDoubleOptInStatus(UserRegistrationStatus.REGISTRATION_CLICKED_IN_MAIL); - userRegistrationRepository.saveAndFlush(o); + public void registrationClickedInEmail(UserAccountRegistration o) { + o.setDoubleOptInStatus(UserAccountRegistrationStatus.REGISTRATION_CLICKED_IN_MAIL); + userAccountRegistrationRepository.saveAndFlush(o); } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public void registrationUserCreated(UserRegistration o) { - o.setDoubleOptInStatus(UserRegistrationStatus.REGISTRATION_ACCOUNT_CREATED); - o = userRegistrationRepository.saveAndFlush(o); - userRegistrationRepository.delete(o); + public void registrationUserCreated(UserAccountRegistration o) { + o.setDoubleOptInStatus(UserAccountRegistrationStatus.REGISTRATION_ACCOUNT_CREATED); + o = userAccountRegistrationRepository.saveAndFlush(o); + userAccountRegistrationRepository.delete(o); } - private void sendEmailToRegisterNewUser(UserRegistration o) { + private void sendEmailToRegisterNewUser(UserAccountRegistration o) { String urlHost = simpleworklistProperties.getRegistration().getUrlHost(); String mailFrom= simpleworklistProperties.getRegistration().getMailFrom(); boolean success = true; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationStatus.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationStatus.java similarity index 70% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationStatus.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationStatus.java index 541d16f5..8b638450 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationStatus.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/signup/UserAccountRegistrationStatus.java @@ -1,9 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; +package org.woehlke.java.simpleworklist.domain.db.user.signup; import javax.persistence.Enumerated; import java.io.Serializable; -public enum UserRegistrationStatus implements Serializable { +public enum UserAccountRegistrationStatus implements Serializable { @Enumerated REGISTRATION_SAVED_EMAIL, diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorService.java similarity index 52% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorService.java index f865a7ac..efc1390c 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorService.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.token; +package org.woehlke.java.simpleworklist.domain.db.user.token; public interface TokenGeneratorService { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorServiceImpl.java similarity index 88% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorServiceImpl.java index 0773ac0d..fda02d5e 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/token/TokenGeneratorServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/user/token/TokenGeneratorServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.token; +package org.woehlke.java.simpleworklist.domain.db.user.token; import org.springframework.stereotype.Service; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/PagesController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/PagesController.java similarity index 85% rename from src/main/java/org/woehlke/java/simpleworklist/domain/PagesController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/PagesController.java index 6d7d503d..e0291db4 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/PagesController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/PagesController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.meso; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import javax.validation.constraints.NotNull; import java.util.Locale; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTabController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTabController.java similarity index 93% rename from src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTabController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTabController.java index e94510d4..edbae5d5 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTabController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTabController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.meso; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; @@ -9,13 +9,13 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import lombok.extern.slf4j.Slf4j; -import org.woehlke.java.simpleworklist.domain.taskworkflow.MoveTaskToTaskInTaskstateService; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.MoveTaskToTaskInTaskstateService; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; import javax.validation.constraints.NotNull; import java.util.Locale; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTaskController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java similarity index 89% rename from src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTaskController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java index 0e39ed64..aebb322a 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/TaskStateTaskController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.meso; import org.springframework.stereotype.Controller; @@ -7,19 +7,19 @@ import org.springframework.validation.FieldError; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskEnergy; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.task.TaskTime; -import org.woehlke.java.simpleworklist.domain.taskworkflow.MoveTaskToTaskInTaskstateService; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TransformTaskIntoProjektService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.application.framework.AbstractController; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.MoveTaskToTaskInTaskstateService; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import org.springframework.beans.factory.annotation.Autowired; @@ -57,7 +57,7 @@ public final String addNewTaskToInboxGet( Locale locale, Model model ) { log.info("addNewTaskToInboxGet"); - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); Task task = new Task(); task.setTaskState(TaskState.INBOX); task.setTaskEnergy(TaskEnergy.NONE); @@ -78,6 +78,7 @@ public final String addNewTaskToInboxGet( model.addAttribute("task", task); model.addAttribute("userSession", userSession); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", false); return "taskstate/task/add"; } @@ -92,6 +93,7 @@ public final String addNewTaskToInboxPost( log.info("addNewTaskToInboxPost"); Context context = super.getContext(userSession); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", false); if (result.hasErrors()) { for (ObjectError e : result.getAllErrors()) { log.info(e.toString()); @@ -119,24 +121,18 @@ public final String editTaskGet( Locale locale, Model model ) { log.info("editTaskGet"); - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + addProjectFromTaskToModel( task, model ); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); - Project thisProject; - if (task.getContext() == null) { - thisProject = new Project(); - thisProject.setId(0L); - } else { - thisProject = task.getProject(); - } Context thisContext = task.getContext(); - Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(task.getTaskState(), locale,userSession); + Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(task.getTaskState(), locale, userSession); model.addAttribute("breadcrumb", breadcrumb); - model.addAttribute("thisProject", thisProject); model.addAttribute("thisContext", thisContext); model.addAttribute("task", task); model.addAttribute("contexts", contexts); model.addAttribute("userSession", userSession); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); return "taskstate/task/edit"; } @@ -151,6 +147,7 @@ public final String editTaskPost( ) { log.info("editTaskPost"); model.addAttribute("dataPage", true); + model.addAttribute("addProjectToTask", true); if(task.getTaskState()==TaskState.SCHEDULED && task.getDueDate()==null){ String objectName="task"; String field="dueDate"; @@ -166,22 +163,14 @@ public final String editTaskPost( for (ObjectError e : result.getAllErrors()) { log.warn(e.toString()); } - Task persistentTask = taskService.findOne(taskId); - persistentTask.merge(task); - task = persistentTask; - UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); + //Task persistentTask = taskService.findOne(taskId); + UserAccount userAccount = loginSuccessService.retrieveCurrentUser(); List contexts = contextService.getAllForUser(userAccount); - Project thisProject; - if (task.getContext() == null) { - thisProject = new Project(); - thisProject.setId(0L); - } else { - thisProject = task.getProject(); - } + Project thisProject = addProjectFromTaskToModel( task, model ); + // task = addProject(task); Context thisContext = task.getContext(); Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale,userSession); model.addAttribute("breadcrumb", breadcrumb); - model.addAttribute("thisProject", thisProject); model.addAttribute("thisContext", thisContext); model.addAttribute("task", task); model.addAttribute("contexts", contexts); @@ -189,9 +178,7 @@ public final String editTaskPost( return "taskstate/task/edit"; } else { task.unsetFocus(); - task.setRootProject(); - Task persistentTask = taskService.findOne(task.getId()); - persistentTask.merge(task); + Task persistentTask = addProject(task); task = taskService.updatedViaTaskstate(persistentTask); model.addAttribute("userSession", userSession); return task.getTaskState().getUrl(); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/TestDataController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TestDataController.java similarity index 56% rename from src/main/java/org/woehlke/java/simpleworklist/domain/TestDataController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/TestDataController.java index 5728f18d..30f5e3b2 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/TestDataController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TestDataController.java @@ -1,14 +1,14 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.meso; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.woehlke.java.simpleworklist.domain.testdata.TestDataService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.testdata.TestDataService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; import org.springframework.beans.factory.annotation.Autowired; -import org.woehlke.java.simpleworklist.domain.user.login.UserAccountLoginSuccessService; +import org.woehlke.java.simpleworklist.domain.security.login.LoginSuccessService; @Slf4j @Controller @@ -16,20 +16,20 @@ public class TestDataController { private final TestDataService testDataService; - private final UserAccountLoginSuccessService userAccountLoginSuccessService; + private final LoginSuccessService loginSuccessService; @Autowired public TestDataController( TestDataService testDataService, - UserAccountLoginSuccessService userAccountLoginSuccessService + LoginSuccessService loginSuccessService ) { this.testDataService = testDataService; - this.userAccountLoginSuccessService = userAccountLoginSuccessService; + this.loginSuccessService = loginSuccessService; } @RequestMapping(path = "/createTree", method = RequestMethod.GET) public String createTestCategoryTree() { - UserAccount user = userAccountLoginSuccessService.retrieveCurrentUser(); + UserAccount user = loginSuccessService.retrieveCurrentUser(); testDataService.createTestData(user); return "redirect:/home"; } diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/UserChatMessageController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/UserChatMessageController.java new file mode 100644 index 00000000..5e14f9cd --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/UserChatMessageController.java @@ -0,0 +1,124 @@ +package org.woehlke.java.simpleworklist.domain.meso; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.woehlke.java.simpleworklist.domain.AbstractController; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageForm; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.meso.chat.UserChatMessageControllerService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.Locale; + +/** + * Created by + * on 16.02.2016. + */ +@Slf4j +@Controller +@RequestMapping(path = "/user2user") +public class UserChatMessageController extends AbstractController { + + private final UserChatMessageControllerService userChatMessageControllerService; + + @Autowired + public UserChatMessageController(UserChatMessageControllerService userChatMessageControllerService) { + this.userChatMessageControllerService = userChatMessageControllerService; + } + + @RequestMapping(path = "/{userId}/messages/", method = RequestMethod.GET) + public final String getLastMessagesBetweenCurrentAndOtherUser( + @Valid @NotNull @PathVariable("userId") UserAccount otherUser, + @PageableDefault(sort = "rowCreatedAt", direction = Sort.Direction.DESC) Pageable request, + @ModelAttribute("userSession") UserSessionBean userSession, + Locale locale, + Model model + ) { + log.info("getLastMessagesBetweenCurrentAndOtherUser"); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("Context context"); + Context context = super.getContext(userSession); + log.info(context.toString()); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("UserAccount thisUser"); + UserAccount thisUser = context.getUserAccount(); + log.info(thisUser.toString()); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("ChatMessageForm chatMessageForm"); + ChatMessageForm chatMessageForm = new ChatMessageForm(); + log.info(chatMessageForm.toString()); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("Page user2UserMessagePage"); + Page user2UserMessagePage = userChatMessageControllerService.readAllMessagesBetweenCurrentAndOtherUser( + thisUser, otherUser, request + ); + for (UserAccountChatMessage o : user2UserMessagePage) { + log.info(o.toString()); + } + log.info("-----------------------------------------------------------------------------------------------"); + log.info("breadcrumb"); + Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForMessagesBetweenCurrentAndOtherUser(locale, userSession); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("model.addAttributes"); + model.addAttribute("newUser2UserMessage", chatMessageForm); + model.addAttribute("otherUser", otherUser); + model.addAttribute("user2UserMessagePage", user2UserMessagePage); + model.addAttribute("refreshMessages", true); + model.addAttribute("breadcrumb", breadcrumb); + model.addAttribute("userSession", userSession); + log.info("-----------------------------------------------------------------------------------------------"); + log.info("getLastMessagesBetweenCurrentAndOtherUser DONE"); + return "user/messages/all"; + } + + @RequestMapping(path = "/{userId}/messages/", method = RequestMethod.POST) + public final String sendNewMessageToOtherUser( + @PathVariable("userId") UserAccount otherUser, + @Valid @ModelAttribute("newUser2UserMessage") ChatMessageForm chatMessageForm, + BindingResult result, + @PageableDefault(sort = "rowCreatedAt", direction = Sort.Direction.DESC) Pageable request, + @ModelAttribute("userSession") UserSessionBean userSession, + Locale locale, + Model model + ) { + log.info("sendNewMessageToOtherUser"); + Context context = super.getContext(userSession); + UserAccount thisUser = context.getUserAccount(); + model.addAttribute("userSession", userSession); + Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForMessagesBetweenCurrentAndOtherUser(locale, userSession); + model.addAttribute("breadcrumb", breadcrumb); + if (result.hasErrors()) { + log.info("result.hasErrors"); + for (ObjectError objectError : result.getAllErrors()) { + log.info("result.hasErrors: " + objectError.toString()); + } + Page user2UserMessagePage = userChatMessageControllerService.readAllMessagesBetweenCurrentAndOtherUser(thisUser, otherUser, request); + model.addAttribute("otherUser", otherUser); + model.addAttribute("user2UserMessagePage", user2UserMessagePage); + model.addAttribute("userSession", userSession); + return "user/messages/all"; + } else { + userChatMessageControllerService.sendNewUserMessage(thisUser, otherUser, chatMessageForm); + model.addAttribute("userSession", userSession); + return "redirect:/user2user/" + otherUser.getId() + "/messages/"; + } + } + +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/Breadcrumb.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/Breadcrumb.java similarity index 91% rename from src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/Breadcrumb.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/Breadcrumb.java index c5cd7af6..b64f5b29 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/Breadcrumb.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/Breadcrumb.java @@ -1,11 +1,11 @@ -package org.woehlke.java.simpleworklist.domain.breadcrumb; +package org.woehlke.java.simpleworklist.domain.meso.breadcrumb; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.Task; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; import java.io.Serializable; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbItem.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbItem.java similarity index 88% rename from src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbItem.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbItem.java index ca140204..9fc8f70d 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbItem.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbItem.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.breadcrumb; +package org.woehlke.java.simpleworklist.domain.meso.breadcrumb; import lombok.*; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbService.java similarity index 80% rename from src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbService.java index bcd79df5..d0b22167 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbService.java @@ -1,9 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.breadcrumb; +package org.woehlke.java.simpleworklist.domain.meso.breadcrumb; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import java.util.Locale; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbServiceImpl.java similarity index 95% rename from src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbServiceImpl.java index 96d3a23f..230e21cf 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/breadcrumb/BreadcrumbServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/breadcrumb/BreadcrumbServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.breadcrumb; +package org.woehlke.java.simpleworklist.domain.meso.breadcrumb; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -6,12 +6,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.context.ContextService; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.data.context.ContextService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import java.util.Locale; import java.util.Optional; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerService.java new file mode 100644 index 00000000..1fe33a79 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerService.java @@ -0,0 +1,23 @@ +package org.woehlke.java.simpleworklist.domain.meso.chat; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageForm; + + +public interface UserChatMessageControllerService { + + UserAccountChatMessage sendNewUserMessage( + UserAccount thisUser, + UserAccount otherUser, + ChatMessageForm chatMessageForm + ); + + Page readAllMessagesBetweenCurrentAndOtherUser( + UserAccount receiver, + UserAccount sender, + Pageable request + ); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerServiceImpl.java new file mode 100644 index 00000000..b164a363 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/chat/UserChatMessageControllerServiceImpl.java @@ -0,0 +1,75 @@ +package org.woehlke.java.simpleworklist.domain.meso.chat; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccountChatMessage; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageForm; +import org.woehlke.java.simpleworklist.domain.db.user.chat.ChatMessageService; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) +public class UserChatMessageControllerServiceImpl implements UserChatMessageControllerService { + + private final ChatMessageService chatMessageService; + + @Autowired + public UserChatMessageControllerServiceImpl(ChatMessageService chatMessageService) { + this.chatMessageService = chatMessageService; + } + + @Override + public UserAccountChatMessage sendNewUserMessage( + UserAccount thisUser, + UserAccount otherUser, + ChatMessageForm chatMessageForm + ) { + log.info("sendNewUserMessage"); + UserAccountChatMessage m = new UserAccountChatMessage(); + m.setSender(thisUser); + m.setReceiver(otherUser); + m.setReadByReceiver(false); + m.setUuid(UUID.randomUUID()); + m.setMessageText(chatMessageForm.getMessageText()); + return chatMessageService.saveAndFlush(m); + } + + @Override + public Page readAllMessagesBetweenCurrentAndOtherUser( + UserAccount receiver, + UserAccount sender, + Pageable request + ) { + log.info("readAllMessagesBetweenCurrentAndOtherUser"); + log.info("-----------------------------------------------------------------------------------------------"); + List user2UserMessageList = new ArrayList<>(); + log.info("Page user2UserMessagePage"); + log.info(sender.toString()); + log.info(receiver.toString()); + log.info(request.toString()); + log.info("Page user2UserMessagePage"); + Page user2UserMessagePage = chatMessageService.findAllMessagesBetweenCurrentAndOtherUser(sender, receiver, request); + log.info("Page user2UserMessagePage size: " + user2UserMessagePage.stream().count()); + log.info("-----------------------------------------------------------------------------------------------"); + for (UserAccountChatMessage userAccountChatMessage : user2UserMessagePage) { + userAccountChatMessage.setReadByReceiver(true); + user2UserMessageList.add(userAccountChatMessage); + } + log.info("-----------------------------------------------------------------------------------------------"); + log.info("userMessageRepository.saveAll(user2UserMessageList)"); + chatMessageService.saveAll(user2UserMessageList); + log.info("-----------------------------------------------------------------------------------------------"); + return chatMessageService.findAllMessagesBetweenCurrentAndOtherUser(sender, receiver, request); + } +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/language/Language.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/Language.java similarity index 91% rename from src/main/java/org/woehlke/java/simpleworklist/domain/language/Language.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/Language.java index 5f1824aa..c0e855fb 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/language/Language.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/Language.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.language; +package org.woehlke.java.simpleworklist.domain.meso.language; import javax.persistence.Enumerated; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/language/UserChangeLanguageForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/UserChangeLanguageForm.java similarity index 86% rename from src/main/java/org/woehlke/java/simpleworklist/domain/language/UserChangeLanguageForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/UserChangeLanguageForm.java index 66b5f756..ac8caafc 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/language/UserChangeLanguageForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/language/UserChangeLanguageForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.language; +package org.woehlke.java.simpleworklist.domain.meso.language; import lombok.*; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/session/UserSessionBean.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/session/UserSessionBean.java similarity index 92% rename from src/main/java/org/woehlke/java/simpleworklist/domain/session/UserSessionBean.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/session/UserSessionBean.java index a7f2e557..b0f163ce 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/session/UserSessionBean.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/session/UserSessionBean.java @@ -1,10 +1,10 @@ -package org.woehlke.java.simpleworklist.domain.session; +package org.woehlke.java.simpleworklist.domain.meso.session; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateService.java similarity index 63% rename from src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateService.java index 453bef8a..6c655f13 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateService.java @@ -1,10 +1,10 @@ -package org.woehlke.java.simpleworklist.domain.taskworkflow; +package org.woehlke.java.simpleworklist.domain.meso.taskworkflow; import org.springframework.data.domain.Pageable; import org.springframework.ui.Model; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import java.util.Locale; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java similarity index 88% rename from src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java index e984a592..2f5460ab 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/MoveTaskToTaskInTaskstateServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.taskworkflow; +package org.woehlke.java.simpleworklist.domain.meso.taskworkflow; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -8,12 +8,12 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; -import org.woehlke.java.simpleworklist.domain.breadcrumb.Breadcrumb; -import org.woehlke.java.simpleworklist.domain.breadcrumb.BreadcrumbService; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.Breadcrumb; +import org.woehlke.java.simpleworklist.domain.meso.breadcrumb.BreadcrumbService; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import javax.validation.constraints.NotNull; import java.util.Locale; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TaskState.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TaskState.java similarity index 95% rename from src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TaskState.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TaskState.java index 062b367c..be5571ac 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TaskState.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TaskState.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.taskworkflow; +package org.woehlke.java.simpleworklist.domain.meso.taskworkflow; import java.io.Serializable; import java.util.Arrays; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektService.java new file mode 100644 index 00000000..dfd7a431 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektService.java @@ -0,0 +1,10 @@ +package org.woehlke.java.simpleworklist.domain.meso.taskworkflow; + +import org.springframework.ui.Model; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; + +public interface TransformTaskIntoProjektService { + + String transformTaskIntoProjectGet(Task task, UserSessionBean userSession, Model model); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektServiceImpl.java similarity index 81% rename from src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektServiceImpl.java index 03345652..b6e69b4b 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/taskworkflow/TransformTaskIntoProjektServiceImpl.java @@ -1,15 +1,15 @@ -package org.woehlke.java.simpleworklist.domain.taskworkflow; +package org.woehlke.java.simpleworklist.domain.meso.taskworkflow; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.Model; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskService; -import org.woehlke.java.simpleworklist.domain.project.ProjectService; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectService; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService; +import org.woehlke.java.simpleworklist.domain.meso.session.UserSessionBean; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataService.java new file mode 100644 index 00000000..7e4cb4c8 --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataService.java @@ -0,0 +1,8 @@ +package org.woehlke.java.simpleworklist.domain.meso.testdata; + +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; + +public interface TestDataService { + + void createTestData(UserAccount userAccount); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataServiceImpl.java similarity index 99% rename from src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataServiceImpl.java index f375db43..e8c01cf4 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/testdata/TestDataServiceImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.java.simpleworklist.domain.testdata; +package org.woehlke.java.simpleworklist.domain.meso.testdata; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.project.Project; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.task.TaskEnergy; -import org.woehlke.java.simpleworklist.domain.taskworkflow.TaskState; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.task.TaskTime; -import org.woehlke.java.simpleworklist.domain.context.ContextRepository; -import org.woehlke.java.simpleworklist.domain.task.TaskRepository; -import org.woehlke.java.simpleworklist.domain.project.ProjectRepository; +import org.woehlke.java.simpleworklist.domain.db.data.Context; +import org.woehlke.java.simpleworklist.domain.db.data.Project; +import org.woehlke.java.simpleworklist.domain.db.data.Task; +import org.woehlke.java.simpleworklist.domain.db.data.project.ProjectRepository; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy; +import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime; +import org.woehlke.java.simpleworklist.domain.db.data.context.ContextRepository; +import org.woehlke.java.simpleworklist.domain.db.data.task.TaskRepository; import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchService.java deleted file mode 100644 index 36d32492..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/search/SearchService.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.search; - -import org.woehlke.java.simpleworklist.domain.context.Context; -import org.woehlke.java.simpleworklist.domain.search.request.SearchRequest; -import org.woehlke.java.simpleworklist.domain.search.result.SearchResult; - -/** - * Created by tw on 14.02.16. - */ -public interface SearchService { - - SearchResult search(SearchRequest searchRequest); - - SearchResult search(String searchterm, Context context); - - void resetSearchIndex(); - -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/UserLoginController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/UserLoginController.java similarity index 81% rename from src/main/java/org/woehlke/java/simpleworklist/domain/UserLoginController.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/UserLoginController.java index 58e76662..a1517d8b 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/UserLoginController.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/UserLoginController.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain; +package org.woehlke.java.simpleworklist.domain.security; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -16,25 +16,25 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.support.SessionStatus; -import org.woehlke.java.simpleworklist.domain.user.access.UserAuthorizationService; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.login.LoginForm; -import org.woehlke.java.simpleworklist.domain.user.login.UserAccountLoginSuccessService; +import org.woehlke.java.simpleworklist.domain.security.access.UserAuthorizationService; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.security.login.LoginForm; +import org.woehlke.java.simpleworklist.domain.security.login.LoginSuccessService; @Slf4j @Controller @RequestMapping(path = "/user") public class UserLoginController { - private final UserAccountLoginSuccessService userAccountLoginSuccessService; + private final LoginSuccessService loginSuccessService; private final UserAuthorizationService userAuthorizationService; @Autowired public UserLoginController( - UserAccountLoginSuccessService userAccountLoginSuccessService, + LoginSuccessService loginSuccessService, UserAuthorizationService userAuthorizationService ) { - this.userAccountLoginSuccessService = userAccountLoginSuccessService; + this.loginSuccessService = loginSuccessService; this.userAuthorizationService = userAuthorizationService; } @@ -70,8 +70,8 @@ public final String loginPost( log.info("loginPerform"); boolean authorized = userAuthorizationService.authorize(loginForm); if (!result.hasErrors() && authorized) { - UserAccount user = userAccountLoginSuccessService.retrieveCurrentUser(); - userAccountLoginSuccessService.updateLastLoginTimestamp(user); + UserAccount user = loginSuccessService.retrieveCurrentUser(); + loginSuccessService.updateLastLoginTimestamp(user); log.info("logged in"); return "redirect:/home"; } else { diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsService.java similarity index 70% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsService.java index 1ab3cae1..429924ba 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsService.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.access; +package org.woehlke.java.simpleworklist.domain.security.access; import org.springframework.security.core.userdetails.UserDetailsService; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsServiceImpl.java similarity index 84% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsServiceImpl.java index a94c3419..b7860ab1 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/ApplicationUserDetailsServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/ApplicationUserDetailsServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.access; +package org.woehlke.java.simpleworklist.domain.security.access; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -7,8 +7,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountRepository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountRepository; @Slf4j @Service diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationService.java new file mode 100644 index 00000000..f9e78b4e --- /dev/null +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationService.java @@ -0,0 +1,14 @@ +package org.woehlke.java.simpleworklist.domain.security.access; + +import org.woehlke.java.simpleworklist.domain.security.login.LoginForm; +import org.woehlke.java.simpleworklist.domain.db.user.accountselfservice.UserChangePasswordForm; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; + +public interface UserAuthorizationService { + + void changeUsersPassword(UserChangePasswordForm userAccountFormBean, UserAccount user); + + boolean confirmUserByLoginAndPassword(String userEmail, String oldUserPassword); + + boolean authorize(LoginForm loginForm); +} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationServiceImpl.java similarity index 88% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationServiceImpl.java index c4b8f7bc..206a0205 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserAuthorizationServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.access; +package org.woehlke.java.simpleworklist.domain.security.access; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -10,10 +10,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.user.accountselfservice.UserChangePasswordForm; -import org.woehlke.java.simpleworklist.domain.user.login.LoginForm; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountRepository; +import org.woehlke.java.simpleworklist.domain.security.login.LoginForm; +import org.woehlke.java.simpleworklist.domain.db.user.accountselfservice.UserChangePasswordForm; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountRepository; @Slf4j @Service diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserDetailsDto.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserDetailsDto.java similarity index 92% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserDetailsDto.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserDetailsDto.java index 6e747282..3836681f 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserDetailsDto.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/access/UserDetailsDto.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.access; +package org.woehlke.java.simpleworklist.domain.security.access; import java.util.ArrayList; import java.util.Collection; @@ -8,7 +8,7 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; @Getter diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginForm.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginForm.java similarity index 93% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginForm.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginForm.java index d1785dd4..501160f2 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginForm.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginForm.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.login; +package org.woehlke.java.simpleworklist.domain.security.login; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginSuccessHandler.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessHandler.java similarity index 74% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginSuccessHandler.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessHandler.java index 39ebfd96..a4df3f97 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/LoginSuccessHandler.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessHandler.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.login; +package org.woehlke.java.simpleworklist.domain.security.login; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.Authentication; @@ -6,8 +6,7 @@ import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.stereotype.Component; import org.springframework.web.servlet.LocaleResolver; -import org.woehlke.java.simpleworklist.domain.language.Language; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; import org.springframework.beans.factory.annotation.Autowired; @@ -25,16 +24,16 @@ public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler implements AuthenticationSuccessHandler { - private final UserAccountLoginSuccessService userAccountLoginSuccessService; + private final LoginSuccessService loginSuccessService; private final LocaleResolver localeResolver; @Autowired public LoginSuccessHandler( - UserAccountLoginSuccessService userAccountLoginSuccessService, + LoginSuccessService loginSuccessService, LocaleResolver localeResolver ) { super(); - this.userAccountLoginSuccessService = userAccountLoginSuccessService; + this.loginSuccessService = loginSuccessService; this.localeResolver = localeResolver; } @@ -46,8 +45,8 @@ public void onAuthenticationSuccess( ) throws ServletException, IOException { log.info("onAuthenticationSuccess"); super.onAuthenticationSuccess(request, response, authentication); - UserAccount user = userAccountLoginSuccessService.retrieveCurrentUser(); - userAccountLoginSuccessService.updateLastLoginTimestamp(user); + UserAccount user = loginSuccessService.retrieveCurrentUser(); + loginSuccessService.updateLastLoginTimestamp(user); Locale locale; switch(user.getDefaultLanguage()){ case DE: locale = Locale.GERMAN; break; diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessService.java similarity index 57% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessService.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessService.java index c0fc1ac4..0c46a93f 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessService.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessService.java @@ -1,9 +1,9 @@ -package org.woehlke.java.simpleworklist.domain.user.login; +package org.woehlke.java.simpleworklist.domain.security.login; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; -public interface UserAccountLoginSuccessService { +public interface LoginSuccessService { String retrieveUsername(); diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessServiceImpl.java similarity index 83% rename from src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessServiceImpl.java rename to src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessServiceImpl.java index a84dd056..56f4638e 100644 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/login/UserAccountLoginSuccessServiceImpl.java +++ b/src/main/java/org/woehlke/java/simpleworklist/domain/security/login/LoginSuccessServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.java.simpleworklist.domain.user.login; +package org.woehlke.java.simpleworklist.domain.security.login; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -9,20 +9,20 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccountRepository; +import org.woehlke.java.simpleworklist.domain.db.user.UserAccount; +import org.woehlke.java.simpleworklist.domain.db.user.account.UserAccountRepository; import java.util.Date; @Slf4j @Service @Transactional(propagation = Propagation.REQUIRED, readOnly = true) -public class UserAccountLoginSuccessServiceImpl implements UserAccountLoginSuccessService { +public class LoginSuccessServiceImpl implements LoginSuccessService { private final UserAccountRepository userAccountRepository; @Autowired - public UserAccountLoginSuccessServiceImpl(UserAccountRepository userAccountRepository) { + public LoginSuccessServiceImpl(UserAccountRepository userAccountRepository) { this.userAccountRepository = userAccountRepository; } diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektService.java deleted file mode 100644 index 2384eda1..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/taskworkflow/TransformTaskIntoProjektService.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.taskworkflow; - -import org.springframework.ui.Model; -import org.woehlke.java.simpleworklist.domain.task.Task; -import org.woehlke.java.simpleworklist.domain.session.UserSessionBean; - -public interface TransformTaskIntoProjektService { - - String transformTaskIntoProjectGet(Task task, UserSessionBean userSession, Model model); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataService.java deleted file mode 100644 index 11700b1f..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/testdata/TestDataService.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.testdata; - -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; - -public interface TestDataService { - - void createTestData(UserAccount userAccount); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationService.java deleted file mode 100644 index 38262860..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/access/UserAuthorizationService.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.access; - -import org.woehlke.java.simpleworklist.domain.user.accountselfservice.UserChangePasswordForm; -import org.woehlke.java.simpleworklist.domain.user.account.UserAccount; -import org.woehlke.java.simpleworklist.domain.user.login.LoginForm; - -public interface UserAuthorizationService { - - void changeUsersPassword(UserChangePasswordForm userAccountFormBean, UserAccount user); - - boolean confirmUserByLoginAndPassword(String userEmail, String oldUserPassword); - - boolean authorize(LoginForm loginForm); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPasswordRepositories.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPasswordRepositories.java deleted file mode 100644 index 9b49ae9e..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountPasswordRepositories.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.accountpassword; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface UserAccountPasswordRepositories extends JpaRepository { -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordService.java deleted file mode 100644 index dce2b472..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/accountpassword/UserAccountSecurityPasswordService.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.accountpassword; - -import org.springframework.security.core.userdetails.UserDetailsPasswordService; - -public interface UserAccountSecurityPasswordService extends UserDetailsPasswordService { -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryRepository.java deleted file mode 100644 index f453022e..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.passwordrecovery; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface UserPasswordRecoveryRepository extends JpaRepository { - - UserPasswordRecovery findByToken(String token); - - UserPasswordRecovery findByEmail(String email); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryService.java deleted file mode 100644 index 674f947a..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/passwordrecovery/UserPasswordRecoveryService.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.passwordrecovery; - -public interface UserPasswordRecoveryService { - - UserPasswordRecovery findByToken(String confirmId); - - boolean passwordRecoveryIsRetryAndMaximumNumberOfRetries(String email); - - void passwordRecoveryCheckIfResponseIsInTime(String email); - - void passwordRecoverySendEmailTo(String email); - - void passwordRecoverySentEmail(UserPasswordRecovery o); - - void passwordRecoveryClickedInEmail(UserPasswordRecovery o); - - void passwordRecoveryDone(UserPasswordRecovery o); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationRepository.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationRepository.java deleted file mode 100644 index 4a3eae22..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface UserRegistrationRepository extends JpaRepository { - - UserRegistration findByToken(String token); - - UserRegistration findByEmail(String email); -} diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationService.java deleted file mode 100644 index 44263dbb..00000000 --- a/src/main/java/org/woehlke/java/simpleworklist/domain/user/signup/UserRegistrationService.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.woehlke.java.simpleworklist.domain.user.signup; - -public interface UserRegistrationService { - - UserRegistration findByToken(String confirmId); - - boolean registrationIsRetryAndMaximumNumberOfRetries(String email); - - void registrationCheckIfResponseIsInTime(String email); - - void registrationSendEmailTo(String email); - - void registrationSentEmail(UserRegistration o); - - void registrationClickedInEmail(UserRegistration o); - - void registrationUserCreated(UserRegistration o); - -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8b02ae89..ac1ced1f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -33,7 +33,7 @@ spring: generate-ddl: true database-platform: POSTGRESQL hibernate: - #ddl-auto: create-drop update + #ddl-auto: create-drop update ddl-auto: ${BLOODMONEY_HIBERNATE_DDL_AUTO} naming: implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl @@ -76,7 +76,8 @@ org: registration: maxRetries: 5 ttlEmailVerificationRequest: 86400000 - urlHost: ${SIMPLEWORKLIST_URL_APP_HOST} + urlHost: localhost:8080 + # ${SIMPLEWORKLIST_URL_APP_HOST} mailFrom: ${SIMPLEWORKLIST_MAIL_FROM} webMvc: controllerPageSize: 10 @@ -176,10 +177,7 @@ logging: application: DEBUG config: DEBUG measurements: DEBUG - user: DEBUG domain: DEBUG - services: DEBUG - common: INFO debug: false --- spring: diff --git a/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties index 0a776885..06d00605 100644 --- a/src/main/resources/messages_de.properties +++ b/src/main/resources/messages_de.properties @@ -58,11 +58,11 @@ pages.user.profile.delete.context=Kontext l pages.user.profile.change.language=Sprache einstellen pages.user.user2user.messages=Dialog mit anderen Benutzern pages.searchRequest=Search Results -pages.chatMessages.h1=Ihr Dialog mit -pages.chatMessages.newMessage=Neue Nachricht\: -pages.chatMessages.newUserMessageButton=Sende Nachricht -pages.chatMessages.showAllText1=Zeige alle Nachrichten -pages.chatMessages.showAllText2=(hier werden nur die letzten 20 Angezeigt) +pages.userAccountChatMessages.h1=Ihr Dialog mit +pages.userAccountChatMessages.newMessage=Neue Nachricht\: +pages.userAccountChatMessages.newUserMessageButton=Sende Nachricht +pages.userAccountChatMessages.showAllText1=Zeige alle Nachrichten +pages.userAccountChatMessages.showAllText2=(hier werden nur die letzten 20 Angezeigt) pages.information.h1=Informationen project.add.h1=Neues Projekt project.add.description=Beschreibung @@ -243,6 +243,7 @@ user.selfservice.contexts.edit.button=Kontext speichern user.selfservice.context.default=Setze voreingestellten Kontext user.selfservice.context.default.button=Voreingestellten Kontext speichern task.show.context=Kontext ändern +task.show.project=Projekt ändern project.edit.context=Kontext tasks.all.h1=Alle Aufgaben tasks.all.noTasks=Sie haben keine Aufgaben diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index eb40c1ad..870f1e42 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -57,11 +57,11 @@ pages.user.profile.delete.context=Delete one Context pages.user.profile.change.language=Choose Default Language pages.user.user2user.messages=Messages User2User pages.searchRequest=Search Results -pages.chatMessages.h1=Your Dialog with -pages.chatMessages.newMessage=New Message\: -pages.chatMessages.newUserMessageButton=Send Message -pages.chatMessages.showAllText1=Show all Messages -pages.chatMessages.showAllText2=(only the last 20 Messages are displayed here) +pages.userAccountChatMessages.h1=Your Dialog with +pages.userAccountChatMessages.newMessage=New Message\: +pages.userAccountChatMessages.newUserMessageButton=Send Message +pages.userAccountChatMessages.showAllText1=Show all Messages +pages.userAccountChatMessages.showAllText2=(only the last 20 Messages are displayed here) project.add.h1=Add Project project.add.description=Description project.add.button=Add Project @@ -241,6 +241,7 @@ user.selfservice.contexts.edit.button=Save Context user.selfservice.context.default=Set Default Context user.selfservice.context.default.button=Save Default Context task.show.context=change Context +task.show.project=change Project project.edit.context=Context tasks.all.h1=All Tasks tasks.all.noTasks=You have no Tasks at all diff --git a/src/main/resources/templates/layout/page.html b/src/main/resources/templates/layout/page.html index 2086f98f..e6dff819 100644 --- a/src/main/resources/templates/layout/page.html +++ b/src/main/resources/templates/layout/page.html @@ -54,10 +54,10 @@
-
+
-
+
@@ -66,6 +66,7 @@
+
@@ -77,12 +78,11 @@ - + -