|
|
@@ -0,0 +1,240 @@
|
|
|
+package com.x.cms.assemble.control.file;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.ws.rs.Consumes;
|
|
|
+import javax.ws.rs.DELETE;
|
|
|
+import javax.ws.rs.GET;
|
|
|
+import javax.ws.rs.POST;
|
|
|
+import javax.ws.rs.PUT;
|
|
|
+import javax.ws.rs.Path;
|
|
|
+import javax.ws.rs.PathParam;
|
|
|
+import javax.ws.rs.Produces;
|
|
|
+import javax.ws.rs.container.AsyncResponse;
|
|
|
+import javax.ws.rs.container.Suspended;
|
|
|
+import javax.ws.rs.core.Context;
|
|
|
+import javax.ws.rs.core.MediaType;
|
|
|
+
|
|
|
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
|
|
+import org.glassfish.jersey.media.multipart.FormDataParam;
|
|
|
+
|
|
|
+import com.google.gson.JsonElement;
|
|
|
+import com.x.base.core.project.annotation.JaxrsDescribe;
|
|
|
+import com.x.base.core.project.annotation.JaxrsMethodDescribe;
|
|
|
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
|
|
|
+import com.x.base.core.project.http.ActionResult;
|
|
|
+import com.x.base.core.project.http.EffectivePerson;
|
|
|
+import com.x.base.core.project.http.HttpMediaType;
|
|
|
+import com.x.base.core.project.jaxrs.ResponseFactory;
|
|
|
+import com.x.base.core.project.jaxrs.StandardJaxrsAction;
|
|
|
+import com.x.base.core.project.logger.Logger;
|
|
|
+import com.x.base.core.project.logger.LoggerFactory;
|
|
|
+
|
|
|
+@Path("file")
|
|
|
+@JaxrsDescribe("资源文件管理")
|
|
|
+public class FileAction extends StandardJaxrsAction {
|
|
|
+
|
|
|
+ private static Logger logger = LoggerFactory.getLogger(FileAction.class);
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "列示文件对象,下一页.", action = ActionListNext.class)
|
|
|
+ @GET
|
|
|
+ @Path("list/{id}/next/{count}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void listNext(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id,
|
|
|
+ @JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
|
|
|
+ ActionResult<List<ActionListNext.Wo>> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionListNext().execute(id, count);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "列示文件对象,上一页.", action = ActionListPrev.class)
|
|
|
+ @GET
|
|
|
+ @Path("list/{id}/prev/{count}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void listPrev(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id,
|
|
|
+ @JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
|
|
|
+ ActionResult<List<ActionListPrev.Wo>> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionListPrev().execute(id, count);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "获取文件内容.", action = ActionGet.class)
|
|
|
+ @GET
|
|
|
+ @Path("{flag}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("flag") String flag) {
|
|
|
+ ActionResult<ActionGet.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionGet().execute(effectivePerson, flag);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "创建文件.", action = ActionCreate.class)
|
|
|
+ @POST
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void create(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ JsonElement jsonElement) {
|
|
|
+ ActionResult<ActionCreate.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionCreate().execute(effectivePerson, jsonElement);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, jsonElement);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "更新文件.", action = ActionEdit.class)
|
|
|
+ @PUT
|
|
|
+ @Path("{id}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void update(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id, JsonElement jsonElement) {
|
|
|
+ ActionResult<ActionEdit.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionEdit().execute(effectivePerson, id, jsonElement);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, jsonElement);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "删除文件.", action = ActionDelete.class)
|
|
|
+ @DELETE
|
|
|
+ @Path("{flag}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void delete(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("flag") String flag) {
|
|
|
+ ActionResult<ActionDelete.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionDelete().execute(effectivePerson, flag);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "根据应用列示文件.", action = ActionListWithApplication.class)
|
|
|
+ @GET
|
|
|
+ @Path("list/application/{applicationFlag}")
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void listWithApplication(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("应用标识") @PathParam("applicationFlag") String applicationFlag) {
|
|
|
+ ActionResult<List<ActionListWithApplication.Wo>> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionListWithApplication().execute(effectivePerson, applicationFlag);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "上传文件内容.", action = ActionUpload.class)
|
|
|
+ @POST
|
|
|
+ @Consumes(MediaType.MULTIPART_FORM_DATA)
|
|
|
+ @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
|
|
|
+ @Path("{id}/upload")
|
|
|
+ public void upload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id,
|
|
|
+ @JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
|
|
|
+ @FormDataParam(FILE_FIELD) final byte[] bytes,
|
|
|
+ @JaxrsParameterDescribe("文件内容") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
|
|
|
+ ActionResult<ActionUpload.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionUpload().execute(effectivePerson, id, fileName, bytes, disposition);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "获取文件内容.以stream方式下载.", action = ActionDownload.class)
|
|
|
+ @GET
|
|
|
+ @Path("{id}/download")
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void download(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id) {
|
|
|
+ ActionResult<ActionDownload.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionDownload().execute(effectivePerson, id);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "获取文件内容.", action = ActionContent.class)
|
|
|
+ @GET
|
|
|
+ @Path("{id}/content")
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void content(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("id") String id) {
|
|
|
+ ActionResult<ActionContent.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionContent().execute(effectivePerson, id);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ @JaxrsMethodDescribe(value = "复制资源文件到新的应用.", action = ActionCopy.class)
|
|
|
+ @GET
|
|
|
+ @Path("{flag}/application/{applicationFlag}")
|
|
|
+ @Consumes(MediaType.APPLICATION_JSON)
|
|
|
+ public void copy(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
|
|
|
+ @JaxrsParameterDescribe("标识") @PathParam("flag") String flag,
|
|
|
+ @JaxrsParameterDescribe("应用标识") @PathParam("applicationFlag") String applicationFlag) {
|
|
|
+ ActionResult<ActionCopy.Wo> result = new ActionResult<>();
|
|
|
+ EffectivePerson effectivePerson = this.effectivePerson(request);
|
|
|
+ try {
|
|
|
+ result = new ActionCopy().execute(effectivePerson, flag, applicationFlag);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e, effectivePerson, request, null);
|
|
|
+ result.error(e);
|
|
|
+ }
|
|
|
+ asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|