2c7f378b0133433effb3a46c86ff2cb861b2a473
[pub/Android/ownCloud.git] / src / eu / alefzero / webdav / WebdavEntry.java
1 package eu.alefzero.webdav;
2
3 import java.util.Date;
4
5 import org.apache.jackrabbit.webdav.MultiStatusResponse;
6 import org.apache.jackrabbit.webdav.property.DavProperty;
7 import org.apache.jackrabbit.webdav.property.DavPropertyName;
8 import org.apache.jackrabbit.webdav.property.DavPropertySet;
9
10 import android.util.Log;
11
12 public class WebdavEntry {
13 private String mName, mPath, mUri, mContentType;
14 private long mContentLength, mCreateTimestamp, mModifiedTimestamp;
15
16 public WebdavEntry(MultiStatusResponse ms) {
17 resetData();
18 if (ms.getStatus().length != 0) {
19 mUri = ms.getHref();
20
21 mPath = mUri.split("webdav.php", 2)[1];
22
23 int status = ms.getStatus()[0].getStatusCode();
24 DavPropertySet propSet = ms.getProperties(status);
25 @SuppressWarnings("rawtypes")
26 DavProperty prop = propSet.get(DavPropertyName.DISPLAYNAME);
27 if (prop != null) mName = (String) prop.getName().toString();
28 else {
29 String[] tmp = mPath.split("/");
30 if (tmp.length > 0)
31 mName = tmp[tmp.length-1];
32 }
33
34 prop = propSet.get(DavPropertyName.GETCONTENTTYPE);
35 if (prop != null) {
36 mContentType = (String) prop.getValue();
37 } else {
38 mContentType = "DIR";
39 /*prop = propSet.get(DavPropertyName.ISCOLLECTION);
40 if (prop != null && Boolean.parseBoolean((String) prop.getValue()))
41 mContentType = "DIR";*/
42 }
43
44 prop = propSet.get(DavPropertyName.GETCONTENTLENGTH);
45 if (prop != null)
46 mContentLength = Long.parseLong((String) prop.getValue());
47
48 prop = propSet.get(DavPropertyName.GETLASTMODIFIED);
49 if (prop != null) {
50 Date d = WebdavUtils.parseResponseDate((String)prop.getValue());
51 mModifiedTimestamp = (d != null) ? d.getTime() : 0;
52 }
53
54 prop = propSet.get(DavPropertyName.CREATIONDATE);
55 if (prop != null) {
56 Date d = WebdavUtils.parseResponseDate((String)prop.getValue());
57 mCreateTimestamp = (d != null) ? d.getTime() : 0;
58 }
59
60 } else {
61 Log.e("WebdavEntry", "General fuckup, no status for webdav response");
62 }
63 }
64
65 public String path() {
66 return mPath;
67 }
68
69 public String name() {
70 return mName;
71 }
72
73 public boolean isDirectory() {
74 return mContentType.equals("DIR");
75 }
76
77 public String contentType() {
78 return mContentType;
79 }
80
81 public String uri() {
82 return mUri;
83 }
84
85 public long contentLength() {
86 return mContentLength;
87 }
88
89 public long createTimestamp() {
90 return mCreateTimestamp;
91 }
92
93 public long modifiedTimesamp() {
94 return mModifiedTimestamp;
95 }
96
97 private void resetData() {
98 mName = mUri = mContentType = null;
99 mContentLength = mCreateTimestamp = mModifiedTimestamp = 0;
100 }
101 }