public boolean saveFile(OCFile file);
public Vector<OCFile> getDirectoryContent(OCFile f);
+
+ public void removeFile(OCFile file);
}
cv.put(ProviderTableMeta.FILE_PATH, file.getPath());
cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath());
cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);
+ cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDate());
if (fileExists(file.getPath())) {
OCFile tmpfile = getFileByPath(file.getPath());
.getColumnIndex(ProviderTableMeta.FILE_CREATION)));
file.setModificationTimestamp(c.getLong(c
.getColumnIndex(ProviderTableMeta.FILE_MODIFIED)));
+ file.setLastSyncDate(c.getLong(c
+ .getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE)));
}
return file;
}
+
+ public void removeFile(OCFile file) {
+ Uri file_uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, ""+file.getFileId());
+ if (getContentProvider() != null) {
+ try {
+ getContentProvider().delete(file_uri,
+ ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",
+ new String[]{mAccount.name});
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ } else {
+ getContentResolver().delete(file_uri,
+ ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",
+ new String[]{mAccount.name});
+ }
+ }
}
private String mLocalPath;
private String mMimeType;
private boolean mNeedsUpdating;
+ private long mLastSyncDate;
/**
* Create new {@link OCFile} with given path
mLength = 0;
mCreationTimestamp = 0;
mModifiedTimestamp = 0;
+ mLastSyncDate = 0;
}
/**
public boolean needsUpdatingWhileSaving() {
return mNeedsUpdating;
}
+
+ public long getLastSyncDate() {
+ return mLastSyncDate;
+ }
+
+ public void setLastSyncDate(long lastSyncDate) {
+ mLastSyncDate = lastSyncDate;
+ }
@Override
public int describeContents() {
dest.writeString(mRemotePath);
dest.writeString(mLocalPath);
dest.writeString(mMimeType);
- dest.writeInt(mNeedsUpdating ? 0 : 1); // No writeBoolean method exists
- // - yay :D
+ dest.writeInt(mNeedsUpdating ? 1 : 0);
+ dest.writeLong(mLastSyncDate);
}
}
public static final String FILE_STORAGE_PATH = "media_path";\r
public static final String FILE_PATH = "path";\r
public static final String FILE_ACCOUNT_OWNER = "file_owner";\r
+ public static final String FILE_LAST_SYNC_DATE = "last_sync_date";\r
\r
public static final String DEFAULT_SORT_ORDER = FILE_NAME\r
+ " collate nocase asc";\r
ProviderTableMeta.FILE_CONTENT_TYPE);\r
mProjectionMap.put(ProviderTableMeta.FILE_STORAGE_PATH,\r
ProviderTableMeta.FILE_STORAGE_PATH);\r
+ mProjectionMap.put(ProviderTableMeta.FILE_LAST_SYNC_DATE,\r
+ ProviderTableMeta.FILE_LAST_SYNC_DATE);\r
}\r
\r
private static final int SINGLE_FILE = 1;\r
+ ProviderTableMeta.FILE_CONTENT_TYPE + " TEXT, "\r
+ ProviderTableMeta.FILE_CONTENT_LENGTH + " INTEGER, "\r
+ ProviderTableMeta.FILE_STORAGE_PATH + " TEXT, "\r
- + ProviderTableMeta.FILE_ACCOUNT_OWNER + " TEXT);");\r
+ + ProviderTableMeta.FILE_ACCOUNT_OWNER + " TEXT, "\r
+ + ProviderTableMeta.FILE_LAST_SYNC_DATE + " INTEGER );");\r
}\r
\r
@Override\r
package eu.alefzero.owncloud.syncadapter;\r
\r
import java.io.IOException;\r
+import java.net.URLDecoder;\r
+import java.util.Vector;\r
\r
import org.apache.jackrabbit.webdav.DavException;\r
import org.apache.jackrabbit.webdav.MultiStatus;\r
*/\r
public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {\r
\r
+ private long mCurrentSyncTime;\r
+ \r
public FileSyncAdapter(Context context, boolean autoInitialize) {\r
super(context, autoInitialize);\r
}\r
\r
PropFindMethod query;\r
try {\r
- Log.e("ASD", getUri().toString());\r
+ mCurrentSyncTime = System.currentTimeMillis();\r
query = new PropFindMethod(getUri().toString() + "/");\r
getClient().executeMethod(query);\r
MultiStatus resp = null;\r
if (parentId == 0)\r
parentId = file.getFileId();\r
if (we.contentType().equals("DIR"))\r
- fetchData(getUri().toString() + we.path(), syncResult,\r
- file.getFileId());\r
+ fetchData(getUri().toString() + we.path(), syncResult, file.getFileId());\r
+ }\r
+ Vector<OCFile> files = getStorageManager().getDirectoryContent(\r
+ getStorageManager().getFileById(parentId));\r
+ for (OCFile file : files) {\r
+ if (file.getLastSyncDate() != mCurrentSyncTime && file.getLastSyncDate() != 0)\r
+ getStorageManager().removeFile(file);\r
}\r
} catch (OperationCanceledException e) {\r
e.printStackTrace();\r
}\r
\r
private OCFile fillOCFile(WebdavEntry we) {\r
- OCFile file = new OCFile(we.path());\r
+ OCFile file = new OCFile(URLDecoder.decode(we.path()));\r
file.setCreationTimestamp(we.createTimestamp());\r
file.setFileLength(we.contentLength());\r
file.setMimetype(we.contentType());\r
file.setModificationTimestamp(we.modifiedTimesamp());\r
+ file.setLastSyncDate(mCurrentSyncTime);\r
return file;\r
}\r
\r