package com.dji.sample.control.model.enums; import com.dji.sample.control.service.impl.*; import com.dji.sdk.cloudapi.control.PayloadControlMethodEnum; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import java.util.Arrays; /** * @author sean * @version 1.4 * @date 2023/3/2 */ public enum PayloadCommandsEnum { CAMERA_MODE_SWitCH(PayloadControlMethodEnum.CAMERA_MODE_SWITCH, CameraModeSwitchImpl.class), CAMERA_PHOTO_TAKE(PayloadControlMethodEnum.CAMERA_PHOTO_TAKE, CameraPhotoTakeImpl.class), CAMERA_RECORDING_START(PayloadControlMethodEnum.CAMERA_RECORDING_START, CameraRecordingStartImpl.class), CAMERA_RECORDING_STOP(PayloadControlMethodEnum.CAMERA_RECORDING_STOP, CameraRecordingStopImpl.class), CAMERA_AIM(PayloadControlMethodEnum.CAMERA_AIM, CameraAimImpl.class), CAMERA_FOCAL_LENGTH_SET(PayloadControlMethodEnum.CAMERA_FOCAL_LENGTH_SET, CameraFocalLengthSetImpl.class), GIMBAL_RESET(PayloadControlMethodEnum.GIMBAL_RESET, GimbalResetImpl.class); PayloadControlMethodEnum cmd; Class clazz; PayloadCommandsEnum(PayloadControlMethodEnum cmd, Class clazz) { this.cmd = cmd; this.clazz = clazz; } @JsonValue public String getMethod() { return cmd.getPayloadMethod().getMethod(); } public Class getClazz() { return clazz; } public PayloadControlMethodEnum getCmd() { return cmd; } @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static PayloadCommandsEnum find(String method) { return Arrays.stream(values()).filter(methodEnum -> methodEnum.cmd.getPayloadMethod().getMethod().equals(method)).findAny() .orElseThrow(); } }