parent
							
								
									9bc87d75df
								
							
						
					
					
						commit
						9241c17513
					
				| @ -0,0 +1,175 @@ | ||||
| /* | ||||
|  * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
 | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| package com.arialyy.aria.core.inf; | ||||
| 
 | ||||
| import android.support.annotation.NonNull; | ||||
| import com.arialyy.aria.core.AriaManager; | ||||
| import com.arialyy.aria.core.RequestEnum; | ||||
| import com.arialyy.aria.core.command.AbsCmd; | ||||
| import com.arialyy.aria.core.command.CmdFactory; | ||||
| import com.arialyy.aria.core.download.DownloadEntity; | ||||
| import com.arialyy.aria.core.upload.UploadEntity; | ||||
| import com.arialyy.aria.orm.DbEntity; | ||||
| import com.arialyy.aria.util.CommonUtil; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| /** | ||||
|  * Created by Aria.Lao on 2017/2/28. | ||||
|  */ | ||||
| public class AbsTarget<ENTITY extends IEntity, TASK_ENTITY extends ITaskEntity> { | ||||
|   protected ENTITY entity; | ||||
|   protected TASK_ENTITY taskEntity; | ||||
|   protected String targetName; | ||||
| 
 | ||||
|   /** | ||||
|    * 获取任务文件大小 | ||||
|    * | ||||
|    * @return -1,没有找到该任务 | ||||
|    */ | ||||
|   public long getFileSize() { | ||||
|     if (entity instanceof DownloadEntity) { | ||||
|       DownloadEntity entity = DbEntity.findData(DownloadEntity.class, "downloadUrl=?", | ||||
|           ((DownloadEntity) this.entity).getDownloadUrl()); | ||||
|       if (entity == null) { | ||||
|         throw new NullPointerException("没有找到该任务"); | ||||
|       } | ||||
|       return entity.getFileSize(); | ||||
|     } else if (entity instanceof UploadEntity) { | ||||
|       UploadEntity entity = DbEntity.findData(UploadEntity.class, "filePath=?", | ||||
|           ((UploadEntity) this.entity).getFilePath()); | ||||
|       if (entity == null) { | ||||
|         throw new NullPointerException("没有找到该任务"); | ||||
|       } | ||||
|       return entity.getFileSize(); | ||||
|     } | ||||
|     return -1; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 获取当前任务进度,如果任务存在,则返回当前进度 | ||||
|    * | ||||
|    * @return -1,没有找到该任务 | ||||
|    */ | ||||
|   public long getCurrentProgress() { | ||||
|     if (entity instanceof DownloadEntity) { | ||||
|       DownloadEntity entity = DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", | ||||
|           ((DownloadEntity) this.entity).getDownloadUrl()); | ||||
|       if (entity == null) { | ||||
|         throw new NullPointerException("下载管理器中没有该任务"); | ||||
|       } | ||||
|       return entity.getCurrentProgress(); | ||||
|     } else if (entity instanceof UploadEntity) { | ||||
|       UploadEntity entity = DbEntity.findData(UploadEntity.class, "filePath=?", | ||||
|           ((UploadEntity) this.entity).getFilePath()); | ||||
|       if (entity == null) { | ||||
|         throw new NullPointerException("没有找到该任务"); | ||||
|       } | ||||
|       return entity.getCurrentProgress(); | ||||
|     } | ||||
|     return -1; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 给url请求添加头部 | ||||
|    * | ||||
|    * @param key 头部key | ||||
|    * @param header 头部value | ||||
|    */ | ||||
|   protected void _addHeader(@NonNull String key, @NonNull String header) { | ||||
|     taskEntity.headers.put(key, header); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 给url请求添加头部 | ||||
|    * | ||||
|    * @param headers Map<Key, Value> | ||||
|    */ | ||||
|   protected void _addHeaders(Map<String, String> headers) { | ||||
|     if (headers != null && headers.size() > 0) { | ||||
|       Set<String> keys = headers.keySet(); | ||||
|       for (String key : keys) { | ||||
|         taskEntity.headers.put(key, headers.get(key)); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置请求类型 | ||||
|    * | ||||
|    * @param requestEnum {@link RequestEnum} | ||||
|    */ | ||||
|   protected void _setRequestMode(RequestEnum requestEnum) { | ||||
|     taskEntity.requestEnum = requestEnum; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 添加任务 | ||||
|    */ | ||||
|   public void add() { | ||||
|     AriaManager.getInstance(AriaManager.APP) | ||||
|         .setCmd(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_CREATE)) | ||||
|         .exe(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 开始下载 | ||||
|    */ | ||||
|   public void start() { | ||||
|     List<AbsCmd> cmds = new ArrayList<>(); | ||||
|     cmds.add(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_CREATE)); | ||||
|     cmds.add(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_START)); | ||||
|     AriaManager.getInstance(AriaManager.APP).setCmds(cmds).exe(); | ||||
|     cmds.clear(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 停止下载 | ||||
|    */ | ||||
|   public void stop() { | ||||
|     AriaManager.getInstance(AriaManager.APP) | ||||
|         .setCmd(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_STOP)) | ||||
|         .exe(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 恢复下载 | ||||
|    */ | ||||
|   public void resume() { | ||||
|     AriaManager.getInstance(AriaManager.APP) | ||||
|         .setCmd(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_START)) | ||||
|         .exe(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 取消下载 | ||||
|    */ | ||||
|   public void cancel() { | ||||
|     AriaManager.getInstance(AriaManager.APP) | ||||
|         .setCmd(CommonUtil.createCmd(targetName, taskEntity, CmdFactory.TASK_CANCEL)) | ||||
|         .exe(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 重新下载 | ||||
|    */ | ||||
|   public void reStart() { | ||||
|     cancel(); | ||||
|     start(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,115 @@ | ||||
| /* | ||||
|  * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
 | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| package com.arialyy.aria.core.upload; | ||||
| 
 | ||||
| import android.support.annotation.NonNull; | ||||
| import com.arialyy.aria.core.RequestEnum; | ||||
| import com.arialyy.aria.core.inf.AbsTarget; | ||||
| import com.arialyy.aria.core.queue.UploadTaskQueue; | ||||
| import com.arialyy.aria.orm.DbEntity; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * Created by Aria.Lao on 2017/2/28. | ||||
|  */ | ||||
| public class UploadTarget extends AbsTarget<UploadEntity, UploadTaskEntity> { | ||||
| 
 | ||||
|   UploadTarget(UploadEntity entity, String targetName) { | ||||
|     this.entity = entity; | ||||
|     this.targetName = targetName; | ||||
|     taskEntity = new UploadTaskEntity(entity); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置上传路径 | ||||
|    * | ||||
|    * @param uploadUrl 上传路径 | ||||
|    */ | ||||
|   public UploadTarget setUploadUrl(@NonNull String uploadUrl) { | ||||
|     taskEntity.uploadUrl = uploadUrl; | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置服务器需要的附件key | ||||
|    * | ||||
|    * @param attachment 附件key | ||||
|    */ | ||||
|   public UploadTarget setAttachment(@NonNull String attachment) { | ||||
|     taskEntity.attachment = attachment; | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置文件名 | ||||
|    */ | ||||
|   public UploadTarget setFileName(String fileName) { | ||||
|     entity.setFileName(fileName); | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置上传文件类型 | ||||
|    * | ||||
|    * @param contentType <code>"multipart/form-data"<code/> | ||||
|    */ | ||||
|   public UploadTarget setContentType(String contentType) { | ||||
|     taskEntity.contentType = contentType; | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 给url请求添加头部 | ||||
|    * | ||||
|    * @param key 头部key | ||||
|    * @param header 头部value | ||||
|    */ | ||||
|   public UploadTarget addHeader(@NonNull String key, @NonNull String header) { | ||||
|     super._addHeader(key, header); | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 给url请求添加头部 | ||||
|    * | ||||
|    * @param headers Map<Key, Value> | ||||
|    */ | ||||
|   public UploadTarget addHeaders(Map<String, String> headers) { | ||||
|     super._addHeaders(headers); | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 设置请求类型 | ||||
|    * | ||||
|    * @param requestEnum {@link RequestEnum} | ||||
|    */ | ||||
|   public UploadTarget setRequestMode(RequestEnum requestEnum) { | ||||
|     super._setRequestMode(requestEnum); | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   private UploadEntity getDownloadEntity(@NonNull String filePath) { | ||||
|     return DbEntity.findData(UploadEntity.class, "filePath=?", filePath); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 是否在下载 | ||||
|    */ | ||||
|   public boolean isUploading() { | ||||
|     return UploadTaskQueue.getInstance().getTask(entity).isRunning(); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue