diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/BaseNormalTarget.java b/Aria/src/main/java/com/arialyy/aria/core/download/BaseNormalTarget.java index 86bb17c7..0bbfd380 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/BaseNormalTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/BaseNormalTarget.java @@ -32,7 +32,7 @@ abstract class BaseNormalTarget /** * 资源地址 */ - protected String url; + protected String url, newUrl; /** * 通过地址初始化target @@ -48,6 +48,24 @@ abstract class BaseNormalTarget } } + /** + * 更新下载url + * + * @param newUrl 新的下载url + */ + public TARGET updateUrl(String newUrl) { + if (TextUtils.isEmpty(newUrl)) { + ALog.e(TAG, "下载url更新失败,newUrl为null"); + return (TARGET) this; + } + if (url.equals(newUrl)) { + ALog.e(TAG, "下载url更新失败,新的下载url和旧的url一致"); + return (TARGET) this; + } + this.newUrl = newUrl; + return (TARGET) this; + } + /** * 将任务设置为最高优先级任务,最高优先级任务有以下特点: * 1、在下载队列中,有且只有一个最高优先级任务 diff --git a/Aria/src/main/java/com/arialyy/aria/orm/DelegateCommon.java b/Aria/src/main/java/com/arialyy/aria/orm/DelegateCommon.java index 01e9360a..6f615c39 100644 --- a/Aria/src/main/java/com/arialyy/aria/orm/DelegateCommon.java +++ b/Aria/src/main/java/com/arialyy/aria/orm/DelegateCommon.java @@ -41,7 +41,7 @@ class DelegateCommon extends AbsDelegate { */ void dropTable(SQLiteDatabase db, String tableName) { db = checkDb(db); - String deleteSQL = "DROP TABLE IF EXISTS ".concat(tableName); + String deleteSQL = String.format("DROP TABLE IF EXISTS %s", tableName); print(DROP_TABLE, deleteSQL); //db.beginTransaction(); db.execSQL(deleteSQL); @@ -75,12 +75,11 @@ class DelegateCommon extends AbsDelegate { db = checkDb(db); Cursor cursor = null; try { - StringBuilder sb = new StringBuilder(); - sb.append("SELECT COUNT(*) AS c FROM sqlite_master WHERE type='table' AND name='"); - sb.append(tableName); - sb.append("'"); - print(TABLE_EXISTS, sb.toString()); - cursor = db.rawQuery(sb.toString(), null); + String sql = + String.format("SELECT name FROM sqlite_master WHERE type='table' AND name='%s'", + tableName); + print(TABLE_EXISTS, sql); + cursor = db.rawQuery(sql, null); if (cursor != null && cursor.moveToNext()) { int count = cursor.getInt(0); if (count > 0) { @@ -133,7 +132,7 @@ class DelegateCommon extends AbsDelegate { //外键Map,在Sqlite3中foreign修饰的字段必须放在最后 final List foreignArray = new ArrayList<>(); StringBuilder sb = new StringBuilder(); - sb.append("CREATE TABLE ") + sb.append("CREATE TABLE IF NOT EXISTS ") .append(CommonUtil.getClassName(clazz)) .append(" ("); for (Field field : fields) { @@ -187,7 +186,7 @@ class DelegateCommon extends AbsDelegate { } } - if (SqlUtil.isUnique(field)){ + if (SqlUtil.isUnique(field)) { sb.append(" UNIQUE"); } diff --git a/Aria/src/main/java/com/arialyy/aria/orm/DelegateFind.java b/Aria/src/main/java/com/arialyy/aria/orm/DelegateFind.java index ee7f2a4d..f038520c 100644 --- a/Aria/src/main/java/com/arialyy/aria/orm/DelegateFind.java +++ b/Aria/src/main/java/com/arialyy/aria/orm/DelegateFind.java @@ -34,7 +34,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.WeakHashMap; /** * Created by laoyuyu on 2018/3/22. @@ -441,18 +440,18 @@ class DelegateFind extends AbsDelegate { field.setBoolean(entity, !temp.equalsIgnoreCase("false")); } } else if (type == java.util.Date.class || type == java.sql.Date.class) { - field.set(entity, new Date(cursor.getString(column))); + field.set(entity, new Date(URLDecoder.decode(cursor.getString(column)))); } else if (type == byte[].class) { field.set(entity, cursor.getBlob(column)); } else if (type == Map.class) { String temp = cursor.getString(column); if (!TextUtils.isEmpty(temp)) { - field.set(entity, SqlUtil.str2Map(temp)); + field.set(entity, SqlUtil.str2Map(URLDecoder.decode(temp))); } } else if (type == List.class) { String value = cursor.getString(column); if (!TextUtils.isEmpty(value)) { - field.set(entity, SqlUtil.str2List(value, field)); + field.set(entity, SqlUtil.str2List(URLDecoder.decode(value), field)); } } } diff --git a/Aria/src/main/java/com/arialyy/aria/orm/DelegateUpdate.java b/Aria/src/main/java/com/arialyy/aria/orm/DelegateUpdate.java index 006598d2..7b3d2b58 100644 --- a/Aria/src/main/java/com/arialyy/aria/orm/DelegateUpdate.java +++ b/Aria/src/main/java/com/arialyy/aria/orm/DelegateUpdate.java @@ -24,6 +24,7 @@ import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CommonUtil; import java.lang.reflect.Field; import java.lang.reflect.Type; +import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -123,7 +124,7 @@ class DelegateUpdate extends AbsDelegate { Object obj = field.get(dbEntity); value = obj == null ? "" : convertValue(obj.toString()); } - values.put(field.getName(), value); + values.put(field.getName(), encodeStr(value)); } } catch (IllegalAccessException e) { e.printStackTrace(); @@ -165,7 +166,7 @@ class DelegateUpdate extends AbsDelegate { value = convertValue(field.get(dbEntity).toString()); } } - values.put(field.getName(), value); + values.put(field.getName(), encodeStr(value)); } } catch (IllegalAccessException e) { e.printStackTrace(); @@ -175,6 +176,11 @@ class DelegateUpdate extends AbsDelegate { close(db); } + private String encodeStr(String str) { + str = str.replaceAll("\\\\+", "%2B"); + return URLEncoder.encode(str); + } + /** * {@code true}自动增长的主键和需要忽略的字段 */ diff --git a/app/libs/siteparser.aar b/app/libs/siteparser.aar deleted file mode 100644 index 3f685bbd..00000000 Binary files a/app/libs/siteparser.aar and /dev/null differ diff --git a/app/src/main/java/com/arialyy/simple/download/HighestPriorityActivity.java b/app/src/main/java/com/arialyy/simple/download/HighestPriorityActivity.java index baa72ac9..82752321 100644 --- a/app/src/main/java/com/arialyy/simple/download/HighestPriorityActivity.java +++ b/app/src/main/java/com/arialyy/simple/download/HighestPriorityActivity.java @@ -82,7 +82,7 @@ public class HighestPriorityActivity extends BaseActivity { //String URL = "https://dl.genymotion.com/releases/genymotion-2.12.1/genymotion-2.12.1-vbox.exe"; //String URL = "ftp://192.168.29.140:21/download/SDK_Demo-release.apk"; //String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]猩球崛起3:终极之战BD国英双语中英双字.mkv"; - private String URL = "https://www.bilibili.com/bangumi/play/ep77693"; + //private String URL = "https://www.bilibili.com/bangumi/play/ep77693"; + private String URL = "http://cn-hbsjz-cmcc-v-03.acgvideo.com/upgcxcode/63/82/5108263/5108263-1-80.flv?expires=1530178500&platform=pc&ssig=vr7gLl0duyqWqSMnIpzaDA&oi=3746029570&nfa=BpfiWF+i4mNW8KzjZFHzBQ==&dynamic=1&hfa=2030547937&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=&trid=3476be01a9254115b15f8cc7198600fe&nfc=1"; @Override protected int setLayoutId() { return R.layout.activity_test; diff --git a/app/src/main/java/com/arialyy/simple/test/AnyRunnModule.java b/app/src/main/java/com/arialyy/simple/test/AnyRunnModule.java index ba756516..ab86d6a0 100644 --- a/app/src/main/java/com/arialyy/simple/test/AnyRunnModule.java +++ b/app/src/main/java/com/arialyy/simple/test/AnyRunnModule.java @@ -65,7 +65,7 @@ public class AnyRunnModule { void start(String url) { mUrl = url; - String path = Environment.getExternalStorageDirectory().getPath() + "/aaa.apk"; + String path = Environment.getExternalStorageDirectory().getPath() + "/aaas.apk"; //File file = new File(path); //if (file.exists()) { // file.delete();