You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.0 KiB

package com.dji.sdk.cloudapi.device;
import com.dji.sdk.cloudapi.livestream.VideoTypeEnum;
import com.dji.sdk.exception.CloudSDKErrorEnum;
import com.dji.sdk.exception.CloudSDKException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import jakarta.validation.constraints.NotNull;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.Objects;
/**
* @author sean
* @version 1.7
* @date 2023/6/25
*/
public class VideoId {
@NotNull
private String droneSn;
@NotNull
private PayloadIndex payloadIndex;
@NotNull
private VideoTypeEnum videoType = VideoTypeEnum.NORMAL;
public VideoId() {
}
@JsonCreator
public VideoId(String videoId) {
if (!StringUtils.hasText(videoId)) {
return;
}
String[] videoIdArr = Arrays.stream(videoId.split("/")).toArray(String[]::new);
if (videoIdArr.length != 3) {
throw new CloudSDKException(CloudSDKErrorEnum.INVALID_PARAMETER);
}
this.droneSn = videoIdArr[0];
this.payloadIndex = new PayloadIndex(videoIdArr[1]);
this.videoType = VideoTypeEnum.find(videoIdArr[2].split("-")[0]);
}
@Override
@JsonValue
public String toString() {
if (Objects.isNull(payloadIndex)) {
return "";
}
return String.format("%s/%s/%s-0", droneSn, payloadIndex.toString(), videoType.getType());
}
public String getDroneSn() {
return droneSn;
}
public VideoId setDroneSn(String droneSn) {
this.droneSn = droneSn;
return this;
}
public PayloadIndex getPayloadIndex() {
return payloadIndex;
}
public VideoId setPayloadIndex(PayloadIndex payloadIndex) {
this.payloadIndex = payloadIndex;
return this;
}
public VideoTypeEnum getVideoType() {
return videoType;
}
public VideoId setVideoType(VideoTypeEnum videoType) {
this.videoType = videoType;
return this;
}
}