package jnpf.dms; import jnpf.base.ActionResult; import jnpf.dmsEntity.center.DmsTicketLifecycleRequest; import jnpf.dmsEntity.preview.model.DmsFilePreviewTicket; import jnpf.dmsEntity.download.model.DmsFileDownloadTicket; import jnpf.exception.DataException; import java.util.UUID; /** Recheck at consumption, including cached render and storage paths. Network failure fails closed. */ public final class DmsTicketLifecycleChecks { private DmsTicketLifecycleChecks() { } public static Object preview(Object raw, DmsTicketLifecycleApi api, String serviceId) { DmsFilePreviewTicket ticket=DmsFilePreviewTicket.fromRaw(raw); require(api,serviceId,ticket.getTenantId(),ticket.getFileVersionId(),ticket.isHistoricalAccess()); return raw; } public static Object download(Object raw, DmsTicketLifecycleApi api, String serviceId) { DmsFileDownloadTicket ticket=DmsFileDownloadTicket.fromRaw(raw); require(api,serviceId,ticket.getTenantId(),ticket.getFileVersionId(),ticket.isHistoricalAccess()); return raw; } public static void require(DmsTicketLifecycleApi api,String serviceId,String tenantId,UUID version,boolean historical) { DmsTicketLifecycleRequest request=new DmsTicketLifecycleRequest(); request.setTenantId(tenantId);request.setFileVersionId(version);request.setHistoricalAccess(historical); ActionResult result=api.readable(serviceId,request); if(result==null || result.getCode()!=200 || !Boolean.TRUE.equals(result.getData())) throw new DataException("文件状态已变化,请从文件中心重新打开并获取授权"); } }