第二段階途中
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package com.example.rhizome.app.domain.service;
|
||||
|
||||
public interface DeleteDepartment {
|
||||
void deleteDepartment(Integer idDepartment);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
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.service.DeleteDepartment;
|
||||
import com.example.rhizome.app.infra.repository.DepartmentRepository;
|
||||
|
||||
//@Srviceをつけ忘れるとControllerで使うときに起動時エラーになってしまう
|
||||
@Service
|
||||
@Transactional
|
||||
public class DeleteDepartmentImpl implements DeleteDepartment {
|
||||
|
||||
DepartmentRepository departmentRepository;
|
||||
|
||||
@Autowired
|
||||
public DeleteDepartmentImpl(DepartmentRepository departmentRepository) {
|
||||
this.departmentRepository = departmentRepository;
|
||||
}
|
||||
|
||||
public void deleteDepartment(Integer idDepartment) {
|
||||
// ★考える:Repository のどのメソッドで「IDを指定して削除」できる?
|
||||
// (お手本の DeleteEmployeeImpl を見る)
|
||||
departmentRepository.deleteById(idDepartment);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.example.rhizome.app.presentation.controller;
|
||||
|
||||
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.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
|
||||
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.TransitionTargetPageNameKeyword;
|
||||
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 String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
|
||||
|
||||
HttpSession httpSession;
|
||||
DeleteDepartment deleteDepartment;
|
||||
SearchDepartment searchDepartment;
|
||||
SearchEmployee searchEmployee; // 所属社員の確認に使う(既存)
|
||||
|
||||
@Autowired
|
||||
public DeleteDepartmentController(HttpSession httpSession, DeleteDepartment deleteDepartment,
|
||||
SearchDepartment searchDepartment, SearchEmployee searchEmployee) {
|
||||
this.httpSession = httpSession;
|
||||
this.deleteDepartment = deleteDepartment;
|
||||
this.searchDepartment = searchDepartment;
|
||||
this.searchEmployee = searchEmployee;
|
||||
}
|
||||
|
||||
@RequestMapping(value = TransitionTargetPageNameKeyword.DELETE_DEPARTMENT, method = RequestMethod.POST)
|
||||
public String deleteDepartment(@RequestParam(value = "idDepartment", required = false) Integer idDepartment,
|
||||
Model model) {
|
||||
|
||||
final String UNKNOWN_ID = "削除対象のIDが不明です。";
|
||||
final String HAS_EMPLOYEE = "1名以上が所属している部署は削除出来ません。";
|
||||
final String DELETE_COMPLETE = "削除しました。";
|
||||
|
||||
try {
|
||||
// ★① idDepartment が null、または searchDepartment.searchBy(new SearchConditionDepartment(idDepartment, null)) が空
|
||||
// → MESSAGE_ERROR に UNKNOWN_ID を載せて一覧へ
|
||||
if (idDepartment == null
|
||||
|| searchDepartment.searchBy(new SearchConditionDepartment(idDepartment, null)).isEmpty()) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UNKNOWN_ID));
|
||||
return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
|
||||
}
|
||||
// ★② searchEmployee.searchEmployeeByIdDepartment(idDepartment) が空でない
|
||||
// → MESSAGE_ERROR に HAS_EMPLOYEE を載せて一覧へ
|
||||
if (!searchEmployee.searchEmployeeByIdDepartment(idDepartment).isEmpty()) {
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UNKNOWN_ID));
|
||||
return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
|
||||
}
|
||||
// ★③ deleteDepartment.deleteDepartment(idDepartment) → MESSAGE_INFO に DELETE_COMPLETE を載せて一覧へ
|
||||
deleteDepartment.deleteDepartment(idDepartment);
|
||||
model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UNKNOWN_ID));
|
||||
|
||||
//以下がメッセージの載せ方
|
||||
//model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UNKNOWN_ID));
|
||||
return "一覧へ戻る(ステップ 2-5 で決める)";
|
||||
} catch (Exception e) {
|
||||
httpSession.invalidate();
|
||||
e.printStackTrace();
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,4 +62,18 @@ public class SelectDepartmentController {
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_FORM_EMPTY, method = RequestMethod.POST)
|
||||
public String select(Model model) {
|
||||
try {
|
||||
// ★全件取得 → DepartmentForm に変換 → DEPARTMENT_FORM_LIST で model へ
|
||||
return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
|
||||
} catch (Exception e) {
|
||||
httpSession.invalidate();
|
||||
e.printStackTrace();
|
||||
LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
|
||||
return TransitionTargetPageNameKeyword.ERROR_HTML;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,8 @@ public class TransitionTargetPageNameKeyword {
|
||||
public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
|
||||
// Controller
|
||||
public static final String SELECT_DEPARTMENT = "/selectDepartment";
|
||||
public static final String DELETE_DEPARTMENT = "/deleteDepartment";
|
||||
public static final String SELECT_DEPARTMENT_FORM_EMPTY = "/selectDepartmentAll";
|
||||
|
||||
/**
|
||||
* 管理者向けのページリストを返す
|
||||
|
||||
Reference in New Issue
Block a user