// Path: micro-core/src/main/java/sample/api/ApiUtils.java
// public abstract class ApiUtils {
// 
//     /** 戻り値を生成して返します。(戻り値がプリミティブまたはnullを許容する時はこちらを利用してください) */
//     public static <T> ResponseEntity<T> result(Supplier<T> command) {
//         return ResponseEntity.status(HttpStatus.OK).body(command.get());
//     }
// 
//     /** 空の戻り値を生成して返します。 */
//     public static ResponseEntity<Void> resultEmpty(Runnable command) {
//         command.run();
//         return ResponseEntity.status(HttpStatus.OK).build();
//     }
//     
// }
// 
// Path: micro-core/src/main/java/sample/context/orm/PagingList.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// public class PagingList<T> implements Dto {
//     private static final long serialVersionUID = 1L;
// 
//     private List<T> list;
//     private Pagination page;
// 
// }
// 
// Path: micro-app/src/main/java/sample/usecase/SystemAdminService.java
// @Service
// public class SystemAdminService {
// 
//     private final SystemRepository rep;
//     private final PlatformTransactionManager txm;
//     private final AuditHandler audit;
//     private final BusinessDayHandler businessDay;
//     
//     public SystemAdminService(
//             SystemRepository rep,
//             @Qualifier(SystemRepository.BeanNameTx)
//             PlatformTransactionManager txm,
//             AuditHandler audit,
//             BusinessDayHandler businessDay) {
//         this.rep = rep;
//         this.txm = txm;
//         this.audit = audit;
//         this.businessDay = businessDay;
//     }
// 
//     /** 利用者監査ログを検索します。 */
//     public PagingList<AuditActor> findAuditActor(FindAuditActor p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AuditActor.find(rep, p));
//     }
// 
//     /** イベント監査ログを検索します。 */
//     public PagingList<AuditEvent> findAuditEvent(FindAuditEvent p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AuditEvent.find(rep, p));
//     }
// 
//     /** アプリケーション設定一覧を検索します。 */
//     public List<AppSetting> findAppSetting(FindAppSetting p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AppSetting.find(rep, p));
//     }
// 
//     public void changeAppSetting(String id, String value) {
//         audit.audit("アプリケーション設定情報を変更する", () -> rep.dh().settingSet(id, value));
//     }
// 
//     public void processDay() {
//         audit.audit("営業日を進める", () -> rep.dh().time().proceedDay(businessDay.day(1)));
//     }
// 
// }


import static sample.api.admin.SystemAdminFacade.Path;
import java.util.List;
import javax.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import sample.api.ApiUtils;
import sample.context.AppSetting;
import sample.context.AppSetting.FindAppSetting;
import sample.context.audit.*;
import sample.context.audit.AuditActor.FindAuditActor;
import sample.context.audit.AuditEvent.FindAuditEvent;
import sample.context.orm.PagingList;
import sample.usecase.SystemAdminService;
package sample.api.admin;






/**
 * システム系社内ユースケースの外部公開処理を表現します。
 */
@RestController
@RequestMapping(Path)
public class SystemAdminFacadeExporter implements SystemAdminFacade {

    private final SystemAdminService service;
    
    public SystemAdminFacadeExporter(SystemAdminService service) {
        this.service = service;
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathFindAudiActor)
// Path: micro-core/src/main/java/sample/api/ApiUtils.java
// public abstract class ApiUtils {
// 
//     /** 戻り値を生成して返します。(戻り値がプリミティブまたはnullを許容する時はこちらを利用してください) */
//     public static <T> ResponseEntity<T> result(Supplier<T> command) {
//         return ResponseEntity.status(HttpStatus.OK).body(command.get());
//     }
// 
//     /** 空の戻り値を生成して返します。 */
//     public static ResponseEntity<Void> resultEmpty(Runnable command) {
//         command.run();
//         return ResponseEntity.status(HttpStatus.OK).build();
//     }
//     
// }
// 
// Path: micro-core/src/main/java/sample/context/orm/PagingList.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// public class PagingList<T> implements Dto {
//     private static final long serialVersionUID = 1L;
// 
//     private List<T> list;
//     private Pagination page;
// 
// }
// 
// Path: micro-app/src/main/java/sample/usecase/SystemAdminService.java
// @Service
// public class SystemAdminService {
// 
//     private final SystemRepository rep;
//     private final PlatformTransactionManager txm;
//     private final AuditHandler audit;
//     private final BusinessDayHandler businessDay;
//     
//     public SystemAdminService(
//             SystemRepository rep,
//             @Qualifier(SystemRepository.BeanNameTx)
//             PlatformTransactionManager txm,
//             AuditHandler audit,
//             BusinessDayHandler businessDay) {
//         this.rep = rep;
//         this.txm = txm;
//         this.audit = audit;
//         this.businessDay = businessDay;
//     }
// 
//     /** 利用者監査ログを検索します。 */
//     public PagingList<AuditActor> findAuditActor(FindAuditActor p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AuditActor.find(rep, p));
//     }
// 
//     /** イベント監査ログを検索します。 */
//     public PagingList<AuditEvent> findAuditEvent(FindAuditEvent p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AuditEvent.find(rep, p));
//     }
// 
//     /** アプリケーション設定一覧を検索します。 */
//     public List<AppSetting> findAppSetting(FindAppSetting p) {
//         return TxTemplate.of(txm).readOnly().tx(() -> AppSetting.find(rep, p));
//     }
// 
//     public void changeAppSetting(String id, String value) {
//         audit.audit("アプリケーション設定情報を変更する", () -> rep.dh().settingSet(id, value));
//     }
// 
//     public void processDay() {
//         audit.audit("営業日を進める", () -> rep.dh().time().proceedDay(businessDay.day(1)));
//     }
// 
// }


// Path: micro-app/src/main/java/sample/api/admin/SystemAdminFacadeExporter.java
import static sample.api.admin.SystemAdminFacade.Path;
import java.util.List;
import javax.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import sample.api.ApiUtils;
import sample.context.AppSetting;
import sample.context.AppSetting.FindAppSetting;
import sample.context.audit.*;
import sample.context.audit.AuditActor.FindAuditActor;
import sample.context.audit.AuditEvent.FindAuditEvent;
import sample.context.orm.PagingList;
import sample.usecase.SystemAdminService;

package sample.api.admin;






/**
 * システム系社内ユースケースの外部公開処理を表現します。
 */
@RestController
@RequestMapping(Path)
public class SystemAdminFacadeExporter implements SystemAdminFacade {

    private final SystemAdminService service;
    
    public SystemAdminFacadeExporter(SystemAdminService service) {
        this.service = service;
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathFindAudiActor)
    public PagingList<AuditActor> findAuditActor(@Valid FindAuditActor p) {