mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Check the version number taking into account the new format
This commit is contained in:
parent
25c53f3bf9
commit
8d820f42fb
@ -84,7 +84,7 @@ public class AccountUtils {
|
|||||||
String versionString = ama.getUserData(account, Constants.KEY_OC_VERSION_STRING);
|
String versionString = ama.getUserData(account, Constants.KEY_OC_VERSION_STRING);
|
||||||
boolean supportsOAuth = (ama.getUserData(account, Constants.KEY_SUPPORTS_OAUTH2) != null);
|
boolean supportsOAuth = (ama.getUserData(account, Constants.KEY_SUPPORTS_OAUTH2) != null);
|
||||||
boolean supportsSamlSso = (ama.getUserData(account, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
boolean supportsSamlSso = (ama.getUserData(account, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
||||||
OwnCloudVersion ver = new OwnCloudVersion(version, versionString);
|
OwnCloudVersion ver = new OwnCloudVersion(version);
|
||||||
String webdavpath = getWebdavPath(ver, supportsOAuth, supportsSamlSso);
|
String webdavpath = getWebdavPath(ver, supportsOAuth, supportsSamlSso);
|
||||||
|
|
||||||
if (baseurl == null || webdavpath == null)
|
if (baseurl == null || webdavpath == null)
|
||||||
|
@ -87,7 +87,7 @@ public class GetRemoteStatusOperation extends RemoteOperation {
|
|||||||
} else {
|
} else {
|
||||||
String version = json.getString(NODE_VERSION);
|
String version = json.getString(NODE_VERSION);
|
||||||
String versionString = json.getString(NODE_VERSIONSTRING);
|
String versionString = json.getString(NODE_VERSIONSTRING);
|
||||||
mOCVersion = new OwnCloudVersion(version, versionString);
|
mOCVersion = new OwnCloudVersion(version);
|
||||||
if (!mOCVersion.isVersionValid()) {
|
if (!mOCVersion.isVersionValid()) {
|
||||||
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
|
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
package com.owncloud.android.lib.resources.status;
|
package com.owncloud.android.lib.resources.status;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
||||||
public static final OwnCloudVersion owncloud_v1 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v1 = new OwnCloudVersion(
|
||||||
0x010000);
|
0x010000);
|
||||||
@ -37,7 +39,7 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
public static final OwnCloudVersion owncloud_v4_5 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v4_5 = new OwnCloudVersion(
|
||||||
0x040500);
|
0x040500);
|
||||||
|
|
||||||
public static final int MINIMUM_VERSION_STRING_FOR_SHARING_API = 0x05000D;
|
public static final int MINIMUM_VERSION_FOR_SHARING_API = 0x05001B; // 5.0.27
|
||||||
|
|
||||||
// format is in version
|
// format is in version
|
||||||
// 0xAABBCC
|
// 0xAABBCC
|
||||||
@ -47,28 +49,52 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
private boolean mIsValid;
|
private boolean mIsValid;
|
||||||
// not parsed, saved same value offered by the server
|
// not parsed, saved same value offered by the server
|
||||||
private String mVersionString;
|
private String mVersionString;
|
||||||
|
private int mCountDots;
|
||||||
|
|
||||||
protected OwnCloudVersion(int version) {
|
protected OwnCloudVersion(int version) {
|
||||||
mVersion = version;
|
mVersion = version;
|
||||||
mIsValid = true;
|
mIsValid = true;
|
||||||
mVersionString = "";
|
mVersionString = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OwnCloudVersion(String version){
|
||||||
|
mVersion = 0;
|
||||||
|
mIsValid = false;
|
||||||
|
mCountDots = version.length() - version.replace(".", "").length();
|
||||||
|
Log.d("OwnCloudVersion", "VERSION "+ version + " Asign dots = " + String.valueOf(mCountDots));
|
||||||
|
parseVersion(version);
|
||||||
|
|
||||||
public OwnCloudVersion(String version, String versionString) {
|
|
||||||
mVersion = 0;
|
|
||||||
mIsValid = false;
|
|
||||||
parseVersionString(version);
|
|
||||||
if (versionString != null && versionString.length() > 0) {
|
|
||||||
mVersionString = versionString;
|
|
||||||
|
|
||||||
} else if (mIsValid) {
|
|
||||||
mVersionString = version;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public OwnCloudVersion(String version, String versionString) {
|
||||||
|
// mVersion = 0;
|
||||||
|
// mIsValid = false;
|
||||||
|
// //mCountDots = version.length() - version.replace(".", "").length();
|
||||||
|
// mCountDots = 2;
|
||||||
|
// Log.d("OwnCloudVersion", "VERSION "+ version + " Asign dots = " + String.valueOf(mCountDots));
|
||||||
|
// parseVersion(version);
|
||||||
|
// if (versionString != null && versionString.length() > 0) {
|
||||||
|
// mVersionString = versionString;
|
||||||
|
//
|
||||||
|
// } else if (mIsValid) {
|
||||||
|
// mVersionString = version;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return ((mVersion >> 16) % 256) + "." + ((mVersion >> 8) % 256) + "."
|
String versionToString = String.valueOf((mVersion >> (8*mCountDots)) % 256);
|
||||||
+ ((mVersion) % 256);
|
Log.d("OwnCloudVersion", " versionToString " + versionToString);
|
||||||
|
for (int i = mCountDots - 1; i >= 0; i-- ) {
|
||||||
|
Log.d("OwnCloudVersion", "i = "+ i + " versionToString " + versionToString);
|
||||||
|
versionToString = versionToString + "." + String.valueOf((mVersion >> (8*i)) % 256);
|
||||||
|
}
|
||||||
|
//versionToString = versionToString + "." + String.valueOf((mVersion) % 256);
|
||||||
|
|
||||||
|
Log.d("OwnCloudVersion", "dots = " + String.valueOf(mCountDots));
|
||||||
|
Log.d("OwnCloudVersion", " versionToString " + versionToString);
|
||||||
|
Log.d("OwncloudVersion", ((mVersion >> 24) % 256) + "." + ((mVersion >> 16) % 256) + "." + ((mVersion >> 8) % 256) + "."
|
||||||
|
+ ((mVersion) % 256));
|
||||||
|
return versionToString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getVersion() {
|
public String getVersion() {
|
||||||
@ -89,9 +115,9 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
: another.mVersion < mVersion ? 1 : -1;
|
: another.mVersion < mVersion ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseVersionString(String versionString) {
|
private void parseVersion(String version) {
|
||||||
try {
|
try {
|
||||||
mVersion = getParsedVersionString(versionString);
|
mVersion = getParsedVersion(version);
|
||||||
mIsValid = true;
|
mIsValid = true;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -99,37 +125,51 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getParsedVersionString(String versionString) throws NumberFormatException {
|
private int getParsedVersion(String version) throws NumberFormatException {
|
||||||
int version = 0;
|
int versionValue = 0;
|
||||||
|
|
||||||
// get only numeric part
|
// get only numeric part
|
||||||
versionString = versionString.replaceAll("[^\\d.]", "");
|
version = version.replaceAll("[^\\d.]", "");
|
||||||
|
|
||||||
String[] nums = versionString.split("\\.");
|
String[] nums = version.split("\\.");
|
||||||
if (nums.length > 0) {
|
for (int i = 0; i < nums.length; i++) {
|
||||||
version += Integer.parseInt(nums[0]);
|
versionValue += Integer.parseInt(nums[i]);
|
||||||
|
if (i< nums.length -1) {
|
||||||
|
versionValue = versionValue << 8;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
version = version << 8;
|
Log.d("OwnCloudVersion", " ---- version " + String.valueOf(versionValue));
|
||||||
if (nums.length > 1) {
|
|
||||||
version += Integer.parseInt(nums[1]);
|
// versionValue = 0;
|
||||||
}
|
// if (nums.length > 0) {
|
||||||
version = version << 8;
|
// versionValue += Integer.parseInt(nums[0]);
|
||||||
if (nums.length > 2) {
|
// }
|
||||||
version += Integer.parseInt(nums[2]);
|
// versionValue = versionValue << 8;
|
||||||
}
|
// if (nums.length > 1) {
|
||||||
return version;
|
// versionValue += Integer.parseInt(nums[1]);
|
||||||
|
// }
|
||||||
|
// versionValue = versionValue << 8;
|
||||||
|
// if (nums.length > 2) {
|
||||||
|
// versionValue += Integer.parseInt(nums[2]);
|
||||||
|
// }
|
||||||
|
// versionValue = versionValue << 8;
|
||||||
|
// if (nums.length > 3) {
|
||||||
|
// versionValue += Integer.parseInt(nums[3]);
|
||||||
|
// }
|
||||||
|
// Log.d("OwnCloudVersion", " -----version " + String.valueOf(versionValue));
|
||||||
|
return versionValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isSharedSupported() {
|
public boolean isSharedSupported() {
|
||||||
int versionString = 0;
|
// int version = 0;
|
||||||
try {
|
// try {
|
||||||
versionString = getParsedVersionString(mVersionString);
|
// version = getParsedVersion(mVersion);
|
||||||
|
//
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
// nothing to do here
|
// // nothing to do here
|
||||||
}
|
// }
|
||||||
return (versionString >= MINIMUM_VERSION_STRING_FOR_SHARING_API);
|
return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user