diff --git a/src/main/java/ru/martha/autotesting/controller/ProjectsController.java b/src/main/java/ru/martha/autotesting/controller/ProjectsController.java new file mode 100644 index 0000000..ec628dc --- /dev/null +++ b/src/main/java/ru/martha/autotesting/controller/ProjectsController.java @@ -0,0 +1,89 @@ +package ru.martha.autotesting.controller; + +import lombok.Getter; +import lombok.Setter; +import ru.martha.autotesting.entity.Project; +import ru.martha.autotesting.service.TesterService; + +import javax.annotation.PostConstruct; +import javax.faces.application.FacesMessage; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.ManagedProperty; +import javax.faces.bean.ViewScoped; +import javax.faces.context.FacesContext; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@ManagedBean +@ViewScoped +public class ProjectsController implements Serializable { + + @ManagedProperty("#{testerServiceImpl}") + @Setter + private TesterService testerService; + + @Getter + private List projects; + + @Getter + @Setter + private Project selectedProject; + + @Setter + @Getter + private boolean isEditMode; + + @Setter + @Getter + private boolean isNewProject; + + @PostConstruct + private void init() { + projects = testerService.getAllProjects(); + } + + public void onProjectSelected() { + isEditMode = false; + } + + public void createProject() { + selectedProject = new Project(); + selectedProject.setCreationDate(new Date()); + projects.add(selectedProject); + isNewProject = true; + isEditMode = true; + } + + public void cancelCreateProject() { + selectedProject = null; + projects = testerService.getAllProjects(); + isEditMode = false; + isNewProject = false; + } + + public void saveProject() { + try { + testerService.createOrUpdateProject(selectedProject); + projects = testerService.getAllProjects(); + isEditMode = false; + isNewProject = false; + } catch (Exception e) { + FacesMessage message = new FacesMessage("Произошла ошибка при сохранении"); + message.setSeverity(FacesMessage.SEVERITY_ERROR); + FacesContext.getCurrentInstance().addMessage(null, message); + } + } + + public void removeProject() { + try { + testerService.removeProject(selectedProject); + selectedProject = null; + projects = testerService.getAllProjects(); + } catch (Exception e) { + FacesMessage message = new FacesMessage("Произошла ошибка при удалении"); + message.setSeverity(FacesMessage.SEVERITY_ERROR); + FacesContext.getCurrentInstance().addMessage(null, message); + } + } +} diff --git a/src/main/java/ru/martha/autotesting/service/TesterService.java b/src/main/java/ru/martha/autotesting/service/TesterService.java new file mode 100644 index 0000000..dae09c5 --- /dev/null +++ b/src/main/java/ru/martha/autotesting/service/TesterService.java @@ -0,0 +1,13 @@ +package ru.martha.autotesting.service; + +import ru.martha.autotesting.entity.Project; +import ru.martha.autotesting.entity.ProjectVersion; + +import java.util.List; + +public interface TesterService { + List getAllProjects(); + List getProjectVersions(Project project); + void createOrUpdateProject(Project project); + void removeProject(Project project); +} diff --git a/src/main/java/ru/martha/autotesting/service/impl/TesterServiceImpl.java b/src/main/java/ru/martha/autotesting/service/impl/TesterServiceImpl.java new file mode 100644 index 0000000..5e38ca4 --- /dev/null +++ b/src/main/java/ru/martha/autotesting/service/impl/TesterServiceImpl.java @@ -0,0 +1,39 @@ +package ru.martha.autotesting.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import ru.martha.autotesting.entity.Project; +import ru.martha.autotesting.entity.ProjectVersion; +import ru.martha.autotesting.repository.ProjectsRepository; +import ru.martha.autotesting.service.TesterService; + +import java.util.List; + +@Service +@Transactional +public class TesterServiceImpl implements TesterService { + + @Autowired + private ProjectsRepository projectsRepository; + + @Override + public List getAllProjects() { + return projectsRepository.findAll(); + } + + @Override + public List getProjectVersions(Project project) { + return projectsRepository.getOne(project.getId()).getVersions(); + } + + @Override + public void createOrUpdateProject(Project project) { + projectsRepository.save(project); + } + + @Override + public void removeProject(Project project) { + projectsRepository.delete(project); + } +} diff --git a/src/main/webapp/accounts/accountsList.xhtml b/src/main/webapp/accounts/accountsList.xhtml index 9f2bfcc..af83608 100644 --- a/src/main/webapp/accounts/accountsList.xhtml +++ b/src/main/webapp/accounts/accountsList.xhtml @@ -19,7 +19,7 @@ style="text-align: right"> - + + xmlns:f="http://xmlns.jcp.org/jsf/core"> Список проектов + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/resources/css/style.css b/src/main/webapp/resources/css/style.css index 94afdc5..f59631f 100644 --- a/src/main/webapp/resources/css/style.css +++ b/src/main/webapp/resources/css/style.css @@ -2,6 +2,10 @@ outline: none !important; } +.page-layout { + min-height: 600px; +} + .ui-panelgrid > * > tr, .ui-panelgrid > * > tr > td { border: none !important;