1
0
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:
masensio 2014-03-27 09:45:07 +01:00
parent 25c53f3bf9
commit 8d820f42fb
3 changed files with 80 additions and 40 deletions

View File

@ -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)

View File

@ -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);

View File

@ -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);
} }