mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +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,6 +49,7 @@ 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; | ||||||
| @ -54,21 +57,44 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> { | |||||||
|         mVersionString = ""; |         mVersionString = ""; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public OwnCloudVersion(String version, String versionString) { |     public OwnCloudVersion(String version){ | ||||||
|     	 mVersion = 0; |     	 mVersion = 0; | ||||||
|          mIsValid = false; |          mIsValid = false; | ||||||
|         parseVersionString(version); |          mCountDots = version.length() - version.replace(".", "").length(); | ||||||
|         if (versionString != null && versionString.length() > 0) { |          Log.d("OwnCloudVersion", "VERSION "+ version + " Asign dots = " + String.valueOf(mCountDots)); | ||||||
|         	mVersionString = versionString; |          parseVersion(version); | ||||||
| 
 | 
 | ||||||
|         } 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; |  | ||||||
| 		if (nums.length > 1) { |  | ||||||
| 			version += Integer.parseInt(nums[1]); |  | ||||||
| 		} | 		} | ||||||
| 		version = version << 8; |     	Log.d("OwnCloudVersion", " ---- version " + String.valueOf(versionValue)); | ||||||
| 		if (nums.length > 2) { |     	 | ||||||
| 			version += Integer.parseInt(nums[2]); | //    	versionValue = 0; | ||||||
| 		} | //		if (nums.length > 0) { | ||||||
| 		return version;  | //			versionValue += Integer.parseInt(nums[0]); | ||||||
|  | //		} | ||||||
|  | //		versionValue = versionValue << 8; | ||||||
|  | //		if (nums.length > 1) { | ||||||
|  | //			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