第二段階途中
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;
|
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";
|
public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
|
||||||
// Controller
|
// Controller
|
||||||
public static final String SELECT_DEPARTMENT = "/selectDepartment";
|
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