Loading src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java +18 −11 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.util.Calendar; import java.util.LinkedHashSet; import java.util.Set; Loading Loading @@ -77,7 +78,8 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation RandomAccessFile raf = null; File file = new File(mLocalPath); SharedPreferences sharedPref = mContext.getApplicationContext().getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE); SharedPreferences sharedPref = mContext.getApplicationContext(). getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE); String chunkId = String.format("%08d", Math.abs(file.getName().hashCode())); Set<String> successfulChunks = sharedPref.getStringSet(chunkId, new LinkedHashSet<String>()); Loading @@ -98,7 +100,7 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation String chunkSizeStr = String.valueOf(CHUNK_SIZE); String totalLengthStr = String.valueOf(file.length()); for (int chunkIndex = 0; chunkIndex < chunkCount ; chunkIndex++, offset += CHUNK_SIZE) { if (successfulChunks.contains(String.valueOf(chunkIndex))){ if (successfulChunks.contains(String.valueOf(chunkIndex + "_" + getDateAsString()))){ ((ChunkFromFileChannelRequestEntity) mEntity).setmTransferred(offset); continue; } Loading Loading @@ -156,23 +158,21 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation ", HTTP result status " + status); if (isSuccess(status)){ successfulChunks.add(String.valueOf(chunkIndex)); successfulChunks.add(String.valueOf(chunkIndex) + "_" + getDateAsString()); } else { SharedPreferences.Editor editor = sharedPref.edit(); editor.putStringSet(chunkId, successfulChunks).apply(); break; } } if (isSuccess(status)){ SharedPreferences.Editor editor = sharedPref.edit(); editor.remove(chunkId).apply(); } } finally { SharedPreferences.Editor editor = sharedPref.edit(); if (this.isSuccess(status)) { editor.remove(chunkId).apply(); } else { editor.putStringSet(chunkId, successfulChunks).apply(); } if (channel != null) channel.close(); Loading @@ -184,4 +184,11 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation return status; } private String getDateAsString() { Calendar calendar = Calendar.getInstance(); return calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } } Loading
src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java +18 −11 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.util.Calendar; import java.util.LinkedHashSet; import java.util.Set; Loading Loading @@ -77,7 +78,8 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation RandomAccessFile raf = null; File file = new File(mLocalPath); SharedPreferences sharedPref = mContext.getApplicationContext().getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE); SharedPreferences sharedPref = mContext.getApplicationContext(). getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE); String chunkId = String.format("%08d", Math.abs(file.getName().hashCode())); Set<String> successfulChunks = sharedPref.getStringSet(chunkId, new LinkedHashSet<String>()); Loading @@ -98,7 +100,7 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation String chunkSizeStr = String.valueOf(CHUNK_SIZE); String totalLengthStr = String.valueOf(file.length()); for (int chunkIndex = 0; chunkIndex < chunkCount ; chunkIndex++, offset += CHUNK_SIZE) { if (successfulChunks.contains(String.valueOf(chunkIndex))){ if (successfulChunks.contains(String.valueOf(chunkIndex + "_" + getDateAsString()))){ ((ChunkFromFileChannelRequestEntity) mEntity).setmTransferred(offset); continue; } Loading Loading @@ -156,23 +158,21 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation ", HTTP result status " + status); if (isSuccess(status)){ successfulChunks.add(String.valueOf(chunkIndex)); successfulChunks.add(String.valueOf(chunkIndex) + "_" + getDateAsString()); } else { SharedPreferences.Editor editor = sharedPref.edit(); editor.putStringSet(chunkId, successfulChunks).apply(); break; } } if (isSuccess(status)){ SharedPreferences.Editor editor = sharedPref.edit(); editor.remove(chunkId).apply(); } } finally { SharedPreferences.Editor editor = sharedPref.edit(); if (this.isSuccess(status)) { editor.remove(chunkId).apply(); } else { editor.putStringSet(chunkId, successfulChunks).apply(); } if (channel != null) channel.close(); Loading @@ -184,4 +184,11 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation return status; } private String getDateAsString() { Calendar calendar = Calendar.getInstance(); return calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } }