mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	Merge pull request #140 from owncloud/761_file_modification_date_lost
File modification date lost when uploading file
This commit is contained in:
		
						commit
						7647a4974b
					
				| @ -157,7 +157,12 @@ public class MainActivity extends Activity implements OnRemoteOperationListener, | |||||||
|     	File fileToUpload = upFolder.listFiles()[0]; |     	File fileToUpload = upFolder.listFiles()[0]; | ||||||
|     	String remotePath = FileUtils.PATH_SEPARATOR + fileToUpload.getName();  |     	String remotePath = FileUtils.PATH_SEPARATOR + fileToUpload.getName();  | ||||||
|     	String mimeType = getString(R.string.sample_file_mimetype); |     	String mimeType = getString(R.string.sample_file_mimetype); | ||||||
|     	UploadRemoteFileOperation uploadOperation = new UploadRemoteFileOperation(fileToUpload.getAbsolutePath(), remotePath, mimeType); | 
 | ||||||
|  | 		// Get the last modification date of the file from the file system | ||||||
|  | 		Long timeStampLong = fileToUpload.lastModified()/1000; | ||||||
|  | 		String timeStamp = timeStampLong.toString(); | ||||||
|  | 
 | ||||||
|  |     	UploadRemoteFileOperation uploadOperation = new UploadRemoteFileOperation(fileToUpload.getAbsolutePath(), remotePath, mimeType, timeStamp); | ||||||
|     	uploadOperation.addDatatransferProgressListener(this); |     	uploadOperation.addDatatransferProgressListener(this); | ||||||
|     	uploadOperation.execute(mClient, this, mHandler); |     	uploadOperation.execute(mClient, this, mHandler); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -49,16 +49,19 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | |||||||
|     public static final long CHUNK_SIZE = 1024000; |     public static final long CHUNK_SIZE = 1024000; | ||||||
|     private static final String OC_CHUNKED_HEADER = "OC-Chunked"; |     private static final String OC_CHUNKED_HEADER = "OC-Chunked"; | ||||||
|     private static final String OC_CHUNK_SIZE_HEADER = "OC-Chunk-Size"; |     private static final String OC_CHUNK_SIZE_HEADER = "OC-Chunk-Size"; | ||||||
|  |     private static final String OC_CHUNK_X_OC_MTIME_HEADER = "X-OC-Mtime"; | ||||||
|     private static final String TAG = ChunkedUploadRemoteFileOperation.class.getSimpleName(); |     private static final String TAG = ChunkedUploadRemoteFileOperation.class.getSimpleName(); | ||||||
| 
 | 
 | ||||||
|     public ChunkedUploadRemoteFileOperation(String storagePath, String remotePath, String mimeType){ |     public ChunkedUploadRemoteFileOperation(String storagePath, String remotePath, String mimeType, | ||||||
|         super(storagePath, remotePath, mimeType); |                                             String fileLastModifTimestamp){ | ||||||
|  |         super(storagePath, remotePath, mimeType, fileLastModifTimestamp); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public ChunkedUploadRemoteFileOperation( |     public ChunkedUploadRemoteFileOperation( | ||||||
|             String storagePath, String remotePath, String mimeType, String requiredEtag |             String storagePath, String remotePath, String mimeType, String requiredEtag, | ||||||
|  |             String fileLastModifTimestamp | ||||||
|     ){ |     ){ | ||||||
| 		 super(storagePath, remotePath, mimeType, requiredEtag); | 		 super(storagePath, remotePath, mimeType, requiredEtag, fileLastModifTimestamp); | ||||||
| 	} | 	} | ||||||
|      |      | ||||||
|     @Override |     @Override | ||||||
| @ -99,6 +102,9 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | |||||||
|                 mPutMethod.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER); |                 mPutMethod.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER); | ||||||
|                 mPutMethod.addRequestHeader(OC_CHUNK_SIZE_HEADER, chunkSizeStr); |                 mPutMethod.addRequestHeader(OC_CHUNK_SIZE_HEADER, chunkSizeStr); | ||||||
|                 mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, totalLengthStr); |                 mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, totalLengthStr); | ||||||
|  | 
 | ||||||
|  |                 mPutMethod.addRequestHeader(OC_CHUNK_X_OC_MTIME_HEADER, mFileLastModifTimestamp); | ||||||
|  | 
 | ||||||
|                 ((ChunkFromFileChannelRequestEntity) mEntity).setOffset(offset); |                 ((ChunkFromFileChannelRequestEntity) mEntity).setOffset(offset); | ||||||
|                 mPutMethod.setRequestEntity(mEntity); |                 mPutMethod.setRequestEntity(mEntity); | ||||||
|                 if (mCancellationRequested.get()) { |                 if (mCancellationRequested.get()) { | ||||||
|  | |||||||
| @ -61,11 +61,13 @@ public class UploadRemoteFileOperation extends RemoteOperation { | |||||||
|     private static final String TAG = UploadRemoteFileOperation.class.getSimpleName(); |     private static final String TAG = UploadRemoteFileOperation.class.getSimpleName(); | ||||||
| 
 | 
 | ||||||
|     protected static final String OC_TOTAL_LENGTH_HEADER = "OC-Total-Length"; |     protected static final String OC_TOTAL_LENGTH_HEADER = "OC-Total-Length"; | ||||||
|  |     protected static final String OC_X_OC_MTIME_HEADER = "X-OC-Mtime"; | ||||||
|     protected static final String IF_MATCH_HEADER = "If-Match"; |     protected static final String IF_MATCH_HEADER = "If-Match"; | ||||||
| 
 | 
 | ||||||
|     protected String mLocalPath; |     protected String mLocalPath; | ||||||
|     protected String mRemotePath; |     protected String mRemotePath; | ||||||
|     protected String mMimeType; |     protected String mMimeType; | ||||||
|  |     protected String mFileLastModifTimestamp; | ||||||
|     protected PutMethod mPutMethod = null; |     protected PutMethod mPutMethod = null; | ||||||
|     protected boolean mForbiddenCharsInServer = false; |     protected boolean mForbiddenCharsInServer = false; | ||||||
|     protected String mRequiredEtag = null; |     protected String mRequiredEtag = null; | ||||||
| @ -75,14 +77,17 @@ public class UploadRemoteFileOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|     protected RequestEntity mEntity = null; |     protected RequestEntity mEntity = null; | ||||||
| 
 | 
 | ||||||
| 	public UploadRemoteFileOperation(String localPath, String remotePath, String mimeType) { |     public UploadRemoteFileOperation(String localPath, String remotePath, String mimeType, | ||||||
|  |                                      String fileLastModifTimestamp) { | ||||||
|         mLocalPath = localPath; |         mLocalPath = localPath; | ||||||
|         mRemotePath = remotePath; |         mRemotePath = remotePath; | ||||||
|         mMimeType = mimeType; |         mMimeType = mimeType; | ||||||
|  |         mFileLastModifTimestamp = fileLastModifTimestamp; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 	public UploadRemoteFileOperation(String localPath, String remotePath, String mimeType, String requiredEtag) { |     public UploadRemoteFileOperation(String localPath, String remotePath, String mimeType, | ||||||
| 		this(localPath, remotePath, mimeType); |                                      String requiredEtag, String fileLastModifTimestamp) { | ||||||
|  |         this(localPath, remotePath, mimeType, fileLastModifTimestamp); | ||||||
|         mRequiredEtag = requiredEtag; |         mRequiredEtag = requiredEtag; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -152,6 +157,9 @@ public class UploadRemoteFileOperation extends RemoteOperation { | |||||||
|                 mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); |                 mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); | ||||||
|             } |             } | ||||||
|             mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, String.valueOf(f.length())); |             mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, String.valueOf(f.length())); | ||||||
|  | 
 | ||||||
|  |             mPutMethod.addRequestHeader(OC_X_OC_MTIME_HEADER, mFileLastModifTimestamp); | ||||||
|  | 
 | ||||||
|             mPutMethod.setRequestEntity(mEntity); |             mPutMethod.setRequestEntity(mEntity); | ||||||
|             status = client.executeMethod(mPutMethod); |             status = client.executeMethod(mPutMethod); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -249,10 +249,10 @@ public class TestActivity extends Activity { | |||||||
| 	public RemoteOperationResult uploadFile( | 	public RemoteOperationResult uploadFile( | ||||||
| 			String storagePath, String remotePath, String mimeType | 			String storagePath, String remotePath, String mimeType | ||||||
| 			) { | 			) { | ||||||
|  | 
 | ||||||
| 		return TestActivity.uploadFile(storagePath, remotePath, mimeType, mClient); | 		return TestActivity.uploadFile(storagePath, remotePath, mimeType, mClient); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	 |  | ||||||
| 	/** Access to the library method to Upload a File  | 	/** Access to the library method to Upload a File  | ||||||
| 	 * @param storagePath | 	 * @param storagePath | ||||||
| 	 * @param remotePath | 	 * @param remotePath | ||||||
| @ -264,14 +264,18 @@ public class TestActivity extends Activity { | |||||||
| 	public static RemoteOperationResult uploadFile( | 	public static RemoteOperationResult uploadFile( | ||||||
| 			String storagePath, String remotePath, String mimeType, OwnCloudClient client | 			String storagePath, String remotePath, String mimeType, OwnCloudClient client | ||||||
| 			) { | 			) { | ||||||
|  | 
 | ||||||
|  |         String fileLastModifTimestamp = getFileLastModifTimeStamp(storagePath); | ||||||
|  | 
 | ||||||
|         UploadRemoteFileOperation uploadOperation; |         UploadRemoteFileOperation uploadOperation; | ||||||
|  | 
 | ||||||
| 		if ((new File(storagePath)).length() > ChunkedUploadRemoteFileOperation.CHUNK_SIZE ) { | 		if ((new File(storagePath)).length() > ChunkedUploadRemoteFileOperation.CHUNK_SIZE ) { | ||||||
|             uploadOperation = new ChunkedUploadRemoteFileOperation( |             uploadOperation = new ChunkedUploadRemoteFileOperation( | ||||||
|             		storagePath, remotePath, mimeType |             		storagePath, remotePath, mimeType, fileLastModifTimestamp | ||||||
|     		); |     		); | ||||||
|         } else { |         } else { | ||||||
|             uploadOperation = new UploadRemoteFileOperation( |             uploadOperation = new UploadRemoteFileOperation( | ||||||
|             		storagePath, remotePath, mimeType |             		storagePath, remotePath, mimeType, fileLastModifTimestamp | ||||||
|     		); |     		); | ||||||
|         } |         } | ||||||
| 		 | 		 | ||||||
| @ -381,5 +385,9 @@ public class TestActivity extends Activity { | |||||||
| 		return extractedFile; | 		return extractedFile; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 
 |     private static String getFileLastModifTimeStamp (String storagePath) { | ||||||
|  |         File file = new File(storagePath); | ||||||
|  |         Long timeStampLong = file.lastModified()/1000; | ||||||
|  |         return timeStampLong.toString(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -121,5 +121,4 @@ public class UploadFileTest extends RemoteTest { | |||||||
| 		} | 		} | ||||||
| 		super.tearDown(); | 		super.tearDown(); | ||||||
| 	} | 	} | ||||||
| 	 |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user