Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e36345e980 | ||
|
|
d988a76b46 | ||
|
|
107f835028 | ||
|
|
a5e0d976a6 | ||
|
|
8e9b40bdc6 | ||
|
|
fc3699c086 | ||
|
|
b7f73650c1 | ||
|
|
dc138cdc85 |
-41
@@ -1,41 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
@@ -1,2 +0,0 @@
|
||||
/target/
|
||||
/bin/
|
||||
@@ -1,37 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>EM-Spring</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry excluding="**/node_modules/*|**/*.min.js|**/bower_components/*" kind="src" path="src/main/webapp"/>
|
||||
<classpathentry kind="src" path="target/m2e-wtp/web-resources"/>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
|
||||
<attributes>
|
||||
<attribute name="hide" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
|
||||
<classpathentry kind="output" path=""/>
|
||||
</classpath>
|
||||
@@ -1,6 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding//src/test/resources=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
@@ -1,11 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
|
||||
org.eclipse.jdt.core.compiler.compliance=17
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=17
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
<wb-module deploy-name="EM-Spring-0.0.1-SNAPSHOT">
|
||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||
<property name="context-root" value="EM-Spring"/>
|
||||
<property name="java-output-path" value="/EM-Spring/target/classes"/>
|
||||
</wb-module>
|
||||
</project-modules>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<fixed facet="wst.jsdt.web"/>
|
||||
<installed facet="java" version="17"/>
|
||||
<installed facet="jst.web" version="4.0"/>
|
||||
<installed facet="wst.jsdt.web" version="1.0"/>
|
||||
</faceted-project>
|
||||
@@ -1 +0,0 @@
|
||||
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
|
||||
@@ -1 +0,0 @@
|
||||
Window
|
||||
@@ -1,2 +0,0 @@
|
||||
disabled=06target
|
||||
eclipse.preferences.version=1
|
||||
@@ -17,7 +17,6 @@
|
||||
<description>Demo project for Spring Boot</description>
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<lombok.version>1.18.34</lombok.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@@ -5,7 +5,6 @@ import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 部署情報の検索要件を表現するモデルクラスです。
|
||||
*画面の検索条件を受け取る
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
|
||||
@@ -2,5 +2,4 @@ package com.example.rhizome.app.domain.service;
|
||||
|
||||
public interface DeleteDepartment {
|
||||
void deleteDepartment(Integer idDepartment);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//サービス
|
||||
|
||||
package com.example.rhizome.app.domain.service;
|
||||
|
||||
import java.util.List;
|
||||
@@ -8,14 +6,13 @@ import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
|
||||
|
||||
public interface SearchDepartment {
|
||||
List<Department> selectAll(); //DBから全取得
|
||||
List<Department> searchDepartment(String nmDepartment);
|
||||
|
||||
List<Department> searchDepartmentById(Integer idDepartment);
|
||||
|
||||
List<Department> selectAll();
|
||||
|
||||
List<Department> searchBy(SearchConditionDepartment searchConditionDepartment);
|
||||
|
||||
List<Department> searchByWithLike(SearchConditionDepartment searchConditionDepartment); //条件検索
|
||||
|
||||
|
||||
List<Department> searchByWithLike(SearchConditionDepartment searchConditionDepartment);
|
||||
}
|
||||
|
||||
|
||||
//controller→SeachDepartment→Repository→DB
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.example.rhizome.app.domain.service;
|
||||
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
|
||||
public interface UpdateDepartment {
|
||||
void updateDepartment(Department beforeDepartment, Department updateDepartment);
|
||||
}
|
||||
+6
-10
@@ -7,28 +7,24 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import com.example.rhizome.app.domain.service.DeleteDepartment;
|
||||
import com.example.rhizome.app.infra.repository.DepartmentRepository;
|
||||
|
||||
/**
|
||||
* Employee レコード削除関連の機能を持つサービス
|
||||
*/
|
||||
@Service
|
||||
@Transactional
|
||||
public class DeleteDepartmentImpl implements DeleteDepartment {
|
||||
|
||||
DepartmentRepository departmentRepository;
|
||||
DepartmentRepository departmentReposirtory;
|
||||
|
||||
@Autowired
|
||||
public DeleteDepartmentImpl(DepartmentRepository departmentRepository) {
|
||||
this.departmentRepository = departmentRepository;
|
||||
public DeleteDepartmentImpl(DepartmentRepository departmentReposirtory) {
|
||||
this.departmentReposirtory = departmentReposirtory;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* idEmployee を元に employee データを削除
|
||||
* idDepartment を元に Department データを削除
|
||||
*
|
||||
* @param idEmployee 削除対象のidEmployee
|
||||
* @param idDepartment 削除対象のidDepartment
|
||||
*/
|
||||
public void deleteDepartment(Integer idDepartment) {
|
||||
departmentRepository.deleteById(idDepartment);
|
||||
departmentReposirtory.deleteById(idDepartment);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
-7
@@ -1,18 +1,15 @@
|
||||
package com.example.rhizome.app.domain.service.impl;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.service.RegisterDepartment;
|
||||
import com.example.rhizome.app.infra.entity.DepartmentEntity;
|
||||
import com.example.rhizome.app.infra.repository.DepartmentRepository;
|
||||
|
||||
/**
|
||||
* Employee テーブルの登録系の機能を集約させるサービスクラスです。
|
||||
*/
|
||||
@Service
|
||||
@Transactional
|
||||
public class RegisterDepartmentImpl implements RegisterDepartment {
|
||||
@@ -20,15 +17,16 @@ public class RegisterDepartmentImpl implements RegisterDepartment {
|
||||
DepartmentRepository departmentRepository;
|
||||
|
||||
@Autowired
|
||||
public RegisterDepartmentImpl(DepartmentRepository DepartmentRepository) {
|
||||
this.departmentRepository = DepartmentRepository;
|
||||
public RegisterDepartmentImpl(DepartmentRepository departmentRepository) {
|
||||
this.departmentRepository = departmentRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* employee インスタンスの内容を登録する
|
||||
*
|
||||
* @param employee 登録対象のデータ
|
||||
* @param Department 登録対象のデータ
|
||||
*/
|
||||
@Override
|
||||
public void registerDepartment(Department department) {
|
||||
departmentRepository.save(DepartmentEntity.convertFrom(department));
|
||||
}
|
||||
|
||||
+16
-1
@@ -33,6 +33,22 @@ public class SearchDepartmentImpl implements SearchDepartment {
|
||||
this.departmentRepository = departmentRepository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 部署名を元にDepartment Table を検索します。
|
||||
*
|
||||
* @param nmDepartment 検索対象の nmDepartment
|
||||
* @return Table から取得したレコードの情報
|
||||
*/
|
||||
public List<Department> searchDepartment(String nmDepartment) {
|
||||
return DepartmentEntity.createDepartmentList(departmentRepository.findByNmDepartment(nmDepartment).stream().toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Department> searchDepartmentById(Integer idDepartment) {
|
||||
return DepartmentEntity.createDepartmentList(departmentRepository.findByIdDepartment(idDepartment).stream().toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 部署情報を全件取得する
|
||||
*
|
||||
@@ -43,7 +59,6 @@ public class SearchDepartmentImpl implements SearchDepartment {
|
||||
}
|
||||
|
||||
/**
|
||||
*seachBy完全一致検索用メソッド
|
||||
* searchConditionDepartment の情報を元に Department のレコードを取得
|
||||
*
|
||||
* @param searchConditionDepartment 検索条件
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.example.rhizome.app.domain.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.service.UpdateDepartment;
|
||||
import com.example.rhizome.app.infra.entity.DepartmentEntity;
|
||||
import com.example.rhizome.app.infra.repository.DepartmentRepository;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
public class UpdateDepartmentImpl implements UpdateDepartment {
|
||||
|
||||
DepartmentRepository departmentRepository;
|
||||
|
||||
@Autowired
|
||||
public UpdateDepartmentImpl(DepartmentRepository departmentRepository) {
|
||||
this.departmentRepository = departmentRepository;
|
||||
}
|
||||
|
||||
|
||||
public void updateDepartment(Department beforeDepartment, Department updateDepartment) {
|
||||
departmentRepository.save(DepartmentEntity.convertFrom(mergeDepartment(beforeDepartment, updateDepartment)));
|
||||
}
|
||||
|
||||
private Department mergeDepartment(Department beforeDepartment, Department updateDepartment) {
|
||||
return new Department(
|
||||
updateDepartment.getIdDepartment(),
|
||||
updateDepartment.getNmDepartment()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package com.example.rhizome.app.infra.repository;
|
||||
|
||||
import com.example.rhizome.app.infra.entity.DepartmentEntity;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.example.rhizome.app.infra.entity.DepartmentEntity;
|
||||
|
||||
|
||||
/**
|
||||
* Specification:
|
||||
@@ -21,7 +24,8 @@ import org.springframework.stereotype.Repository;
|
||||
*/
|
||||
@Repository
|
||||
public interface DepartmentRepository extends JpaRepository<DepartmentEntity, Integer>, JpaSpecificationExecutor<DepartmentEntity> {
|
||||
|
||||
Optional<DepartmentEntity> findByNmDepartment(String nmDepartment);
|
||||
Optional<DepartmentEntity> findByIdDepartment(Integer idDepartment);
|
||||
|
||||
static Specification<DepartmentEntity> idDepartmentEqual(Integer idDepartment) {
|
||||
return idDepartment == null ?
|
||||
|
||||
+24
-27
@@ -1,9 +1,7 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
|
||||
import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -18,24 +16,18 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.model.LoginUser;
|
||||
import com.example.rhizome.app.domain.service.DeleteDepartment;
|
||||
import com.example.rhizome.app.domain.service.SearchDepartment;
|
||||
import com.example.rhizome.app.domain.service.SearchEmployee;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.SessionKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.DepartmentForm;
|
||||
import com.example.rhizome.app.presentation.form.LoginUserForm;
|
||||
import com.example.rhizome.app.presentation.form.MessageForm;
|
||||
|
||||
/**
|
||||
* 削除処理のコントロータ
|
||||
*/
|
||||
@Controller
|
||||
public class DeleteDepartmentController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(DeleteDepartmentController.class.getName());
|
||||
private final static Logger LOGGER = Logger.getLogger(DeleteEmployeeController.class.getName());
|
||||
|
||||
// エラーメッセージ用の定数フィールド
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
@@ -43,18 +35,20 @@ public class DeleteDepartmentController {
|
||||
HttpSession httpSession;
|
||||
DeleteDepartment deleteDepartment;
|
||||
SearchDepartment searchDepartment;
|
||||
SearchEmployee searchEmployee;
|
||||
|
||||
@Autowired
|
||||
public DeleteDepartmentController(DeleteDepartment deleteDepartment, SearchDepartment searchDepartment, HttpSession httpSession) {
|
||||
public DeleteDepartmentController(DeleteDepartment deleteDepartment, SearchDepartment searchDepartment, SearchEmployee searchEmployee, HttpSession httpSession) {
|
||||
this.httpSession = httpSession;
|
||||
this.deleteDepartment = deleteDepartment;
|
||||
this.searchDepartment = searchDepartment;
|
||||
this.searchEmployee = searchEmployee;
|
||||
}
|
||||
|
||||
/**
|
||||
* 削除処理のコントローラ
|
||||
*
|
||||
* @param idEmployee 削除対象のemployeeId
|
||||
* @param idDepartment 削除対象のdepartmentId
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
* @return 遷移先の画面
|
||||
*/
|
||||
@@ -64,18 +58,11 @@ public class DeleteDepartmentController {
|
||||
public String deleteDepartment(@RequestParam("idDepartment") Integer idDepartment, Model model) {
|
||||
|
||||
try {
|
||||
// 部署一覧を取得し、画面に返す用のクラスに詰め替える
|
||||
// 作成した部署一覧をセット
|
||||
model.addAttribute(
|
||||
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
|
||||
DepartmentForm.convertFrom(searchDepartment.selectAll())
|
||||
);
|
||||
|
||||
// 削除処理実施
|
||||
deleteExec(
|
||||
model,
|
||||
idDepartment,
|
||||
LoginUserForm.convertTo((LoginUserForm) httpSession.getAttribute(SessionKeyword.LOGIN_USER)));
|
||||
idDepartment);
|
||||
|
||||
// 検索画面に遷移
|
||||
return "forward:" + TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_INFO_FORM_EMPTY;
|
||||
@@ -96,23 +83,33 @@ public class DeleteDepartmentController {
|
||||
* 削除処理実施
|
||||
*
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
* @param idEmployee 削除対象のemployeeId
|
||||
* @param loginUser ログインユーザー情報
|
||||
* @param idDepartment 削除対象のdepartmentId
|
||||
*/
|
||||
private void deleteExec(Model model, Integer idDepartment, LoginUser loginUser) {
|
||||
private void deleteExec(Model model, Integer idDepartment) {
|
||||
|
||||
final String DELETE_TARGET_ID_CAN_NOT_DELETE = "ログイン者自身は削除出来ません。";
|
||||
final String DELETE_TARGET_ID_NOT_FIND = "削除対象のIDが不明です。";
|
||||
final String DELETE_TARGET_HAS_MEMBERS = "1名以上が所属している部署は削除できません。";
|
||||
final String DELETE_COMPLETE = "削除しました。";
|
||||
|
||||
// ログインしている人が、削除対象かチェック
|
||||
if (Objects.equals(loginUser.getIdDepartment(), idDepartment)) {
|
||||
// 削除対象の部署IDが存在するかチェック
|
||||
if (searchDepartment.searchDepartmentById(idDepartment)==null) {
|
||||
// 削除対象だった場合
|
||||
// エラーメッセージをセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DELETE_TARGET_ID_CAN_NOT_DELETE));
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DELETE_TARGET_ID_NOT_FIND));
|
||||
// 検索画面に遷移
|
||||
return;
|
||||
}
|
||||
|
||||
// 削除対象の部署に所属している社員が1人以上いるか確認
|
||||
if (searchEmployee.searchEmployeeByIdDepartment(idDepartment).size() > 0) {
|
||||
// 削除対象だった場合
|
||||
// エラーメッセージをセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DELETE_TARGET_HAS_MEMBERS));
|
||||
// 検索画面に遷移
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 削除を実施
|
||||
deleteDepartment.deleteDepartment(idDepartment);
|
||||
|
||||
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.service.SearchDepartment;
|
||||
import com.example.rhizome.app.domain.service.impl.SearchDepartmentImpl;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.InsertDepartmentForm;
|
||||
import com.example.rhizome.app.presentation.form.MessageForm;
|
||||
|
||||
@Controller
|
||||
public class InsertDepartmentConfirmController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(InsertEmployeeConfirmController.class.getName());
|
||||
|
||||
// エラーメッセージ用の定数フィールド
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
SearchDepartment searchDepartment;
|
||||
|
||||
@Autowired
|
||||
public InsertDepartmentConfirmController(
|
||||
HttpSession httpSession,
|
||||
SearchDepartmentImpl searchDepartment
|
||||
) {
|
||||
this.httpSession = httpSession;
|
||||
this.searchDepartment = searchDepartment;
|
||||
}
|
||||
|
||||
@ModelAttribute
|
||||
public InsertDepartmentForm insertDepartmentForm() {
|
||||
return new InsertDepartmentForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* 登録情報のチェックを行う
|
||||
*
|
||||
* @param insertDepartmentForm 登録情報
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
* @return 遷移先の画面
|
||||
*/
|
||||
@PermissionCheck
|
||||
@SessionCheck
|
||||
@RequestMapping(value = INSERT_DEPARTMENT_CONFIRM, method = RequestMethod.POST)
|
||||
public String insertDepartmentConfirm(InsertDepartmentForm insertDepartmentForm, Model model) {
|
||||
|
||||
try {
|
||||
|
||||
// 登録用パラメータチェック
|
||||
List<String> error = insertDepartmentForm.validateParameter();
|
||||
|
||||
// 入力内容に誤りがあるか
|
||||
if (!error.isEmpty()) {
|
||||
// 誤りがあった場合
|
||||
// 誤りがあった箇所のエラーメッセージを表示
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(String.join(", ", error) + "が不正です。"));
|
||||
// 画面に返す為の登録情報をセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm);
|
||||
// 登録画面に遷移
|
||||
return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
final String DUPLICATION = "既に登録済みの部署名です。";
|
||||
|
||||
// 登録対象の部署名を元に検索
|
||||
List<Department> departmentList = searchDepartment.searchDepartment(insertDepartmentForm.getNmDepartment());
|
||||
|
||||
// 検索結果があるか
|
||||
if (!departmentList.isEmpty()) {
|
||||
// 検索した結果0件ではない場合
|
||||
// 重複を許さないため、エラー処理
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DUPLICATION));
|
||||
// 画面に返す為の登録情報をセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm);
|
||||
// 登録画面に遷移
|
||||
return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
// 登録確認ページに遷移
|
||||
model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm);
|
||||
// 登録確認画面に遷移
|
||||
return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_CONFIRM_HTML;
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
// ログイン情報の破棄
|
||||
httpSession.invalidate();
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
// エラーログ出力
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
// エラー画面遷移
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.service.RegisterDepartment;
|
||||
import com.example.rhizome.app.domain.service.impl.RegisterDepartmentImpl;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.InsertDepartmentForm;
|
||||
import com.example.rhizome.app.presentation.form.MessageForm;
|
||||
|
||||
@Controller
|
||||
public class InsertDepartmentController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(InsertEmployeeController.class.getName());
|
||||
|
||||
// エラーメッセージ用の定数フィールド
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
RegisterDepartment registerDepartment;
|
||||
|
||||
@Autowired
|
||||
public InsertDepartmentController(HttpSession httpSession, RegisterDepartmentImpl registerDepartment) {
|
||||
this.httpSession = httpSession;
|
||||
this.registerDepartment = registerDepartment;
|
||||
}
|
||||
|
||||
@ModelAttribute
|
||||
public InsertDepartmentForm insertDeaprtmentForm() {
|
||||
return new InsertDepartmentForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* 新規登録画面表示処理
|
||||
*
|
||||
* @param insertDepartmentForm 登録情報
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
* @return 遷移先の画面
|
||||
*/
|
||||
@PermissionCheck
|
||||
@SessionCheck
|
||||
@RequestMapping(value = INSERT_DEPARTMENT, method = RequestMethod.POST)
|
||||
public String insertDepartment(InsertDepartmentForm insertDepartmentForm, Model model) {
|
||||
|
||||
try {
|
||||
|
||||
// Confirm画面から渡ってきた値をチェック
|
||||
List<String> error = validateParameter(
|
||||
insertDepartmentForm.getNmDepartment()
|
||||
);
|
||||
|
||||
// エラーが1件以上有る場合
|
||||
if (!error.isEmpty()) {
|
||||
// エラー内容を画面に表示
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(String.join(", ", error) + "が不正です。"));
|
||||
// 登録画面に遷移
|
||||
return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
// 登録処理
|
||||
registerDepartment.registerDepartment(InsertDepartmentForm.convertTo(insertDepartmentForm));
|
||||
// 登録結果画面に遷移
|
||||
return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_RESULT_HTML;
|
||||
|
||||
} catch (Exception e) {
|
||||
// ログイン情報の破棄
|
||||
httpSession.invalidate();
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
// エラーログ出力
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
// エラー画面遷移
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param departmentName 登録対象の名前
|
||||
* @return エラーが有った場合はエラー文言、無ければ空のリストが返る
|
||||
*/
|
||||
private List<String> validateParameter(String departmentName) {
|
||||
|
||||
final String DEPARTMENT_NAME_NULL_BLANK = "部署名";
|
||||
|
||||
List<String> error = new ArrayList<>();
|
||||
|
||||
// null or 空文字判定
|
||||
if (isNullOrBlank(departmentName)) {
|
||||
// エラー内容を追加
|
||||
error.add(DEPARTMENT_NAME_NULL_BLANK);
|
||||
}
|
||||
|
||||
return error;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 仮引数を null or 空 判定する
|
||||
*
|
||||
* @param str 判定対象の文字列
|
||||
* @return true:null or 空 false:null or 空 では無い
|
||||
*/
|
||||
private static boolean isNullOrBlank(String str) {
|
||||
if (null == str) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return str.isBlank();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+3
-16
@@ -17,33 +17,26 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.service.RegisterDepartment;
|
||||
import com.example.rhizome.app.domain.service.SearchDepartment;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.InsertDepartmentForm;
|
||||
|
||||
/**
|
||||
* 登録画面表示用コントローラ
|
||||
* 部署登録画面を表示するだけ
|
||||
*/
|
||||
@Controller
|
||||
public class InsertDepartmentInputController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(InsertDepartmentInputController.class.getName());
|
||||
private final static Logger LOGGER = Logger.getLogger(InsertEmployeeInputController.class.getName());
|
||||
|
||||
// エラーメッセージ用の定数フィールド
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
RegisterDepartment registerDepartment;
|
||||
SearchDepartment searchDepartment;
|
||||
|
||||
@Autowired
|
||||
public InsertDepartmentInputController(HttpSession httpSession, RegisterDepartment registerDepartment, SearchDepartment searchDepartment) {
|
||||
public InsertDepartmentInputController(HttpSession httpSession, RegisterDepartment registerDepartment) {
|
||||
this.httpSession = httpSession;
|
||||
this.registerDepartment = registerDepartment;
|
||||
this.searchDepartment = searchDepartment;
|
||||
}
|
||||
|
||||
@ModelAttribute
|
||||
@@ -51,7 +44,6 @@ public class InsertDepartmentInputController {
|
||||
return new InsertDepartmentForm();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 登録画面表示処理
|
||||
*
|
||||
@@ -65,9 +57,6 @@ public class InsertDepartmentInputController {
|
||||
public String insertInput(InsertDepartmentForm insertDepartmentForm, Model model) {
|
||||
|
||||
try {
|
||||
// 部署コードリストを作成し、画面に返す値としてセット
|
||||
//model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.selectAll()));
|
||||
|
||||
// パラメータをセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm);
|
||||
|
||||
@@ -86,7 +75,5 @@ public class InsertDepartmentInputController {
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+11
-29
@@ -20,11 +20,8 @@ import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTa
|
||||
import com.example.rhizome.app.presentation.form.DepartmentForm;
|
||||
import com.example.rhizome.app.presentation.form.SearchConditionDepartmentForm;
|
||||
|
||||
/**
|
||||
* 部署検索画面用コントローラ リスト全件表示、検索表示、更新、削除が可能
|
||||
*/
|
||||
@Controller
|
||||
public class SelectDepartmentController {
|
||||
class SelectDepartmentController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(SelectDepartmentController.class.getName());
|
||||
@@ -64,28 +61,13 @@ public class SelectDepartmentController {
|
||||
// 作成した部署一覧をセット
|
||||
model.addAttribute(
|
||||
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
|
||||
DepartmentForm.convertFrom(searchDepartment.selectAll()) //部署一覧をDBから取得→List<DepartmentForm>
|
||||
//DepartmentをDepartmentFormという型に変換
|
||||
//model.Attributet(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,変換した部署一覧)
|
||||
//DBから部署一覧を取得して
|
||||
//画面表示用のDepartmentFormに変換して
|
||||
//departmentFormListという名前で画面に渡す
|
||||
DepartmentForm.convertFrom(searchDepartment.selectAll())
|
||||
);
|
||||
|
||||
// 検索条件を元に検索を実施
|
||||
// 取得した EmployeeInfo( employee + department )の情報を画面に返す用の型に詰め替えてセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_INFO_FORM_LIST,
|
||||
DepartmentForm.convertFrom(
|
||||
searchDepartment.searchByWithLike(
|
||||
SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm))));
|
||||
//SearchConditionDepartmentForm…画面から送られた検索条件
|
||||
//model.Attributet(PageReturnAttributeKeyword.DEPARTMENT_INFO_FORM_LIST,変換済み検索結果)
|
||||
//画面で入力された検索条件を検索用オブジェクトに変換して
|
||||
//その条件で部署を検索して
|
||||
//検索結果を画面表示用のDepartmentFormに変換して、
|
||||
//departmentInfoFormListという名前でHTMLに渡している
|
||||
// 取得した DepartmentInfoの情報を画面に返す用の型に詰め替えてセット
|
||||
model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.searchByWithLike(SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm))));
|
||||
|
||||
// 検索ページに遷移
|
||||
return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
|
||||
|
||||
|
||||
@@ -104,7 +86,7 @@ public class SelectDepartmentController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 社員検索画面表示処理コントローラ
|
||||
* 部署検索画面表示処理コントローラ
|
||||
* 検索条件無しの状態を作るため、空の検索条件で検索した結果を画面に返す
|
||||
*
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
@@ -123,14 +105,14 @@ public class SelectDepartmentController {
|
||||
);
|
||||
|
||||
// 検索条件を元に検索を実施
|
||||
model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_INFO_FORM_LIST,DepartmentForm.convertFrom(
|
||||
searchDepartment.searchByWithLike(
|
||||
SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm()
|
||||
|
||||
|
||||
))));
|
||||
model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
|
||||
DepartmentForm.convertFrom(
|
||||
searchDepartment.searchBy(
|
||||
SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm())
|
||||
)));
|
||||
|
||||
// 検索ページに遷移
|
||||
return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
|
||||
import com.example.rhizome.app.domain.service.SearchDepartment;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.MessageForm;
|
||||
import com.example.rhizome.app.presentation.form.SearchConditionDepartmentForm;
|
||||
import com.example.rhizome.app.presentation.form.UpdateDepartmentForm;
|
||||
|
||||
|
||||
@Controller
|
||||
public class UpdateDepartmentController {
|
||||
|
||||
// ログ出力用インスタンス
|
||||
private final static Logger LOGGER = Logger.getLogger(UpdateEmployeeController.class.getName());
|
||||
// エラーメッセージ用の定数フィールド
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
SearchDepartment searchDepartment;
|
||||
|
||||
@Autowired
|
||||
public UpdateDepartmentController(HttpSession httpSession,
|
||||
SearchDepartment searchDepartment) {
|
||||
this.httpSession = httpSession;
|
||||
this.searchDepartment = searchDepartment;
|
||||
}
|
||||
|
||||
@ModelAttribute
|
||||
public SearchConditionDepartmentForm searchConditionDepartmentForm() {
|
||||
return new SearchConditionDepartmentForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新対象の department が存在するか確認する為のコントローラ
|
||||
*
|
||||
* @param idDepartment 更新対象の department の id
|
||||
* @param model ビューにデータを渡すためのコンテナ
|
||||
* @return 遷移先の画面
|
||||
*/
|
||||
@PermissionCheck
|
||||
@SessionCheck
|
||||
@RequestMapping(value = TransitionTargetPageNameKeyword.SHOW_UPDATE_DEPARTMENT, method=RequestMethod.POST)
|
||||
public String showUpdateDepartment(@RequestParam("idDepartment") Integer idDepartment, Model model) {
|
||||
final String UPDATE_TARGET_ID_NOT_FOUND = "更新対象のデータが見つかりません。";
|
||||
|
||||
try {
|
||||
List<Department> departmentList = searchDepartment.searchBy(
|
||||
new SearchConditionDepartment(idDepartment, null)
|
||||
);
|
||||
|
||||
if (departmentList.isEmpty()) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UPDATE_TARGET_ID_NOT_FOUND));
|
||||
return "forward:" + TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_INFO;
|
||||
}
|
||||
|
||||
model.addAttribute(PageReturnAttributeKeyword.UPDATE_DEPARTMENT_FORM, UpdateDepartmentForm.convertFrom(departmentList.get(0)));
|
||||
|
||||
return TransitionTargetPageNameKeyword.UPDATE_DEPARTMENT_INPUT_HTML;
|
||||
} catch (Exception e) {
|
||||
httpSession.invalidate();
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.example.rhizome.aop.aspect.PermissionCheck;
|
||||
import com.example.rhizome.aop.aspect.SessionCheck;
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
import com.example.rhizome.app.domain.service.SearchDepartment;
|
||||
import com.example.rhizome.app.domain.service.UpdateDepartment;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
|
||||
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
|
||||
import com.example.rhizome.app.presentation.form.MessageForm;
|
||||
import com.example.rhizome.app.presentation.form.UpdateDepartmentForm;
|
||||
|
||||
@Controller
|
||||
public class UpdateDepartmentResultController {
|
||||
|
||||
private final static Logger LOGGER = Logger.getLogger(UpdateDepartmentController.class.getName());
|
||||
|
||||
private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
SearchDepartment searchDepartment;
|
||||
UpdateDepartment updateDepartment;
|
||||
|
||||
@Autowired
|
||||
public UpdateDepartmentResultController(HttpSession httpSession, SearchDepartment searchDepartment, UpdateDepartment updateDepartment) {
|
||||
this.httpSession = httpSession;
|
||||
this.searchDepartment = searchDepartment;
|
||||
this.updateDepartment = updateDepartment;
|
||||
}
|
||||
|
||||
private static boolean checkDuplicateNmDepartment(List<Department> departmentList, UpdateDepartmentForm updateDepartmentForm) {
|
||||
if(!departmentList.isEmpty()) {
|
||||
return !Objects.equals(departmentList.get(0).getNmDepartment(), updateDepartmentForm.getNmDepartment());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@PermissionCheck
|
||||
@SessionCheck
|
||||
@RequestMapping(value = TransitionTargetPageNameKeyword.UPDATE_DEPARTMENT_RESULT, method = RequestMethod.POST)
|
||||
public String departmentUpdateResult(@ModelAttribute UpdateDepartmentForm updateDepartmentForm, Model model) {
|
||||
|
||||
final String DUPLICATION = "既に同名の部署が存在するか、値が変更されていません。";
|
||||
final String NOTHING = "項目が空欄です。";
|
||||
final String NO_TARGET = "更新対象のデータが見つかりません。";
|
||||
|
||||
final String UPDATE_COMPLETE = "更新が完了しました。";
|
||||
|
||||
try {
|
||||
List<Department> departmentList = searchDepartment.searchDepartment(updateDepartmentForm.getNmDepartment());
|
||||
|
||||
if (!checkDuplicateNmDepartment(departmentList, updateDepartmentForm)) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DUPLICATION));
|
||||
model.addAttribute(PageReturnAttributeKeyword.UPDATE_DEPARTMENT_FORM, updateDepartmentForm);
|
||||
|
||||
return TransitionTargetPageNameKeyword.UPDATE_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
if (!UpdateDepartmentForm.hasErrorParameter(updateDepartmentForm)) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(NOTHING));
|
||||
model.addAttribute(PageReturnAttributeKeyword.UPDATE_DEPARTMENT_FORM, updateDepartmentForm);
|
||||
|
||||
return TransitionTargetPageNameKeyword.UPDATE_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
Department beforeDepartment = searchDepartment.searchDepartmentById(updateDepartmentForm.getIdDepartment()).get(0);
|
||||
if (beforeDepartment.getIdDepartment() == null) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(NO_TARGET));
|
||||
model.addAttribute(PageReturnAttributeKeyword.UPDATE_DEPARTMENT_FORM, updateDepartmentForm);
|
||||
|
||||
return TransitionTargetPageNameKeyword.UPDATE_DEPARTMENT_INPUT_HTML;
|
||||
}
|
||||
|
||||
updateDepartment.updateDepartment(beforeDepartment, UpdateDepartmentForm.counvertTo(updateDepartmentForm));
|
||||
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_INFO, new MessageForm(UPDATE_COMPLETE));
|
||||
|
||||
return "forward:" + TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_INFO_FORM_EMPTY;
|
||||
|
||||
} catch (Exception e) {
|
||||
httpSession.invalidate();
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+2
-5
@@ -2,7 +2,6 @@ package com.example.rhizome.app.presentation.controller.pageproperty;
|
||||
|
||||
/**
|
||||
* Servlet から Servlet に返却する際に使用する文字列を管理するクラス
|
||||
* モデルに渡すキー名を定数化
|
||||
*/
|
||||
public class PageReturnAttributeKeyword {
|
||||
|
||||
@@ -10,14 +9,12 @@ public class PageReturnAttributeKeyword {
|
||||
public static final String MESSAGE_INFO = "messageInfo";
|
||||
|
||||
public static final String DEPARTMENT_FORM_LIST = "departmentFormList";
|
||||
public static final String DEPARTMENT_INFO_FORM_LIST = "departmentInfoFormList";
|
||||
public static final String UPDATE_EMPLOYEE_INFO_FORM = "updateEmployeeInfoForm";
|
||||
public static final String UPDATE_DEPARTMENT_FORM = "updateDepartmentForm";
|
||||
public static final String INSERT_EMPLOYEE_FORM = "insertEmployeeForm";
|
||||
public static final String INSERT_DEPARTMENT_FORM = "insertDepartmentForm";
|
||||
public static final String LOGIN_INFO_FORM = "loginInfoForm";
|
||||
public static final String UPDATE_PERSONAL_EMPLOYEE_USER_FORM = "updatePersonalEmployeeUserForm";
|
||||
public static final String EMPLOYEE_INFO_FORM_LIST = "employeeInfoFormList";
|
||||
public static final String INSERT_DEPARTMENT_INPUT = "insertDepartmentInput";
|
||||
public static final String INSERT_DEPARTMENT_FORM = "insertDepartmentForm";
|
||||
public static final String INSERT_DEPARTMENT_INPUT_HTML = "insertDepartmentInputHtml";
|
||||
|
||||
}
|
||||
|
||||
+22
-14
@@ -4,7 +4,6 @@ import java.util.Set;
|
||||
|
||||
/**
|
||||
* システムで利用しているJSPのリスト
|
||||
* 画面用(URL)用の定数、行き先管理
|
||||
*/
|
||||
public class TransitionTargetPageNameKeyword {
|
||||
|
||||
@@ -15,16 +14,18 @@ public class TransitionTargetPageNameKeyword {
|
||||
public static final String UPDATE_PERSONAL_EMPLOYEE_INPUT_HTML = "updatePersonalEmployeeInput";
|
||||
public static final String UPDATE_PERSONAL_RESULT_HTML = "updatePersonalEmployeeResult";
|
||||
|
||||
// 管理者向け(View名)
|
||||
// 管理者向け
|
||||
public static final String MENU_HTML = "menu";
|
||||
public static final String SELECT_EMPLOYEE_HTML = "selectEmployee";
|
||||
public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
|
||||
public static final String INSERT_EMPLOYEE_INPUT_HTML = "insertEmployeeInput";
|
||||
public static final String INSERT_EMPLOYEE_CONFIRM_HTML = "insertEmployeeConfirm";
|
||||
public static final String INSERT_EMPLOYEE_RESULT_HTML = "insertEmployeeResult";
|
||||
public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
|
||||
public static final String INSERT_DEPARTMENT_INPUT_HTML = "insertDepartmentInput";
|
||||
public static final String DELET_DEPARTMENT_HTML = "deleteDepartment";
|
||||
public static final String INSERT_EMPLOYEE_CONFIRM_HTML = "insertEmployeeConfirm";
|
||||
public static final String INSERT_DEPARTMENT_CONFIRM_HTML = "insertDepartmentConfirm";
|
||||
public static final String INSERT_EMPLOYEE_RESULT_HTML = "insertEmployeeResult";
|
||||
public static final String INSERT_DEPARTMENT_RESULT_HTML = "insertDepartmentResult";
|
||||
public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
|
||||
public static final String UPDATE_DEPARTMENT_INPUT_HTML = "updateDepartmentInput";
|
||||
|
||||
public static final String ERROR_HTML = "error";
|
||||
|
||||
@@ -38,20 +39,24 @@ public class TransitionTargetPageNameKeyword {
|
||||
// 一般向け(Controller)
|
||||
public static final String PERSONAL_UPDATE_RESULT = "/updatePersonalEmployeeResult";
|
||||
|
||||
// 管理者向け(Controller)(ブラウザから呼ばれるURL)
|
||||
// 管理者向け(Controller)
|
||||
public static final String DELETE_EMPLOYEE = "/deleteEmployee";
|
||||
public static final String DELETE_DEPARTMENT = "/deleteDepartment";
|
||||
public static final String INSERT_EMPLOYEE_INPUT = "/insertEmployeeInput";
|
||||
public static final String INSERT_EMPLOYEE_CONFIRM = "/insertEmployeeConfirm";
|
||||
public static final String INSERT_EMPLOYEE = "/insertEmployee";
|
||||
public static final String INSERT_DEPARTMENT_INPUT = "/insertDepartmentInput";
|
||||
public static final String INSERT_DEPARTMENT_CONFIRM = "/insertDepartmentConfirm";
|
||||
public static final String INSERT_DEPARTMENT = "/insertDepartment";
|
||||
public static final String SHOW_MENU = "/showMenu";
|
||||
public static final String SELECT_EMPLOYEE_INFO = "/selectEmployeeInfo";
|
||||
public static final String SELECT_DEPARTMENT_INFO = "/selectDepartmentInfo";
|
||||
public static final String SELECT_EMPLOYEE_INFO_FORM_EMPTY = "/selectAll";
|
||||
public static final String SELECT_DEPARTMENT_INFO_FORM_EMPTY = "/selectDepartmentAll";
|
||||
public static final String SELECT_DEPARTMENT_INFO_FORM_EMPTY = "/selectAllDepartment";
|
||||
public static final String SHOW_UPDATE_EMPLOYEE = "/showUpdateEmployee";
|
||||
public static final String UPDATE_EMPLOYEE_RESULT = "/updateEmployeeResult";
|
||||
public static final String INSERT_DEPARTMENT_INPUT = "/insertDepartmentInput";
|
||||
public static final String DELETE_DEPARTMENT = "/deleteDepartment";
|
||||
public static final String SHOW_UPDATE_DEPARTMENT = "/showUpdateDepartment";
|
||||
public static final String UPDATE_DEPARTMENT_RESULT = "/updateDepartmentResult";
|
||||
|
||||
// Department
|
||||
// HTML
|
||||
@@ -75,15 +80,18 @@ public class TransitionTargetPageNameKeyword {
|
||||
INSERT_EMPLOYEE_INPUT,
|
||||
INSERT_EMPLOYEE_CONFIRM,
|
||||
INSERT_EMPLOYEE,
|
||||
INSERT_DEPARTMENT_INPUT,
|
||||
INSERT_DEPARTMENT_CONFIRM,
|
||||
INSERT_DEPARTMENT,
|
||||
SHOW_MENU,
|
||||
SELECT_EMPLOYEE_INFO,
|
||||
SELECT_DEPARTMENT_INFO,
|
||||
SELECT_EMPLOYEE_INFO_FORM_EMPTY,
|
||||
SELECT_DEPARTMENT_INFO_FORM_EMPTY,
|
||||
SHOW_UPDATE_EMPLOYEE,
|
||||
UPDATE_EMPLOYEE_RESULT,
|
||||
SELECT_DEPARTMENT_INFO,
|
||||
SELECT_DEPARTMENT_INFO_FORM_EMPTY,
|
||||
INSERT_DEPARTMENT_INPUT
|
||||
|
||||
SHOW_UPDATE_DEPARTMENT,
|
||||
UPDATE_DEPARTMENT_RESULT
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,52 +9,16 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 画面から渡ってきた登録内容をまとめ、再度画面に表示する為のクラス
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class InsertDepartmentForm {
|
||||
|
||||
/**
|
||||
* 部署ID
|
||||
*/
|
||||
private Integer idDepartment;
|
||||
|
||||
/**
|
||||
* 部署名
|
||||
*/
|
||||
private String nmDepartment;
|
||||
|
||||
|
||||
/**
|
||||
* パスワードのValidation
|
||||
* チェック対象にエラーが有った場合エラーリストに文言を追加する
|
||||
*
|
||||
* @param password 登録対象のパスワード
|
||||
* @param passwordConfirm 登録対象のパスワード再入力
|
||||
* @param error エラーリスト
|
||||
*/
|
||||
private static void checkPassword(String password, String passwordConfirm, List<String> error) {
|
||||
final String PASSWORD_NULL_BLANK = "パスワード が未入力です。";
|
||||
final String PASSWORD_CONFIRM_NULL_BLANK = "パスワード確認用 が未入力です。";
|
||||
final String PASSWORD_MISMATCH = "パスワード と パスワード確認用 が一致しません。";
|
||||
|
||||
if (isNullOrBlank(password)) {
|
||||
error.add(PASSWORD_NULL_BLANK);
|
||||
return;
|
||||
}
|
||||
if (isNullOrBlank(passwordConfirm)) {
|
||||
error.add(PASSWORD_CONFIRM_NULL_BLANK);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!password.equals(passwordConfirm)) {
|
||||
error.add(PASSWORD_MISMATCH);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 仮引数を null or 空 判定する
|
||||
*
|
||||
@@ -72,13 +36,12 @@ public class InsertDepartmentForm {
|
||||
/**
|
||||
* 画面から渡ってきた登録内容をまとめ、ビジネスモデルに変換
|
||||
*
|
||||
* @param insertEmployeeForm 画面から渡ってきた登録内容
|
||||
* @param insertDepartmentForm 画面から渡ってきた登録内容
|
||||
* @return ビジネスモデルのインスタンス
|
||||
*/
|
||||
public static Department convertTo(InsertDepartmentForm insertDepartmentForm) {
|
||||
return new Department(
|
||||
|
||||
insertDepartmentForm.getIdDepartment(),
|
||||
null,
|
||||
insertDepartmentForm.getNmDepartment()
|
||||
);
|
||||
}
|
||||
@@ -89,8 +52,7 @@ public class InsertDepartmentForm {
|
||||
* @return エラーが有った場合はエラー文言、無ければ空のリストが返る
|
||||
*/
|
||||
public List<String> validateParameter() {
|
||||
final String DEPARTMENT_NAME_NULL_BLANK = "部署名"; //入力エラーになったときに返す項目
|
||||
final String DEPARTMENT_ID_NULL_BLANK = "所属部署";
|
||||
final String DEPARTMENT_NAME_NULL_BLANK = "部署名";
|
||||
|
||||
List<String> error = new ArrayList<>();
|
||||
|
||||
@@ -98,11 +60,6 @@ public class InsertDepartmentForm {
|
||||
error.add(DEPARTMENT_NAME_NULL_BLANK);
|
||||
}
|
||||
|
||||
|
||||
if (idDepartment == null) {
|
||||
error.add(DEPARTMENT_ID_NULL_BLANK);
|
||||
}
|
||||
|
||||
return error;
|
||||
|
||||
}
|
||||
|
||||
+8
-9
@@ -10,10 +10,9 @@ import lombok.NoArgsConstructor;
|
||||
* 画面から渡ってきた検索条件をまとめ、再度画面に表示する為のクラス
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor //全フィールドを初期化するコンストラクタ生成
|
||||
@NoArgsConstructor //デフォルトコントラスタを自動生成
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SearchConditionDepartmentForm {
|
||||
|
||||
/**
|
||||
* 部署ID
|
||||
*/
|
||||
@@ -24,11 +23,11 @@ public class SearchConditionDepartmentForm {
|
||||
private String nmDepartment;
|
||||
|
||||
/**
|
||||
* business (サービス)層の SearchConditionEmployee クラスから画面用(presentation 層)の SearchConditionEmployeeForm に
|
||||
* business 層の SearchConditionDepaerment クラスから画面用(presentation 層)の SearchConditionDepartmentForm に
|
||||
* 変換します。
|
||||
*
|
||||
* @param searchConditionEmployee business 層の SearchConditionEmployee インスタンス
|
||||
* @return 画面用(presentation 層)の SearchConditionEmployeeForm インスタンス
|
||||
* @param searchConditionDepartment business 層の SearchConditionDepartment インスタンス
|
||||
* @return 画面用(presentation 層)の SearchConditionDepartmentForm インスタンス
|
||||
*/
|
||||
public static SearchConditionDepartmentForm convertFrom(SearchConditionDepartment searchConditionDepartment) {
|
||||
return new SearchConditionDepartmentForm(
|
||||
@@ -38,11 +37,11 @@ public class SearchConditionDepartmentForm {
|
||||
}
|
||||
|
||||
/**
|
||||
* 画面用(presentation 層)の SearchConditionEmployeeForm クラスから business 層の SearchConditionEmployee クラスに
|
||||
* 画面用(presentation 層)の SearchConditionDepartmentForm クラスから business 層の SearchConditionDepartment クラスに
|
||||
* 変換します。
|
||||
*
|
||||
* @param searchConditionEmployeeForm 画面用(presentation 層)の SearchConditionEmployeeForm インスタンス
|
||||
* @return business 層の SearchConditionEmployee インスタンス
|
||||
* @param searchConditionDepartmentForm 画面用(presentation 層)の SearchConditionDepartmentForm インスタンス
|
||||
* @return business 層の SearchConditionDepartment インスタンス
|
||||
*/
|
||||
public static SearchConditionDepartment convertTo(SearchConditionDepartmentForm searchConditionDepartmentForm) {
|
||||
return new SearchConditionDepartment(
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.example.rhizome.app.presentation.form;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.example.rhizome.app.domain.model.Department;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class UpdateDepartmentForm {
|
||||
|
||||
private Integer idDepartment;
|
||||
|
||||
private String nmDepartment;
|
||||
|
||||
public static UpdateDepartmentForm convertFrom(Department department) {
|
||||
return new UpdateDepartmentForm(
|
||||
department.getIdDepartment(),
|
||||
department.getNmDepartment()
|
||||
);
|
||||
}
|
||||
|
||||
public static List<UpdateDepartmentForm> counvertFrom(List<Department> departmentList){
|
||||
return departmentList.stream().map(UpdateDepartmentForm::convertFrom).toList();
|
||||
}
|
||||
|
||||
public static Department counvertTo(UpdateDepartmentForm updateDepartmentForm) {
|
||||
return new Department(
|
||||
updateDepartmentForm.getIdDepartment(),
|
||||
updateDepartmentForm.getNmDepartment()
|
||||
);
|
||||
}
|
||||
|
||||
public static boolean hasErrorParameter(UpdateDepartmentForm updateDeaprtmentForm) {
|
||||
boolean errorFlag = !isNullOrBlank(updateDeaprtmentForm.getNmDepartment());
|
||||
|
||||
return errorFlag;
|
||||
}
|
||||
|
||||
private static boolean isNullOrBlank(String str) {
|
||||
if (null == str) {
|
||||
return true;
|
||||
}
|
||||
return str.isBlank();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/springdb
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/rezodb
|
||||
spring.datasource.username=rezouser
|
||||
spring.datasource.password=Rezo_0000
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
||||
<!-- 外部のスクリプトファイルを読み込む -->
|
||||
<script th:src="@{/js/common.js}"></script>
|
||||
<!-- CSSの読み込み -->
|
||||
<link rel="stylesheet" th:href="@{/css/all.css}">
|
||||
<link rel=stylesheet th:href="@{/css/style.css}" type="text/css">
|
||||
<title>登録内容確認</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>登録内容確認
|
||||
<div class="rightSection">
|
||||
<span class="loginInfo">ログイン者名:<span th:text="${session.loginUser.nmEmployee}"></span></span>
|
||||
<button class="logoutButton" onclick="logoutSubmit()">ログアウト</button>
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
<form action="insertDepartment"
|
||||
id="insertForm"
|
||||
method="post"
|
||||
th:object="${insertDepartmentForm}">
|
||||
|
||||
<div class="msgBox error" th:if="${messageError != null}">
|
||||
<span class="error" th:each="message : ${messageError.message}" th:text="${message}"></span>
|
||||
</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="header">部署ID</th>
|
||||
<td>
|
||||
<label>
|
||||
<input class="readOnly"
|
||||
name="depId"
|
||||
readonly="readonly"
|
||||
type="text"
|
||||
value="自動で設定されます"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="header">部署名</th>
|
||||
<td>
|
||||
<label>
|
||||
<input class="readOnly"
|
||||
name="nmDepartment"
|
||||
readonly="readonly"
|
||||
th:value="*{nmDepartment}"
|
||||
type="text"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="btnArea" colspan="2">
|
||||
<input type="submit" value="登録"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a href="javascript:onClickEdit()">登録内容の編集</a> | <a href="showMenu">メニューに戻る</a>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
function onClickEdit() {
|
||||
const form = document.getElementById('insertForm');
|
||||
form.setAttribute('method', 'post');
|
||||
form.setAttribute('action', 'insertDepartmentInput');
|
||||
|
||||
// 確認画面から編集画面に戻ってきたときのフラグ(未使用)
|
||||
const inputField = document.createElement("input");
|
||||
inputField.setAttribute("type", "hidden");
|
||||
inputField.setAttribute("name", "backFlg");
|
||||
inputField.setAttribute("value", "edit");
|
||||
|
||||
form.appendChild(inputField);
|
||||
|
||||
// フォームをDOMに追加
|
||||
document.body.appendChild(form);
|
||||
|
||||
form.submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -54,7 +54,6 @@
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="btnArea" colspan="2">
|
||||
<input type="submit" value="登録確認"/>
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
||||
<!-- 外部のスクリプトファイルを読み込む -->
|
||||
<script th:src="@{/js/common.js}"></script>
|
||||
<!-- CSSの読み込み -->
|
||||
<link rel="stylesheet" th:href="@{/css/all.css}">
|
||||
<link rel=stylesheet th:href="@{/css/style.css}" type="text/css">
|
||||
<title>部署登録完了</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>部署登録が完了しました</h2>
|
||||
<br/>
|
||||
<a href="javascript:insertSubmit()">続けて登録する</a> | <a href="showMenu">メニューに戻る</a>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
function insertSubmit() {
|
||||
const form = document.createElement('form');
|
||||
form.setAttribute('method', 'post');
|
||||
form.setAttribute('action', 'insertDepartmentInput');
|
||||
|
||||
// 動的送信用のHidden
|
||||
// 動的にFormを作成する場合は何かしら送信しないと、正しく動作しない
|
||||
const inputField = document.createElement("input");
|
||||
inputField.setAttribute("type", "hidden");
|
||||
inputField.setAttribute("value", "select");
|
||||
|
||||
form.appendChild(inputField);
|
||||
|
||||
// フォームをDOMに追加
|
||||
document.body.appendChild(form);
|
||||
|
||||
form.submit();
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
@@ -26,22 +26,19 @@
|
||||
<td><a class="menuClass" href="javascript:selectEmployeeSubmit()"><i class="fas fa-search"></i> 社員検索 </a>
|
||||
</td>
|
||||
<td class="description">登録済みのユーザ一覧表示と</br>更新、削除を行います。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td><a class="menuClass" href="javascript:selectDepartmentSubmit()"><i class="fas fa-search"></i> 部署検索 </a>
|
||||
</td>
|
||||
<td class="description">登録済みの部署一覧表示と</br>更新、削除を行います。</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><a class="menuClass" href="javascript:insertDepartmentSubmit()"><i class="fas fa-search"></i> 部署登録 </a>
|
||||
</td>
|
||||
<td class="description">部署の新規登録を行います。</br></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><a class="menuClass" href="javascript:insertEmployeeSubmit()"><i class="fas fa-plus"></i> 社員登録 </a></td>
|
||||
<td class="description">新規でユーザ追加を行います。</td>
|
||||
|
||||
<td><a class="menuClass" href="javascript:insertDepartmentSubmit()"><i class="fas fa-plus"></i> 部署登録 </a></td>
|
||||
<td class="description">新規で部署追加を行います。</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
</script>
|
||||
</th:block>
|
||||
<div class="header-spacing"></div>
|
||||
<th:block th:if="${departmentInfoFormList != null and departmentInfoFormList.size() > 0}">
|
||||
<th:block th:if="${departmentFormList != null and departmentFormList.size() > 0}">
|
||||
<!-- 検索結果が1件以上ある場合 -->
|
||||
<table class="table-grid table-striped table-hover">
|
||||
<thead>
|
||||
@@ -76,19 +76,19 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="departmentInfoForm : ${departmentInfoFormList}">
|
||||
<td th:text="${departmentInfoForm.idDepartment}"></td>
|
||||
<td th:text="${departmentInfoForm.nmDepartment}"></td>
|
||||
<tr th:each="departmentForm : ${departmentFormList}">
|
||||
<td th:text="${departmentForm.idDepartment}"></td>
|
||||
<td th:text="${departmentForm.nmDepartment}"></td>
|
||||
<td>
|
||||
<!-- 更新フォーム -->
|
||||
<form action="showUpdateDepartment" method="post" style="display: inline;">
|
||||
<input name="idDepartment" th:value="${departmentInfoForm.idDepartment}" type="hidden">
|
||||
<input name="idDepartment" th:value="${departmentForm.idDepartment}" type="hidden">
|
||||
<input type="submit" value="更新">
|
||||
</form>
|
||||
<!-- 削除フォーム -->
|
||||
<form action="deleteDepartment" method="post" onsubmit="return confirm('本当に削除しますか?');"
|
||||
style="display: inline;">
|
||||
<input name="idDepartment" th:value="${departmentInfoForm.idDepartment}" type="hidden">
|
||||
<input name="idDepartment" th:value="${departmentForm.idDepartment}" type="hidden">
|
||||
<input type="submit" value="削除">
|
||||
</form>
|
||||
</td>
|
||||
@@ -96,7 +96,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</th:block>
|
||||
<th:block th:if="${departmentInfoFormList == null or departmentInfoFormList.size() == 0}">
|
||||
<th:block th:if="${departmentFormList == null or departmentFormList.size() == 0}">
|
||||
<!-- 検索結果が0件の場合 -->
|
||||
検索結果はありません。
|
||||
</th:block>
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
||||
<!-- 外部のスクリプトファイルを読み込む -->
|
||||
<script th:src="@{/js/common.js}"></script>
|
||||
<!-- CSSの読み込み -->
|
||||
<link rel="stylesheet" th:href="@{/css/all.css}">
|
||||
<link rel=stylesheet th:href="@{/css/style.css}" type="text/css">
|
||||
<title>部署情報更新</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>
|
||||
部署情報更新
|
||||
<div class="rightSection">
|
||||
<span class="loginInfo">ログイン者名:<span th:text="${session.loginUser.nmEmployee}"></span></span>
|
||||
<button class="logoutButton" onclick="logoutSubmit()">ログアウト</button>
|
||||
</div>
|
||||
</h1>
|
||||
<form action="/updateDepartmentResult"
|
||||
method="post"
|
||||
onsubmit="return confirm('本当によろしいですか?');"
|
||||
th:object="${updateDepartmentForm}"
|
||||
>
|
||||
<div class="msgBox error" th:if="${messageError != null}">
|
||||
<span class="error" th:each="message : ${messageError.message}" th:text="${message}"></span>
|
||||
</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="header">部署ID</th>
|
||||
<td>
|
||||
<label>
|
||||
<input class="readOnly"
|
||||
readonly="readonly"
|
||||
th:field="*{idDepartment}"
|
||||
type="text"
|
||||
/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="header">部署名</th>
|
||||
<td>
|
||||
<label>
|
||||
<input maxlength="50"
|
||||
placeholder="部署名"
|
||||
required="required"
|
||||
th:field="*{nmDepartment}"
|
||||
type="text"
|
||||
/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="btnArea" colspan="2">
|
||||
<input type="submit" value="更新"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<a href="javascript:selectSubmit()">一覧に戻る</a>
|
||||
</body>
|
||||
|
||||
<script>
|
||||
function selectSubmit() {
|
||||
const form = document.createElement('form');
|
||||
form.setAttribute('method', 'post');
|
||||
form.setAttribute('action', 'selectAllDepartment');
|
||||
|
||||
// 動的送信用のHidden
|
||||
// 動的にFormを作成する場合は何かしら送信しないと、正しく動作しない
|
||||
const inputField = document.createElement("input");
|
||||
inputField.setAttribute("type", "hidden");
|
||||
inputField.setAttribute("value", "selectAllDepartment");
|
||||
|
||||
form.appendChild(inputField);
|
||||
|
||||
// フォームをDOMに追加
|
||||
document.body.appendChild(form);
|
||||
|
||||
form.submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
||||
@@ -1,10 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Insert title here</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,10 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Insert title here</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,114 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
||||
<!-- 外部のスクリプトファイルを読み込む -->
|
||||
<script th:src="@{/js/common.js}"></script>
|
||||
<!-- CSSの読み込み -->
|
||||
<link rel="stylesheet" th:href="@{/css/all.css}">
|
||||
<link rel=stylesheet th:href="@{/css/style.css}" type="text/css">
|
||||
<title>検索</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
検索条件入力
|
||||
<div class="rightSection">
|
||||
<span class="loginInfo">ログイン者名:<span th:text="${session.loginUser.nmEmployee}"></span></span>
|
||||
<button class="logoutButton" onclick="logoutSubmit()">ログアウト</button>
|
||||
</div>
|
||||
</h1>
|
||||
<form action="selectDepartmentInfo"
|
||||
method="post"
|
||||
th:object="${searchConditionDepartmentForm}">
|
||||
|
||||
<div class="msgBox error" th:if="${messageError} != null">
|
||||
<span class="error" th:text="${messageError.message}"></span>
|
||||
</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="header">部署ID</th>
|
||||
<td>
|
||||
<input placeholder="部署ID"
|
||||
th:field="*{idDepartment}"
|
||||
type="number"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="header">部署名</th>
|
||||
<td>
|
||||
<input placeholder="部署名"
|
||||
th:field="*{nmDepartment}"
|
||||
type="text"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="btnArea" colspan="2">
|
||||
<input type="submit" value="検索"/>
|
||||
</td>
|
||||
<td class="btnArea" colspan="2">
|
||||
<button onclick="clearInput()">クリア</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<div class="header-spacing"></div>
|
||||
<a href="showMenu">メニューに戻る</a>
|
||||
<div class="header-spacing"></div>
|
||||
<h1><span>検索結果</span></h1>
|
||||
<div class="header-spacing"></div>
|
||||
<th:block th:if="${messageInfo != null}">
|
||||
<script th:inline="javascript">
|
||||
alert([[${messageInfo.message}]]);
|
||||
</script>
|
||||
</th:block>
|
||||
<div class="header-spacing"></div>
|
||||
<th:block th:if="${departmentInfoFormList != null and departmentInfoFormList.size() > 0}">
|
||||
<!-- 検索結果が1件以上ある場合 -->
|
||||
<table class="table-grid table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 60px;">部署ID</th>
|
||||
<th style="width: 100px;">部署名</th>
|
||||
<th style="width: 150px;">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="departmentInfoForm : ${departmentInfoFormList}">
|
||||
<td th:text="${departmentInfoForm.idDepartment}"></td>
|
||||
<td th:text="${departmentInfoForm.nmDepartment}"></td>
|
||||
<td>
|
||||
<!-- 更新フォーム -->
|
||||
<form action="showUpdateDepartment" method="post" style="display: inline;">
|
||||
<input name="idDepartment" th:value="${departmentInfoForm.idDepartment}" type="hidden">
|
||||
<input type="submit" value="更新">
|
||||
</form>
|
||||
<!-- 削除フォーム -->
|
||||
<form action="deleteDepartment" method="post" onsubmit="return confirm('本当に削除しますか?');"
|
||||
style="display: inline;">
|
||||
<input name="idDepartment" th:value="${departmentInfoForm.idDepartment}" type="hidden">
|
||||
<input type="submit" value="削除">
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</th:block>
|
||||
<th:block th:if="${departmentInfoFormList == null or departmentInfoFormList.size() == 0}">
|
||||
<!-- 検索結果が0件の場合 -->
|
||||
検索結果はありません。
|
||||
</th:block>
|
||||
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
|
||||
function clearInput() {
|
||||
document.getElementById('idDepartment').value = '';
|
||||
document.getElementById('nmDepartment').value = '';
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</html>
|
||||
@@ -1,10 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Insert title here</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user