Skip to content

Commit c4bf73d

Browse files
Merge pull request #651 from nextcloud/localId
Retrieve localId via webdav
2 parents cbe1d40 + e96ba95 commit c4bf73d

23 files changed

+156
-85
lines changed

library/src/androidTest/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperationIT.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class UnifiedSearchRemoteOperationIT : AbstractIT() {
7575

7676
assertNotNull(firstResult)
7777
assertEquals(remotePath, firstResult?.remotePath())
78-
assertEquals(fileId, firstResult?.fileId())
78+
assertEquals(fileId.toString(), firstResult?.fileId())
7979
}
8080

8181
@Test

library/src/androidTest/java/com/owncloud/android/FileIT.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,4 +328,21 @@ public void testTwoSharees() {
328328
assertTrue(sharees.contains(user));
329329
}
330330
}
331+
332+
@Test
333+
public void testLocalID() {
334+
// create & verify folder
335+
String path = "/testFolder/";
336+
assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess());
337+
338+
RemoteOperationResult result = new ReadFolderRemoteOperation(path).execute(client);
339+
assertTrue(result.isSuccess());
340+
341+
RemoteFile folder = (RemoteFile) result.getData().get(0);
342+
343+
// we do this only here for testing, this might not work on large installations
344+
int localId = Integer.parseInt(folder.getRemoteId().substring(0, 8).replaceAll("^0*", ""));
345+
346+
assertEquals(folder.getLocalId(), localId);
347+
}
331348
}

library/src/androidTest/java/com/owncloud/android/lib/resources/files/SearchRemoteOperationIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public void testSearchByFileIdSuccess() {
8181
assertTrue(readFile.isSuccess());
8282

8383
RemoteFile remoteFile = ((RemoteFile) readFile.getSingleData());
84-
SearchRemoteOperation sut = new SearchRemoteOperation(remoteFile.getLocalId(),
84+
SearchRemoteOperation sut = new SearchRemoteOperation(String.valueOf(remoteFile.getLocalId()),
8585
SearchRemoteOperation.SearchType.FILE_ID_SEARCH,
8686
false,
8787
capability);

library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class NextcloudUriDelegate(baseUri: Uri, var userId: String?) : NextcloudUriProv
6565
return "$filesDavUri${WebdavUtils.encodePath(path)}"
6666
}
6767

68-
override fun getCommentsUri(fileId: String): String {
68+
override fun getCommentsUri(fileId: Long): String {
6969
return "$davUri/comments/files/$fileId"
7070
}
7171
}

library/src/main/java/com/nextcloud/common/NextcloudUriProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ interface NextcloudUriProvider {
3939
val davUri: Uri
4040

4141
fun getFilesDavUri(path: String): String
42-
fun getCommentsUri(fileId: String): String
42+
fun getCommentsUri(fileId: Long): String
4343
}

library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ public Uri getDavUri() {
328328
return nextcloudUriDelegate.getDavUri();
329329
}
330330

331-
public String getCommentsUri(String fileId) {
331+
public String getCommentsUri(long fileId) {
332332
return nextcloudUriDelegate.getCommentsUri(fileId);
333333
}
334334

library/src/main/java/com/owncloud/android/lib/common/network/WebdavEntry.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ public class WebdavEntry {
5454

5555
private static final String TAG = WebdavEntry.class.getSimpleName();
5656

57-
public static final String NAMESPACE_OC = "http://owncloud.org/ns";
58-
public static final String NAMESPACE_NC = "http://nextcloud.org/ns";
59-
public static final String EXTENDED_PROPERTY_NAME_PERMISSIONS = "permissions";
60-
public static final String EXTENDED_PROPERTY_NAME_REMOTE_ID = "id";
57+
public static final String NAMESPACE_OC = "http://owncloud.org/ns";
58+
public static final String NAMESPACE_NC = "http://nextcloud.org/ns";
59+
public static final String EXTENDED_PROPERTY_NAME_PERMISSIONS = "permissions";
60+
public static final String EXTENDED_PROPERTY_NAME_LOCAL_ID = "fileid";
61+
public static final String EXTENDED_PROPERTY_NAME_REMOTE_ID = "id";
6162
public static final String EXTENDED_PROPERTY_NAME_SIZE = "size";
6263
public static final String EXTENDED_PROPERTY_FAVORITE = "favorite";
6364
public static final String EXTENDED_PROPERTY_IS_ENCRYPTED = "is-encrypted";
@@ -100,8 +101,12 @@ public class WebdavEntry {
100101
@Getter private String contentType;
101102
@Getter private String eTag;
102103
@Getter private String permissions;
103-
@Getter private String remoteId;
104-
@Getter private String trashbinOriginalLocation;
104+
@Getter
105+
private String remoteId;
106+
@Getter
107+
private long localId;
108+
@Getter
109+
private String trashbinOriginalLocation;
105110
@Getter private String trashbinFilename;
106111
@Getter private long trashbinDeletionTimestamp;
107112
@Getter @Setter private boolean favorite;
@@ -282,6 +287,12 @@ public WebdavEntry(MultiStatusResponse ms, String splitElement) {
282287
remoteId = prop.getValue().toString();
283288
}
284289

290+
// OC remote id property <oc:fileid>
291+
prop = propSet.get(EXTENDED_PROPERTY_NAME_LOCAL_ID, ocNamespace);
292+
if (prop != null) {
293+
localId = Long.parseLong((String) prop.getValue());
294+
}
295+
285296
// OC size property <oc:size>
286297
prop = propSet.get(EXTENDED_PROPERTY_NAME_SIZE, ocNamespace);
287298
if (prop != null) {
@@ -531,6 +542,7 @@ public boolean isDirectory() {
531542
private void resetData() {
532543
name = uri = contentType = permissions = null;
533544
remoteId = null;
545+
localId = -1;
534546
contentLength = createTimestamp = modifiedTimestamp = 0;
535547
size = 0;
536548
quotaUsedBytes = null;

library/src/main/java/com/owncloud/android/lib/common/network/WebdavUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public static DavPropertyNameSet getAllPropSet() {
102102
propSet.add(DavPropertyName.CREATIONDATE);
103103
propSet.add(DavPropertyName.GETETAG);
104104
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_PERMISSIONS, ocNamespace);
105+
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_LOCAL_ID, ocNamespace);
105106
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_REMOTE_ID, ocNamespace);
106107
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_SIZE, ocNamespace);
107108
propSet.add(WebdavEntry.EXTENDED_PROPERTY_FAVORITE, ocNamespace);
@@ -145,6 +146,7 @@ public static DavPropertyNameSet getFilePropSet() {
145146
propSet.add(DavPropertyName.CREATIONDATE);
146147
propSet.add(DavPropertyName.GETETAG);
147148
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_PERMISSIONS, ocNamespace);
149+
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_LOCAL_ID, ocNamespace);
148150
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_REMOTE_ID, ocNamespace);
149151
propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_SIZE, ocNamespace);
150152
propSet.add(WebdavEntry.EXTENDED_PROPERTY_FAVORITE, ocNamespace);

library/src/main/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperation.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,16 @@ public class GetActivitiesRemoteOperation extends RemoteOperation {
7575

7676
private int lastGiven = -1;
7777

78-
private String fileId = "";
78+
private long fileId = -1;
7979

8080
public GetActivitiesRemoteOperation() {
8181
}
8282

83-
public GetActivitiesRemoteOperation(String fileId) {
83+
public GetActivitiesRemoteOperation(long fileId) {
8484
this.fileId = fileId;
8585
}
86-
87-
public GetActivitiesRemoteOperation(String fileId, int lastGiven) {
86+
87+
public GetActivitiesRemoteOperation(long fileId, int lastGiven) {
8888
this.fileId = fileId;
8989
this.lastGiven = lastGiven;
9090
}
@@ -102,7 +102,7 @@ public RemoteOperationResult run(NextcloudClient client) {
102102
String url = client.getBaseUri() + OCS_ROUTE_V12_AND_UP;
103103

104104
// add filter for fileId, if available
105-
if (!fileId.isEmpty()) {
105+
if (fileId > 0) {
106106
url = url + "/filter";
107107
}
108108

@@ -119,10 +119,10 @@ public RemoteOperationResult run(NextcloudClient client) {
119119
parameters.put("since", String.valueOf(lastGiven));
120120
}
121121

122-
if (!fileId.isEmpty()) {
122+
if (fileId > 0) {
123123
parameters.put("sort", "desc");
124124
parameters.put("object_type", "files");
125-
parameters.put("object_id", fileId);
125+
parameters.put("object_id", String.valueOf(fileId));
126126
}
127127

128128
get.setQueryString(parameters);
@@ -173,7 +173,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {
173173
String url = client.getBaseUri() + OCS_ROUTE_V12_AND_UP;
174174

175175
// add filter for fileId, if available
176-
if (!fileId.isEmpty()) {
176+
if (fileId > 0) {
177177
url = url + "/filter";
178178
}
179179

@@ -191,10 +191,10 @@ protected RemoteOperationResult run(OwnCloudClient client) {
191191
parameters.add(new NameValuePair("since", String.valueOf(lastGiven)));
192192
}
193193

194-
if (!fileId.isEmpty()) {
194+
if (fileId > 0) {
195195
parameters.add(new NameValuePair("sort", "desc"));
196196
parameters.add(new NameValuePair("object_type", "files"));
197-
parameters.add(new NameValuePair("object_id", fileId));
197+
parameters.add(new NameValuePair("object_id", String.valueOf(fileId)));
198198
}
199199

200200
get.setQueryString(parameters.toArray(new NameValuePair[]{}));

library/src/main/java/com/owncloud/android/lib/resources/comments/CommentFileRemoteOperation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ public class CommentFileRemoteOperation extends RemoteOperation {
5858
private static final String VERB_VALUE = "comment";
5959
private static final String MESSAGE = "message";
6060

61-
private String message;
62-
private String fileId;
61+
private final String message;
62+
private final long fileId;
6363

6464
/**
6565
* Constructor
6666
*
6767
* @param message Comment to store
6868
*/
69-
public CommentFileRemoteOperation(String message, String fileId) {
69+
public CommentFileRemoteOperation(String message, long fileId) {
7070
this.message = message;
7171
this.fileId = fileId;
7272
}

0 commit comments

Comments
 (0)