mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Fix some indentation issues
This commit is contained in:
parent
59ed7e42ec
commit
87a8b418de
@ -47,24 +47,24 @@ import static com.owncloud.android.lib.common.operations.RemoteOperationResult.R
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by masensio on 08/10/2015.
|
* Created by masensio on 08/10/2015.
|
||||||
*
|
* <p>
|
||||||
* Retrieves a list of sharees (possible targets of a share) from the ownCloud server.
|
* Retrieves a list of sharees (possible targets of a share) from the ownCloud server.
|
||||||
*
|
* <p>
|
||||||
* Currently only handles users and groups. Users in other OC servers (federation) should be added later.
|
* Currently only handles users and groups. Users in other OC servers (federation) should be added later.
|
||||||
*
|
* <p>
|
||||||
* Depends on SHAREE API. {@See https://github.com/owncloud/documentation/issues/1626}
|
* Depends on SHAREE API. {@See https://github.com/owncloud/documentation/issues/1626}
|
||||||
*
|
* <p>
|
||||||
* Syntax:
|
* Syntax:
|
||||||
* Entry point: ocs/v2.php/apps/files_sharing/api/v1/sharees
|
* Entry point: ocs/v2.php/apps/files_sharing/api/v1/sharees
|
||||||
* HTTP method: GET
|
* HTTP method: GET
|
||||||
* url argument: itemType - string, required
|
* url argument: itemType - string, required
|
||||||
* url argument: format - string, optional
|
* url argument: format - string, optional
|
||||||
* url argument: search - string, optional
|
* url argument: search - string, optional
|
||||||
* url arguments: perPage - int, optional
|
* url arguments: perPage - int, optional
|
||||||
* url arguments: page - int, optional
|
* url arguments: page - int, optional
|
||||||
*
|
* <p>
|
||||||
* Status codes:
|
* Status codes:
|
||||||
* 100 - successful
|
* 100 - successful
|
||||||
*
|
*
|
||||||
* @author masensio
|
* @author masensio
|
||||||
* @author David A. Velasco
|
* @author David A. Velasco
|
||||||
@ -108,9 +108,9 @@ public class GetRemoteShareesOperation extends RemoteOperation<ArrayList<JSONObj
|
|||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param searchString string for searching users, optional
|
* @param searchString string for searching users, optional
|
||||||
* @param page page index in the list of results; beginning in 1
|
* @param page page index in the list of results; beginning in 1
|
||||||
* @param perPage maximum number of results in a single page
|
* @param perPage maximum number of results in a single page
|
||||||
*/
|
*/
|
||||||
public GetRemoteShareesOperation(String searchString, int page, int perPage) {
|
public GetRemoteShareesOperation(String searchString, int page, int perPage) {
|
||||||
mSearchString = searchString;
|
mSearchString = searchString;
|
||||||
@ -122,7 +122,7 @@ public class GetRemoteShareesOperation extends RemoteOperation<ArrayList<JSONObj
|
|||||||
protected RemoteOperationResult<ArrayList<JSONObject>> run(OwnCloudClient client) {
|
protected RemoteOperationResult<ArrayList<JSONObject>> run(OwnCloudClient client) {
|
||||||
RemoteOperationResult<ArrayList<JSONObject>> result;
|
RemoteOperationResult<ArrayList<JSONObject>> result;
|
||||||
|
|
||||||
try{
|
try {
|
||||||
Uri requestUri = client.getBaseUri();
|
Uri requestUri = client.getBaseUri();
|
||||||
Uri.Builder uriBuilder = requestUri.buildUpon()
|
Uri.Builder uriBuilder = requestUri.buildUpon()
|
||||||
.appendEncodedPath(OCS_ROUTE)
|
.appendEncodedPath(OCS_ROUTE)
|
||||||
@ -139,7 +139,7 @@ public class GetRemoteShareesOperation extends RemoteOperation<ArrayList<JSONObj
|
|||||||
int status = client.executeHttpMethod(getMethod);
|
int status = client.executeHttpMethod(getMethod);
|
||||||
String response = getMethod.getResponseBodyAsString();
|
String response = getMethod.getResponseBodyAsString();
|
||||||
|
|
||||||
if(isSuccess(status)) {
|
if (isSuccess(status)) {
|
||||||
Log_OC.d(TAG, "Successful response: " + response);
|
Log_OC.d(TAG, "Successful response: " + response);
|
||||||
|
|
||||||
// Parse the response
|
// Parse the response
|
||||||
@ -163,8 +163,8 @@ public class GetRemoteShareesOperation extends RemoteOperation<ArrayList<JSONObj
|
|||||||
};
|
};
|
||||||
|
|
||||||
ArrayList<JSONObject> data = new ArrayList<>(); // For result data
|
ArrayList<JSONObject> data = new ArrayList<>(); // For result data
|
||||||
for (int i=0; i<6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
for(int j=0; j< jsonResults[i].length(); j++){
|
for (int j = 0; j < jsonResults[i].length(); j++) {
|
||||||
JSONObject jsonResult = jsonResults[i].getJSONObject(j);
|
JSONObject jsonResult = jsonResults[i].getJSONObject(j);
|
||||||
data.add(jsonResult);
|
data.add(jsonResult);
|
||||||
Log_OC.d(TAG, "*** Added item: " + jsonResult.getString(PROPERTY_LABEL));
|
Log_OC.d(TAG, "*** Added item: " + jsonResult.getString(PROPERTY_LABEL));
|
||||||
@ -174,7 +174,7 @@ public class GetRemoteShareesOperation extends RemoteOperation<ArrayList<JSONObj
|
|||||||
result = new RemoteOperationResult<>(OK);
|
result = new RemoteOperationResult<>(OK);
|
||||||
result.setData(data);
|
result.setData(data);
|
||||||
|
|
||||||
Log_OC.d(TAG, "*** Get Users or groups completed " );
|
Log_OC.d(TAG, "*** Get Users or groups completed ");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
result = new RemoteOperationResult<>(getMethod);
|
result = new RemoteOperationResult<>(getMethod);
|
||||||
|
@ -39,405 +39,414 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Parser for Share API Response
|
* Parser for Share API Response
|
||||||
|
*
|
||||||
* @author masensio
|
* @author masensio
|
||||||
* @author David González Verdugo
|
* @author David González Verdugo
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class ShareXMLParser {
|
public class ShareXMLParser {
|
||||||
|
|
||||||
//private static final String TAG = ShareXMLParser.class.getSimpleName();
|
//private static final String TAG = ShareXMLParser.class.getSimpleName();
|
||||||
|
|
||||||
// No namespaces
|
// No namespaces
|
||||||
private static final String ns = null;
|
private static final String ns = null;
|
||||||
|
|
||||||
// NODES for XML Parser
|
// NODES for XML Parser
|
||||||
private static final String NODE_OCS = "ocs";
|
private static final String NODE_OCS = "ocs";
|
||||||
|
|
||||||
private static final String NODE_META = "meta";
|
private static final String NODE_META = "meta";
|
||||||
private static final String NODE_STATUS = "status";
|
private static final String NODE_STATUS = "status";
|
||||||
private static final String NODE_STATUS_CODE = "statuscode";
|
private static final String NODE_STATUS_CODE = "statuscode";
|
||||||
private static final String NODE_MESSAGE = "message";
|
private static final String NODE_MESSAGE = "message";
|
||||||
|
|
||||||
private static final String NODE_DATA = "data";
|
private static final String NODE_DATA = "data";
|
||||||
private static final String NODE_ELEMENT = "element";
|
private static final String NODE_ELEMENT = "element";
|
||||||
private static final String NODE_ID = "id";
|
private static final String NODE_ID = "id";
|
||||||
private static final String NODE_ITEM_TYPE = "item_type";
|
private static final String NODE_ITEM_TYPE = "item_type";
|
||||||
private static final String NODE_ITEM_SOURCE = "item_source";
|
private static final String NODE_ITEM_SOURCE = "item_source";
|
||||||
private static final String NODE_PARENT = "parent";
|
private static final String NODE_PARENT = "parent";
|
||||||
private static final String NODE_SHARE_TYPE = "share_type";
|
private static final String NODE_SHARE_TYPE = "share_type";
|
||||||
private static final String NODE_SHARE_WITH = "share_with";
|
private static final String NODE_SHARE_WITH = "share_with";
|
||||||
private static final String NODE_FILE_SOURCE = "file_source";
|
private static final String NODE_FILE_SOURCE = "file_source";
|
||||||
private static final String NODE_PATH = "path";
|
private static final String NODE_PATH = "path";
|
||||||
private static final String NODE_PERMISSIONS = "permissions";
|
private static final String NODE_PERMISSIONS = "permissions";
|
||||||
private static final String NODE_STIME = "stime";
|
private static final String NODE_STIME = "stime";
|
||||||
private static final String NODE_EXPIRATION = "expiration";
|
private static final String NODE_EXPIRATION = "expiration";
|
||||||
private static final String NODE_TOKEN = "token";
|
private static final String NODE_TOKEN = "token";
|
||||||
private static final String NODE_STORAGE = "storage";
|
private static final String NODE_STORAGE = "storage";
|
||||||
private static final String NODE_MAIL_SEND = "mail_send";
|
private static final String NODE_MAIL_SEND = "mail_send";
|
||||||
private static final String NODE_SHARE_WITH_DISPLAY_NAME = "share_with_displayname";
|
private static final String NODE_SHARE_WITH_DISPLAY_NAME = "share_with_displayname";
|
||||||
private static final String NODE_SHARE_WITH_ADDITIONAL_INFO = "share_with_additional_info";
|
private static final String NODE_SHARE_WITH_ADDITIONAL_INFO = "share_with_additional_info";
|
||||||
private static final String NODE_NAME = "name";
|
private static final String NODE_NAME = "name";
|
||||||
|
|
||||||
private static final String NODE_URL = "url";
|
private static final String NODE_URL = "url";
|
||||||
|
|
||||||
private static final String TYPE_FOLDER = "folder";
|
private static final String TYPE_FOLDER = "folder";
|
||||||
|
|
||||||
private static final int SUCCESS = 200;
|
private static final int SUCCESS = 200;
|
||||||
private static final int ERROR_WRONG_PARAMETER = 400;
|
private static final int ERROR_WRONG_PARAMETER = 400;
|
||||||
private static final int ERROR_FORBIDDEN = 403;
|
private static final int ERROR_FORBIDDEN = 403;
|
||||||
private static final int ERROR_NOT_FOUND = 404;
|
private static final int ERROR_NOT_FOUND = 404;
|
||||||
|
|
||||||
private String mStatus;
|
private String mStatus;
|
||||||
private int mStatusCode;
|
private int mStatusCode;
|
||||||
private String mMessage;
|
private String mMessage;
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
public String getStatus() {
|
public String getStatus() {
|
||||||
return mStatus;
|
return mStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(String status) {
|
public void setStatus(String status) {
|
||||||
this.mStatus = status;
|
this.mStatus = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getStatusCode() {
|
public int getStatusCode() {
|
||||||
return mStatusCode;
|
return mStatusCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatusCode(int statusCode) {
|
public void setStatusCode(int statusCode) {
|
||||||
this.mStatusCode = statusCode;
|
this.mStatusCode = statusCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return mMessage;
|
return mMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessage(String message) {
|
public void setMessage(String message) {
|
||||||
this.mMessage = message;
|
this.mMessage = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
public ShareXMLParser() {
|
public ShareXMLParser() {
|
||||||
mStatusCode = -1;
|
mStatusCode = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSuccess() {
|
public boolean isSuccess() {
|
||||||
return mStatusCode == SUCCESS;
|
return mStatusCode == SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isForbidden() {
|
public boolean isForbidden() {
|
||||||
return mStatusCode == ERROR_FORBIDDEN;
|
return mStatusCode == ERROR_FORBIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isNotFound() {
|
public boolean isNotFound() {
|
||||||
return mStatusCode == ERROR_NOT_FOUND;
|
return mStatusCode == ERROR_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWrongParameter() {
|
public boolean isWrongParameter() {
|
||||||
return mStatusCode == ERROR_WRONG_PARAMETER;
|
return mStatusCode == ERROR_WRONG_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse is as response of Share API
|
* Parse is as response of Share API
|
||||||
* @param is
|
*
|
||||||
* @return List of ShareRemoteFiles
|
* @param is
|
||||||
* @throws XmlPullParserException
|
* @return List of ShareRemoteFiles
|
||||||
* @throws IOException
|
* @throws XmlPullParserException
|
||||||
*/
|
* @throws IOException
|
||||||
public ArrayList<OCShare> parseXMLResponse(InputStream is) throws XmlPullParserException,
|
*/
|
||||||
IOException {
|
public ArrayList<OCShare> parseXMLResponse(InputStream is) throws XmlPullParserException,
|
||||||
|
IOException {
|
||||||
try {
|
|
||||||
// XMLPullParser
|
try {
|
||||||
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
// XMLPullParser
|
||||||
factory.setNamespaceAware(true);
|
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
||||||
|
factory.setNamespaceAware(true);
|
||||||
XmlPullParser parser = Xml.newPullParser();
|
|
||||||
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
|
XmlPullParser parser = Xml.newPullParser();
|
||||||
parser.setInput(is, null);
|
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
|
||||||
parser.nextTag();
|
parser.setInput(is, null);
|
||||||
return readOCS(parser);
|
parser.nextTag();
|
||||||
|
return readOCS(parser);
|
||||||
} finally {
|
|
||||||
is.close();
|
} finally {
|
||||||
}
|
is.close();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/**
|
|
||||||
* Parse OCS node
|
/**
|
||||||
* @param parser
|
* Parse OCS node
|
||||||
* @return List of ShareRemoteFiles
|
*
|
||||||
* @throws XmlPullParserException
|
* @param parser
|
||||||
* @throws IOException
|
* @return List of ShareRemoteFiles
|
||||||
*/
|
* @throws XmlPullParserException
|
||||||
private ArrayList<OCShare> readOCS (XmlPullParser parser) throws XmlPullParserException,
|
* @throws IOException
|
||||||
IOException {
|
*/
|
||||||
ArrayList<OCShare> shares = new ArrayList<>();
|
private ArrayList<OCShare> readOCS(XmlPullParser parser) throws XmlPullParserException,
|
||||||
parser.require(XmlPullParser.START_TAG, ns , NODE_OCS);
|
IOException {
|
||||||
while (parser.next() != XmlPullParser.END_TAG) {
|
ArrayList<OCShare> shares = new ArrayList<>();
|
||||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
parser.require(XmlPullParser.START_TAG, ns, NODE_OCS);
|
||||||
continue;
|
while (parser.next() != XmlPullParser.END_TAG) {
|
||||||
}
|
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||||
String name = parser.getName();
|
continue;
|
||||||
// read NODE_META and NODE_DATA
|
}
|
||||||
if (name.equalsIgnoreCase(NODE_META)) {
|
String name = parser.getName();
|
||||||
readMeta(parser);
|
// read NODE_META and NODE_DATA
|
||||||
} else if (name.equalsIgnoreCase(NODE_DATA)) {
|
if (name.equalsIgnoreCase(NODE_META)) {
|
||||||
shares = readData(parser);
|
readMeta(parser);
|
||||||
} else {
|
} else if (name.equalsIgnoreCase(NODE_DATA)) {
|
||||||
skip(parser);
|
shares = readData(parser);
|
||||||
}
|
} else {
|
||||||
|
skip(parser);
|
||||||
}
|
}
|
||||||
return shares;
|
|
||||||
}
|
}
|
||||||
|
return shares;
|
||||||
/**
|
}
|
||||||
* Parse Meta node
|
|
||||||
* @param parser
|
/**
|
||||||
* @throws XmlPullParserException
|
* Parse Meta node
|
||||||
* @throws IOException
|
*
|
||||||
*/
|
* @param parser
|
||||||
private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException {
|
* @throws XmlPullParserException
|
||||||
parser.require(XmlPullParser.START_TAG, ns, NODE_META);
|
* @throws IOException
|
||||||
//Log_OC.d(TAG, "---- NODE META ---");
|
*/
|
||||||
while (parser.next() != XmlPullParser.END_TAG) {
|
private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
parser.require(XmlPullParser.START_TAG, ns, NODE_META);
|
||||||
continue;
|
//Log_OC.d(TAG, "---- NODE META ---");
|
||||||
}
|
while (parser.next() != XmlPullParser.END_TAG) {
|
||||||
String name = parser.getName();
|
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||||
|
continue;
|
||||||
if (name.equalsIgnoreCase(NODE_STATUS)) {
|
}
|
||||||
setStatus(readNode(parser, NODE_STATUS));
|
String name = parser.getName();
|
||||||
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) {
|
if (name.equalsIgnoreCase(NODE_STATUS)) {
|
||||||
setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE)));
|
setStatus(readNode(parser, NODE_STATUS));
|
||||||
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_MESSAGE)) {
|
} else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) {
|
||||||
setMessage(readNode(parser, NODE_MESSAGE));
|
setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE)));
|
||||||
|
|
||||||
} else {
|
} else if (name.equalsIgnoreCase(NODE_MESSAGE)) {
|
||||||
skip(parser);
|
setMessage(readNode(parser, NODE_MESSAGE));
|
||||||
}
|
|
||||||
|
} else {
|
||||||
}
|
skip(parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
}
|
||||||
* Parse Data node
|
}
|
||||||
* @param parser
|
|
||||||
* @return
|
/**
|
||||||
* @throws XmlPullParserException
|
* Parse Data node
|
||||||
* @throws IOException
|
*
|
||||||
*/
|
* @param parser
|
||||||
private ArrayList<OCShare> readData(XmlPullParser parser) throws XmlPullParserException,
|
* @return
|
||||||
IOException {
|
* @throws XmlPullParserException
|
||||||
ArrayList<OCShare> shares = new ArrayList<OCShare>();
|
* @throws IOException
|
||||||
OCShare share = null;
|
*/
|
||||||
|
private ArrayList<OCShare> readData(XmlPullParser parser) throws XmlPullParserException,
|
||||||
parser.require(XmlPullParser.START_TAG, ns, NODE_DATA);
|
IOException {
|
||||||
//Log_OC.d(TAG, "---- NODE DATA ---");
|
ArrayList<OCShare> shares = new ArrayList<OCShare>();
|
||||||
while (parser.next() != XmlPullParser.END_TAG) {
|
OCShare share = null;
|
||||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
|
||||||
continue;
|
parser.require(XmlPullParser.START_TAG, ns, NODE_DATA);
|
||||||
}
|
//Log_OC.d(TAG, "---- NODE DATA ---");
|
||||||
String name = parser.getName();
|
while (parser.next() != XmlPullParser.END_TAG) {
|
||||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||||
readElement(parser, shares);
|
continue;
|
||||||
|
}
|
||||||
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
String name = parser.getName();
|
||||||
share = new OCShare();
|
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||||
String value = readNode(parser, NODE_ID);
|
readElement(parser, shares);
|
||||||
share.setIdRemoteShared(Integer.parseInt(value));
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
||||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
share = new OCShare();
|
||||||
// NOTE: this field is received in all the public shares from OC 9.0.0
|
String value = readNode(parser, NODE_ID);
|
||||||
// in previous versions, it's received in the result of POST requests, but not
|
share.setIdRemoteShared(Integer.parseInt(value));
|
||||||
// in GET requests
|
|
||||||
share.setShareType(ShareType.PUBLIC_LINK);
|
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||||
String value = readNode(parser, NODE_URL);
|
// NOTE: this field is received in all the public shares from OC 9.0.0
|
||||||
share.setShareLink(value);
|
// in previous versions, it's received in the result of POST requests, but not
|
||||||
|
// in GET requests
|
||||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
share.setShareType(ShareType.PUBLIC_LINK);
|
||||||
share.setToken(readNode(parser, NODE_TOKEN));
|
String value = readNode(parser, NODE_URL);
|
||||||
|
share.setShareLink(value);
|
||||||
} else {
|
|
||||||
skip(parser);
|
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||||
|
share.setToken(readNode(parser, NODE_TOKEN));
|
||||||
}
|
|
||||||
}
|
} else {
|
||||||
|
skip(parser);
|
||||||
if (share != null) {
|
|
||||||
// this is the response of a request for creation; don't pass to isValidShare()
|
}
|
||||||
shares.add(share);
|
}
|
||||||
}
|
|
||||||
|
if (share != null) {
|
||||||
return shares;
|
// this is the response of a request for creation; don't pass to isValidShare()
|
||||||
|
shares.add(share);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return shares;
|
||||||
/**
|
|
||||||
* Parse Element node
|
}
|
||||||
* @param parser
|
|
||||||
* @return
|
|
||||||
* @throws XmlPullParserException
|
/**
|
||||||
* @throws IOException
|
* Parse Element node
|
||||||
*/
|
*
|
||||||
private void readElement(XmlPullParser parser, ArrayList<OCShare> shares)
|
* @param parser
|
||||||
throws XmlPullParserException, IOException {
|
* @return
|
||||||
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
* @throws XmlPullParserException
|
||||||
|
* @throws IOException
|
||||||
OCShare share = new OCShare();
|
*/
|
||||||
|
private void readElement(XmlPullParser parser, ArrayList<OCShare> shares)
|
||||||
//Log_OC.d(TAG, "---- NODE ELEMENT ---");
|
throws XmlPullParserException, IOException {
|
||||||
while (parser.next() != XmlPullParser.END_TAG) {
|
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
||||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
|
||||||
continue;
|
OCShare share = new OCShare();
|
||||||
}
|
|
||||||
|
//Log_OC.d(TAG, "---- NODE ELEMENT ---");
|
||||||
String name = parser.getName();
|
while (parser.next() != XmlPullParser.END_TAG) {
|
||||||
|
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
continue;
|
||||||
// patch to work around servers responding with extra <element> surrounding all
|
}
|
||||||
// the shares on the same file before
|
|
||||||
// https://github.com/owncloud/core/issues/6992 was fixed
|
String name = parser.getName();
|
||||||
readElement(parser, shares);
|
|
||||||
|
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
// patch to work around servers responding with extra <element> surrounding all
|
||||||
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
// the shares on the same file before
|
||||||
|
// https://github.com/owncloud/core/issues/6992 was fixed
|
||||||
} else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) {
|
readElement(parser, shares);
|
||||||
share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER));
|
|
||||||
fixPathForFolder(share);
|
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
||||||
|
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
||||||
} else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) {
|
|
||||||
share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE)));
|
} else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) {
|
||||||
|
share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER));
|
||||||
} else if (name.equalsIgnoreCase(NODE_PARENT)) {
|
fixPathForFolder(share);
|
||||||
readNode(parser, NODE_PARENT);
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) {
|
share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE)));
|
||||||
int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE));
|
|
||||||
share.setShareType(ShareType.fromValue(value));
|
} else if (name.equalsIgnoreCase(NODE_PARENT)) {
|
||||||
|
readNode(parser, NODE_PARENT);
|
||||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) {
|
|
||||||
share.setShareWith(readNode(parser, NODE_SHARE_WITH));
|
} else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) {
|
||||||
|
int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE));
|
||||||
} else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) {
|
share.setShareType(ShareType.fromValue(value));
|
||||||
share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE)));
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_PATH)) {
|
share.setShareWith(readNode(parser, NODE_SHARE_WITH));
|
||||||
share.setPath(readNode(parser, NODE_PATH));
|
|
||||||
fixPathForFolder(share);
|
} else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) {
|
||||||
|
share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE)));
|
||||||
} else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) {
|
|
||||||
share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS)));
|
} else if (name.equalsIgnoreCase(NODE_PATH)) {
|
||||||
|
share.setPath(readNode(parser, NODE_PATH));
|
||||||
} else if (name.equalsIgnoreCase(NODE_STIME)) {
|
fixPathForFolder(share);
|
||||||
share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME)));
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_EXPIRATION)) {
|
share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS)));
|
||||||
String value = readNode(parser, NODE_EXPIRATION);
|
|
||||||
if (!(value.length() == 0)) {
|
} else if (name.equalsIgnoreCase(NODE_STIME)) {
|
||||||
share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime());
|
share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME)));
|
||||||
}
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_EXPIRATION)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
String value = readNode(parser, NODE_EXPIRATION);
|
||||||
share.setToken(readNode(parser, NODE_TOKEN));
|
if (!(value.length() == 0)) {
|
||||||
|
share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime());
|
||||||
} else if (name.equalsIgnoreCase(NODE_STORAGE)) {
|
}
|
||||||
readNode(parser, NODE_STORAGE);
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) {
|
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||||
readNode(parser, NODE_MAIL_SEND);
|
share.setToken(readNode(parser, NODE_TOKEN));
|
||||||
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) {
|
} else if (name.equalsIgnoreCase(NODE_STORAGE)) {
|
||||||
share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME));
|
readNode(parser, NODE_STORAGE);
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_ADDITIONAL_INFO)) {
|
readNode(parser, NODE_MAIL_SEND);
|
||||||
share.setSharedWithAdditionalInfo(readNode(parser, NODE_SHARE_WITH_ADDITIONAL_INFO));
|
|
||||||
|
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) {
|
||||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME));
|
||||||
String value = readNode(parser, NODE_URL);
|
|
||||||
share.setShareLink(value);
|
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_ADDITIONAL_INFO)) {
|
||||||
|
share.setSharedWithAdditionalInfo(readNode(parser, NODE_SHARE_WITH_ADDITIONAL_INFO));
|
||||||
} else if (name.equalsIgnoreCase(NODE_NAME)) {
|
|
||||||
share.setName(readNode(parser, NODE_NAME));
|
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||||
|
String value = readNode(parser, NODE_URL);
|
||||||
} else {
|
share.setShareLink(value);
|
||||||
skip(parser);
|
|
||||||
}
|
} else if (name.equalsIgnoreCase(NODE_NAME)) {
|
||||||
}
|
share.setName(readNode(parser, NODE_NAME));
|
||||||
|
|
||||||
if (isValidShare(share)) {
|
} else {
|
||||||
shares.add(share);
|
skip(parser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidShare(OCShare share) {
|
if (isValidShare(share)) {
|
||||||
return (share.getRemoteId() > -1);
|
shares.add(share);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private void fixPathForFolder(OCShare share) {
|
|
||||||
if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 &&
|
private boolean isValidShare(OCShare share) {
|
||||||
!share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) {
|
return (share.getRemoteId() > -1);
|
||||||
share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR);
|
}
|
||||||
}
|
|
||||||
}
|
private void fixPathForFolder(OCShare share) {
|
||||||
|
if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 &&
|
||||||
/**
|
!share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) {
|
||||||
* Parse a node, to obtain its text. Needs readText method
|
share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR);
|
||||||
* @param parser
|
}
|
||||||
* @param node
|
}
|
||||||
* @return Text of the node
|
|
||||||
* @throws XmlPullParserException
|
/**
|
||||||
* @throws IOException
|
* Parse a node, to obtain its text. Needs readText method
|
||||||
*/
|
*
|
||||||
private String readNode (XmlPullParser parser, String node) throws XmlPullParserException,
|
* @param parser
|
||||||
IOException{
|
* @param node
|
||||||
parser.require(XmlPullParser.START_TAG, ns, node);
|
* @return Text of the node
|
||||||
String value = readText(parser);
|
* @throws XmlPullParserException
|
||||||
//Log_OC.d(TAG, "node= " + node + ", value= " + value);
|
* @throws IOException
|
||||||
parser.require(XmlPullParser.END_TAG, ns, node);
|
*/
|
||||||
return value;
|
private String readNode(XmlPullParser parser, String node) throws XmlPullParserException,
|
||||||
}
|
IOException {
|
||||||
|
parser.require(XmlPullParser.START_TAG, ns, node);
|
||||||
/**
|
String value = readText(parser);
|
||||||
* Read the text from a node
|
//Log_OC.d(TAG, "node= " + node + ", value= " + value);
|
||||||
* @param parser
|
parser.require(XmlPullParser.END_TAG, ns, node);
|
||||||
* @return Text of the node
|
return value;
|
||||||
* @throws IOException
|
}
|
||||||
* @throws XmlPullParserException
|
|
||||||
*/
|
/**
|
||||||
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
|
* Read the text from a node
|
||||||
String result = "";
|
*
|
||||||
if (parser.next() == XmlPullParser.TEXT) {
|
* @param parser
|
||||||
result = parser.getText();
|
* @return Text of the node
|
||||||
parser.nextTag();
|
* @throws IOException
|
||||||
}
|
* @throws XmlPullParserException
|
||||||
return result;
|
*/
|
||||||
}
|
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
|
||||||
|
String result = "";
|
||||||
/**
|
if (parser.next() == XmlPullParser.TEXT) {
|
||||||
* Skip tags in parser procedure
|
result = parser.getText();
|
||||||
* @param parser
|
parser.nextTag();
|
||||||
* @throws XmlPullParserException
|
}
|
||||||
* @throws IOException
|
return result;
|
||||||
*/
|
}
|
||||||
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
|
|
||||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
/**
|
||||||
throw new IllegalStateException();
|
* Skip tags in parser procedure
|
||||||
}
|
*
|
||||||
int depth = 1;
|
* @param parser
|
||||||
while (depth != 0) {
|
* @throws XmlPullParserException
|
||||||
switch (parser.next()) {
|
* @throws IOException
|
||||||
case XmlPullParser.END_TAG:
|
*/
|
||||||
depth--;
|
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||||
break;
|
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||||
case XmlPullParser.START_TAG:
|
throw new IllegalStateException();
|
||||||
depth++;
|
}
|
||||||
break;
|
int depth = 1;
|
||||||
}
|
while (depth != 0) {
|
||||||
}
|
switch (parser.next()) {
|
||||||
}
|
case XmlPullParser.END_TAG:
|
||||||
|
depth--;
|
||||||
|
break;
|
||||||
|
case XmlPullParser.START_TAG:
|
||||||
|
depth++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user