Moving the Android SDK to https://github.com/apache/usergrid-android
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/fdc10b78 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/fdc10b78 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/fdc10b78 Branch: refs/heads/master Commit: fdc10b7840980e2c67d51dbbfb5fea562a07a49a Parents: ae56841 Author: Michael Russo <[email protected]> Authored: Fri Sep 2 10:29:11 2016 -0700 Committer: Michael Russo <[email protected]> Committed: Fri Sep 2 10:29:11 2016 -0700 ---------------------------------------------------------------------- UsergridSDK.podspec | 18 - sdks/android/LICENSE.txt | 19 - sdks/android/README.md | 590 +------------------ sdks/android/Samples/ActivityFeed/.gitignore | 8 - .../ActivityFeed/activityfeed/.gitignore | 1 - .../ActivityFeed/activityfeed/build.gradle | 27 - .../ActivityFeed/activityfeed/libs/gcm.jar | Bin 13662 -> 0 bytes .../activityfeed/proguard-rules.pro | 17 - .../usergrid/activityfeed/ApplicationTest.java | 13 - .../activityfeed/src/main/AndroidManifest.xml | 53 -- .../usergrid/activityfeed/ActivityEntity.java | 86 --- .../usergrid/activityfeed/GCMIntentService.java | 87 --- .../usergrid/activityfeed/UsergridManager.java | 259 -------- .../activities/CreateAccountActivity.java | 67 --- .../activityfeed/activities/FeedActivity.java | 142 ----- .../activityfeed/activities/FollowActivity.java | 59 -- .../activityfeed/activities/MainActivity.java | 87 --- .../callbacks/GetFeedMessagesCallback.java | 27 - .../callbacks/PostFeedMessageCallback.java | 25 - .../activityfeed/helpers/ActionBarHelpers.java | 53 -- .../helpers/AlertDialogHelpers.java | 61 -- .../activityfeed/helpers/FeedAdapter.java | 153 ----- .../src/main/res/drawable/in_message_bg.9.png | Bin 1160 -> 0 bytes .../src/main/res/drawable/out_message_bg.9.png | Bin 1072 -> 0 bytes .../src/main/res/drawable/usergridguy.png | Bin 6230 -> 0 bytes .../src/main/res/layout/action_bar_layout.xml | 29 - .../main/res/layout/activity_create_account.xml | 101 ---- .../src/main/res/layout/activity_feed.xml | 46 -- .../src/main/res/layout/activity_follow.xml | 44 -- .../src/main/res/layout/activity_main.xml | 85 --- .../src/main/res/layout/message_layout.xml | 43 -- .../main/res/layout/scrollable_alert_view.xml | 35 -- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 0 bytes .../src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 0 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10486 -> 0 bytes .../src/main/res/values-w820dp/dimens.xml | 6 - .../activityfeed/src/main/res/values/colors.xml | 8 - .../activityfeed/src/main/res/values/dimens.xml | 5 - .../src/main/res/values/strings.xml | 3 - .../activityfeed/src/main/res/values/styles.xml | 19 - .../usergrid/activityfeed/ExampleUnitTest.java | 15 - sdks/android/Samples/ActivityFeed/build.gradle | 23 - .../Samples/ActivityFeed/gradle.properties | 18 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - sdks/android/Samples/ActivityFeed/gradlew | 160 ----- sdks/android/Samples/ActivityFeed/gradlew.bat | 90 --- .../Samples/ActivityFeed/settings.gradle | 2 - sdks/android/Samples/Push/.gitignore | 8 - sdks/android/Samples/Push/build.gradle | 22 - sdks/android/Samples/Push/gradle.properties | 18 - .../Push/gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - sdks/android/Samples/Push/gradlew | 160 ----- sdks/android/Samples/Push/gradlew.bat | 90 --- sdks/android/Samples/Push/push/.gitignore | 1 - sdks/android/Samples/Push/push/build.gradle | 27 - sdks/android/Samples/Push/push/libs/gcm.jar | Bin 13662 -> 0 bytes .../Samples/Push/push/proguard-rules.pro | 17 - .../apache/usergrid/push/ApplicationTest.java | 13 - .../Push/push/src/main/AndroidManifest.xml | 51 -- .../apache/usergrid/push/GCMIntentService.java | 85 --- .../org/apache/usergrid/push/MainActivity.java | 162 ----- .../apache/usergrid/push/SettingsActivity.java | 68 --- .../Push/push/src/main/res/drawable/info.png | Bin 44546 -> 0 bytes .../push/src/main/res/drawable/usergridguy.png | Bin 6230 -> 0 bytes .../push/src/main/res/layout/activity_main.xml | 69 --- .../src/main/res/layout/activity_settings.xml | 95 --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 0 bytes .../src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 0 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10486 -> 0 bytes .../push/src/main/res/values-w820dp/dimens.xml | 6 - .../Push/push/src/main/res/values/colors.xml | 6 - .../Push/push/src/main/res/values/dimens.xml | 5 - .../Push/push/src/main/res/values/strings.xml | 3 - .../Push/push/src/main/res/values/styles.xml | 11 - .../apache/usergrid/push/ExampleUnitTest.java | 15 - sdks/android/Samples/Push/settings.gradle | 2 - sdks/android/UsergridAndroidSDK/.gitignore | 8 - sdks/android/UsergridAndroidSDK/build.gradle | 70 --- .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - sdks/android/UsergridAndroidSDK/gradlew | 160 ----- sdks/android/UsergridAndroidSDK/gradlew.bat | 90 --- .../libs/usergrid-java-client-2.1.0.jar | Bin 1991936 -> 0 bytes .../UsergridAndroidSDK/proguard-rules.pro | 17 - .../usergrid/android/ApplicationTest.java | 75 --- .../java/org/apache/usergrid/android/Book.java | 26 - .../src/main/AndroidManifest.xml | 17 - .../apache/usergrid/android/UsergridAsync.java | 474 --------------- .../usergrid/android/UsergridEntityAsync.java | 110 ---- .../usergrid/android/UsergridResponseAsync.java | 38 -- .../usergrid/android/UsergridSharedDevice.java | 175 ------ .../usergrid/android/UsergridUserAsync.java | 125 ---- .../UsergridCheckAvailabilityCallback.java | 21 - .../callbacks/UsergridResponseCallback.java | 24 - .../android/tasks/UsergridAsyncTask.java | 45 -- .../src/main/res/values/strings.xml | 3 - 102 files changed, 2 insertions(+), 5012 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/UsergridSDK.podspec ---------------------------------------------------------------------- diff --git a/UsergridSDK.podspec b/UsergridSDK.podspec deleted file mode 100644 index 136ecd5..0000000 --- a/UsergridSDK.podspec +++ /dev/null @@ -1,18 +0,0 @@ -Pod::Spec.new do |s| - s.name = 'UsergridSDK' - s.version = '2.1.1' - s.summary = 'Usergrid SDK written in Swift' - s.homepage = 'https://github.com/apache/usergrid/tree/master/sdks/swift' - s.license = 'Apache 2.0' - s.author = { 'Robert Walsh' => '[email protected]' } - s.social_media_url = 'https://twitter.com/usergrid' - s.requires_arc = true - - s.ios.deployment_target = '8.0' - s.watchos.deployment_target = '2.1' - s.tvos.deployment_target = '9.1' - s.osx.deployment_target = '10.11' - - s.source = { :git => 'https://github.com/apache/usergrid.git', :branch => 'master' } - s.source_files = 'sdks/swift/Source/*.swift' -end http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/LICENSE.txt ---------------------------------------------------------------------- diff --git a/sdks/android/LICENSE.txt b/sdks/android/LICENSE.txt deleted file mode 100644 index 34193ba..0000000 --- a/sdks/android/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. The ASF licenses this file to You - * under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. For additional information regarding - * copyright in this work, please see the NOTICE file in the top level - * directory of this distribution. - * - */ http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/README.md ---------------------------------------------------------------------- diff --git a/sdks/android/README.md b/sdks/android/README.md index a45b8d7..06b2d13 100644 --- a/sdks/android/README.md +++ b/sdks/android/README.md @@ -1,590 +1,4 @@ # Usergrid Android SDK -Usergrid SDK written for Android. - -The Android SDK is an extension upon the the Usergrid Java SDK with added functionality including asynchronous HTTP handling and push notifications. - -## Initialization - -There are two different ways of initializing the Usergrid Android SDK: - -1. The singleton pattern is both convenient and enables the developer to use a globally available and always-initialized instance of Usergrid. - -```java -Usergrid.initSharedInstance("orgId", "appId"); -``` - -2. The Instance pattern enables the developer to manage instances of the Usergrid client independently and in an isolated fashion. The primary use-case for this is when an application connects to multiple Usergrid targets. - -```java -UsergridClient client = new UsergridClient("orgId","appId"); -``` - -_Note: Examples in this readme assume you are using the `Usergrid` shared instance. If you've implemented the instance pattern instead, simply replace `Usergrid` with your client instance variable._ - -## ASYNCHRONOUS operations - -The examples in this readme utilize the synchronous method calls provided by the Usergrid Java SDK. - -Each RESTful operation has a matching asynchrous method within to use within the SDK for convience of use within Android applications. - -For examples of asynchronous calls, look over the sample Android applications located within the `Samples` folder. - -## RESTful operations - -When making any RESTful call, a `type` parameter (or `path`) is always required. Whether you specify this as an argument or in an object as a parameter is up to you. - -### GET - -- To get entities in a collection: - -```java -UsergridResponse response = Usergrid.GET("collection"); -List<UsergridEntity> entities = response.getEntities(); -``` - -- To get a specific entity in a collection by uuid or name: - -```java -UsergridResponse response = Usergrid.GET("collection","<uuid-or-name>"); -UsergridEntity entities = response.entity(); -``` - -- To get specific entities in a collection by passing a `UsergridQuery` object: - -```java -UsergridQuery query = new UsergridQuery("cats").gt("weight", 2.4) - .contains("color", "bl*") - .not() - .eq("color", "blue") - .or() - .eq("color", "orange"); - -// this will build out the following query: -// select * where weight > 2.4 and color contains 'bl*' and not color = 'blue' or color = 'orange' - -UsergridResponse response = Usergrid.GET(query); -List<UsergridEntity> entities = response.getEntities(); -``` - -### POST and PUT - -POST and PUT requests both require a JSON body payload. You can pass either a Java object or a `UsergridEntity` instance. While the former works in principle, best practise is to use a `UsergridEntity` wherever practical. When an entity has a uuid or name property and already exists on the server, use a PUT request to update it. If it does not, use POST to create it. - -- To create a new entity in a collection (**POST**): - -```java -HashMap<String,String> propertyMap = new HashMap<>(); -propertyMap.put("cuisine","pizza"); -UsergridEntity entity = new UsergridEntity("restaurant","Dino's Deep Dish", propertyMap); -Usergrid.POST(entity); // entity should now have a uuid property and be created - -// you can also POST an array of entities: - -HashMap<String,String> propertyMap = new HashMap<>(); -propertyMap.put("cuisine","pizza"); - -ArrayList<UsergridEntity> entities = new ArrayList<>(); -entities.add(new UsergridEntity("restaurant","Dino's Deep Dish", propertyMap)); -entities.add(new UsergridEntity("restaurant","Pizza da Napoli", propertyMap)); -UsergridResponse response = Usergrid.POST(entities); -List<UsergridEntity> responseEntities = response.getEntities(); // responseEntities should now contain now valid posted entities. -``` - -- To update an entity in a collection (**PUT**): - -```java -HashMap<String,String> propertyMap = new HashMap<>(); -propertyMap.put("cuisine","pizza"); -UsergridEntity entity = new UsergridEntity("restaurant","Dino's Deep Dish", propertyMap); -UsergridResponse response = Usergrid.POST(entity); -if( response.ok() ) { - entity.putProperty("owner","Mia Carrara"); - Usergrid.PUT(entity); // entity now has the property 'owner' -} - -// or update a set of entities by passing a UsergridQuery object - -HashMap<String,String> propertiesToUpdate = new HashMap<>(); -propertiesToUpdate.put("cuisine","pizza"); -UsergridQuery query = new UsergridQuery("restaurants").eq("cuisine","italian"); - -UsergridResponse response = Usergrid.PUT(query, propertiesToUpdate); - - /* the first 10 entities matching this query criteria will be updated: - e.g.: - [ - { - "type": "restaurant", - "restaurant": "Il Tarazzo", - "cuisine": "italian", - "keywords": ["pasta"] - }, - { - "type": "restaurant", - "restaurant": "Cono Sur Pizza & Pasta", - "cuisine": "italian", - "keywords": ["pasta"] - } - ] - */ -``` - -### DELETE - -DELETE requests require either a specific entity or a `UsergridQuery` object to be passed as an argument. - -- To delete a specific entity in a collection by uuid or name: - -```java -UsergridResponse response = Usergrid.DELETE("collection", "<uuid-or-name>"); // if successful, entity will now be deleted -``` - -- To specific entities in a collection to delete by passing a `UsergridQuery` object: - -```java -UsergridQuery query = new UsergridQuery("cats").eq("color","black").or().eq("color","white"); - -// this will build out the following query: -// select * where color = 'black' or color = 'white' - -UsergridResponse response = Usergrid.DELETE(query); // the first 10 entities matching this query criteria will be deleted -``` - -## Entity operations and convenience methods - -`UsergridEntity` has a number of helper/convenience methods to make working with entities more convenient. - -### reload() - -Reloads the entity from the server: - -```java -entity.reload(); // entity is now reloaded from the server -``` - -### save() - -Saves (or creates) the entity on the server: - - -```java -entity.putProperty("aNewProperty","A new value"); -entity.save(); // entity is now updated on the server -``` - -### remove() - -Deletes the entity from the server: - -```java -entity.remove(); // entity is now deleted on the server and the local instance should be destroyed -``` - -## Authentication, current user, and auth-fallback - -### appAuth and authenticateApp() - -`Usergrid` can use the app client ID and secret that were passed upon initialization and automatically retrieve an app-level token for these credentials. - -```java -Usergrid.setAppAuth(new UsergridAppAuth("<client-id>", "<client-secret>")); -Usergrid.authenticateApp(); // Usergrid.appAuth is authenticated automatically when this call is successful -``` - -### currentUser, userAuth, and authenticateUser() - -`Usergrid` has a special `currentUser` property. - -By default, when calling `authenticateUser()`, `.currentUser` will be set to this user if the authentication flow is successful. - -```java -UsergridUserAuth userAuth = new UsergridUserAuth("<username>","<password>"); -Usergrid.authenticateUser(userAuth); // Usergrid.currentUser is set to the authenticated user and the token is stored within that context -``` - -If you want to utilize authenticateUser without setting as the current user, simply pass a `false` boolean value as the second parameter: - -```java -UsergridUserAuth userAuth = new UsergridUserAuth("<username>","<password>"); -Usergrid.authenticateUser(userAuth,false); // user is authenticated but Usergrid.currentUser is not set. -``` - -### authMode - -Auth-mode defines what the client should pass in for the authorization header. - -By default, `Usergrid.authMode` is set to `.User`, when a `Usergrid.currentUser` is present and authenticated, an API call will be performed using the token for the user. - -If `Usergrid.authMode` is set to `.None`, all API calls will be performed unauthenticated. - -If instead `Usergrid.authMode` is set to `.App`, the API call will instead be performed using client credentials, _if_ they're available (i.e. `authenticateApp()` was performed at some point). - -### usingAuth() - -At times it is desireable to have complete, granular control over the authentication context of an API call. - -To facilitate this, the passthrough function `.usingAuth()` allows you to pre-define the auth context of the next API call. - -```java -// assume Usergrid.authMode = UsergridAuthMode.NONE. - -Map<String, String> permissionsMap = new HashMap<>(); -permissionsMap.put("permission","get,post,put,delete:/**"); -UsergridResponse response = Usergrid.usingAuth(Usergrid.getAppAuth()).POST("roles/guest/permissions",permissionsMap); - -// here we've temporarily used the client credentials to modify permissions -// subsequent calls will not use this auth context -``` - -## User operations and convenience methods - -`UsergridUser` has a number of helper/convenience methods to make working with user entities more convenient. If you are _not_ utilizing the `Usergrid` shared instance, you must pass an instance of `UsergridClient` as the first argument to any of these helper methods. - -### create() - -Creating a new user: - -```java -UsergridUser user = new UsergridUser("username","password"); -user.create(); // user has now been created and should have a valid uuid -``` - -### login() - -A simpler means of retrieving a user-level token: - -```java -user.login("username","password"); // user is now logged in -``` - -### logout() - -Logs out the selected user. You can also use this convenience method on `Usergrid.currentUser`. - -```java -user.logout(); // user is now logged out -``` - -### resetPassword() - -Resets the password for the selected user. - -```java -// if it was done correctly, the new password will be changed -user.resetPassword("oldPassword", "newPassword"); -``` - -### UsergridUser.CheckAvailable() - -This is a class (static) method that allows you to check whether a username or email address is available or not. - -```java -boolean available = UsergridUser.checkAvailable("email", null); // 'available' == whether an email already exists for a user - -available = UsergridUser.checkAvailable(null, "username"); // 'available' == whether an username already exists for a user - -available = UsergridUser.checkAvailable("email", "username"); // 'available' == whether an email or username already exist for a user -``` - -## Querying and filtering data - -### UsergridQuery initialization - -The `UsergridQuery` class allows you to build out complex query filters using the Usergrid [query syntax](http://docs.apigee.com/app-services/content/querying-your-data). - -The first parameter of the `UsergridQuery` builder pattern should be the collection (or type) you intend to query. You can either pass this as an argument, or as the first builder object: - -```java -UsergridQuery query = new UsergridQuery("cats"); -// or -UsergridQuery query = new UsergridQuery().collection("cats"); -``` - -You then can layer on additional queries: - -```java -UsergridQuery query = new UsergridQuery("cats").gt("weight",2.4).contains("color","bl*") - .not() - .eq("color","white") - .or() - .eq("color","orange"); -``` - -You can also adjust the number of results returned: - -```java -UsergridQuery query = new UsergridQuery("cats").eq("color","black").limit(100); - -// returns a maximum of 100 entities -``` - -And sort the results: - -```java -UsergridQuery query = new UsergridQuery("cats").eq("color","black").limit(100).asc("name") - -// sorts by 'name', ascending -``` - -And you can do geo-location queries: - -```java -UsergridQuery query = new UsergridQuery("devices").locationWithin(<distance>, <lat>, <long>); -``` - -### Using a query in a request - -Queries can be passed as parameters to GET, PUT, and DELETE requests: - -```java -// Gets entities matching the query. -Usergrid.GET(query); - -// Updates the entities matching the query with the new property. -Usergrid.PUT(query, Collections.singletonMap("aNewProperty","A new value")); - -// Deletes entities of a given type matching the query. -Usergrid.DELETE(query); -``` -### List of query builder objects - -`type("string")` - -> The collection name to query - -`collection("string")` - -> An alias for `type` - -`eq("key","value")` or -`equals("key","value")` or -`filter("key","value")` - -> Equal to (e.g. `where color = 'black'`) - -`contains("key","value")` or -`containsString("key","value")` or -`containsWord("key","value")` - -> Contains a string (e.g.` where color contains 'bl*'`) - -`gt("key","value")` or -`greaterThan("key","value")` - -> Greater than (e.g. `where weight > 2.4`) - -`gte("key","value")` or -`greaterThanOrEqual("key","value")` - -> Greater than or equal to (e.g. `where weight >= 2.4`) - -`lt("key","value")` or `lessThan("key","value")` - -> Less than (e.g. `where weight < 2.4`) - -`lte("key","value")` or `lessThanOrEqual("key","value")` - -> Less than or equal to (e.g. `where weight <= 2.4`) - -`not()` - -> Negates the next block in the builder pattern, e.g.: - -```java -UsergridQuery query = new UsergridQuery("cats").not().eq("color","black"); -// select * from cats where not color = 'black' -``` - -`and()` - -> Joins two queries by requiring both of them. `and` is also implied when joining two queries _without_ an operator. E.g.: - -```java -UsergridQuery query = new UsergridQuery("cats").eq("color","black").eq("fur","longHair"); -// is identical to: -UsergridQuery query = new UsergridQuery("cats").eq("color","black").and().eq("fur","longHair"); -``` - -`or()` - -> Joins two queries by requiring only one of them. `or` is never implied. e.g.: - -```java -UsergridQuery query = new UsergridQuery("cats").eq("color","black").or().eq("color", "white"); -``` - -> When using `or()` and `and()` operators, `and()` joins will take precedence over `or()` joins. You can read more about query operators and precedence [here](http://docs.apigee.com/api-baas/content/supported-query-operators-data-types). - -`locationWithin(distanceInMeters, latitude, longitude)` - -> Returns entities which have a location within the specified radius. Arguments can be `float` or `int`. - -`asc("key")` or `ascending("key")` - -> Sorts the results by the specified property, ascending - -`desc("key")` or `descending("key")` - -> Sorts the results by the specified property, descending - -`sort("key",UsergridQuerySortOrder.ASC)` - -> Sorts the results by the specified property, in the specified `UsergridQuerySortOrder` (`.ASC` or `.DESC`). - -`limit(int)` - -> The maximum number of entities to return - -`cursor("string")` - -> A pagination cursor string - -`fromString("query string")` - -> A special builder property that allows you to input a pre-defined query string. All builder properties will be ignored when this property is defined. For example: - -```java -UsergridQuery query = new UsergridQuery().fromString("select * where color = 'black' order by name asc"); -``` - -## UsergridResponse object - -`UsergridResponse` is the core class that handles both successful and unsuccessful HTTP responses from Usergrid. - -If a request is successful, any entities returned in the response will be automatically parsed into `UsergridEntity` objects and pushed to the `entities` property. - -If a request fails, the `error` property will contain information about the problem encountered. - -### ok - -You can check `UsergridResponse.ok`, a `Bool` value, to see if the response was successful. Any status code `< 400` returns true. - -```java -UsergridResponse response = Usergrid.GET("collection"); -if( response.ok() ) { - // woo! -} -``` - -### entity, entities, user, users, first, last - -Depending on the call you make, any entities returned in the response will be automatically parsed into `UsergridEntity` objects and pushed to the `entities` property. If you're querying the `users` collection, these will also be `UsergridUser` objects, a subclass of `UsergridEntity`. - -- `.first()` returns the first entity in an array of entities; `.entity()` is an alias to `.first()`. If there are no entities, both of these will be undefined. - -- `.last()` returns the last entity in an array of entities; if there is only one entity in the array, this will be the same as `.first()` _and_ `.entity()`, and will be undefined if there are no entities in the response. - -- `.getEntities()` will either be an array of entities in the response, or an empty array. - -- `.user()` is a special alias for `.entity()` for when querying the `users()` collection. Instead of being a `UsergridEntity`, it will be its subclass, `UsergridUser`. - -- `.users()` is the same as `.user()`, though behaves as `.getEntities()` does by returning either an array of UsergridUser objects or an empty array. - -Examples: - -```java -UsergridResponse response = Usergrid.GET("collection"); - // you can access: - // response.getEntities() (the returned entities) - // response.first() (the first entity) - // response.entity() (same as response.first) - // response.last() (the last entity returned) - -UsergridResponse response = Usergrid.GET("collection","<uuid-or-name>"); - // you can access: - // response.entity() (the returned entity) - // response.getEntities() (containing only the returned entity) - // response.first() (same as response.entity) - // response.last() (same as response.entity) - -UsergridResponse response = Usergrid.GET("users"); - // you can access: - // response.users() (the returned users) - // response.getEntities() (same as response.users) - // response.user() (the first user) - // response.entity() (same as response.user) - // response.first() (same as response.user) - // response.last() (the last user) - -UsergridResponse response = Usergrid.GET("users","<uuid-or-name>"); - // you can access; - // response.users() (containing only the one user) - // response.getEntities() (same as response.users) - // response.user() (the returned user) - // response.entity() (same as response.user) - // response.first() (same as response.user) - // response.last() (same as response.user) -``` - -## Connections - -Connections can be managed using `Usergrid.connect()`, `Usergrid.disconnect()`, and `Usergrid.getConnections()`, or entity convenience methods of the same name. - -When retrieving connections via `Usergrid.getConnections()`, you can pass in a optional `UsergridQuery` object in order to filter the connectioned entities returned. - -### Connect - -Create a connection between two entities: - -```java -Usergrid.connect(entity1, "relationship", entity2); // entity1 now has an outbound connection to entity2 -``` - -### Retrieve Connections - -Retrieve outbound connections: - -```java -Usergrid.getConnections(UsergridDirection.OUT, entity1, "relationship"); - // entities is an array of entities that entity1 is connected to via 'relationship' - // in this case, we'll see entity2 in the array -``` - -Retrieve inbound connections: - -```java -Usergrid.getConnections(UsergridDirection.IN, entity2, "relationship"); - // entities is an array of entities that connect to entity2 via 'relationship' - // in this case, we'll see entity1 in the array -``` - -### Disconnect - -Delete a connection between two entities: - -```java -Usergrid.disconnect(entity1, "relationship", entity2); - // entity1's outbound connection to entity2 has been destroyed -``` - -## Custom UsergridEntity Subclasses - -Creating custom subclasses of the base `UsergridEntity` class (just like `UsergridUser` and `UsergridDevice`) is possible. - -- To do so, subclass `UsergridEntity` and implement the required methods: - -```java -public class ActivityEntity extends UsergridEntity { - public static final String ACTIVITY_ENTITY_TYPE = "activity"; - - public ActivityEntity(){ - super(ACTIVITY_ENTITY_TYPE); - } -} -``` -- You will also need to register the custom subclass: - -```java -Usergrid.initSharedInstance("orgId","appId"); -UsergridEntity.mapCustomSubclassToType("activity", ActivityEntity.class); -``` - -By registering your custom subclass, the `UsergridEntity` and `UsergridResponse` classes are able to generate instances of these classes based on the an entities `type`. - -In the above example, entities which have a `type` value of `activity` can now be cast as `ActivityEntity` objects. e.g.: - -```java -UsergridResponse response = Usergrid.GET("activity"); -ActivityEntity activityEntity = (ActivityEntity)response.entity(); -``` +The Android SDK code has been moved into its own repository and can be found +at https://github.com/apache/usergrid-android. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/.gitignore ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/.gitignore b/sdks/android/Samples/ActivityFeed/.gitignore deleted file mode 100644 index c6cbe56..0000000 --- a/sdks/android/Samples/ActivityFeed/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/.gitignore ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/.gitignore b/sdks/android/Samples/ActivityFeed/activityfeed/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/build.gradle ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/build.gradle b/sdks/android/Samples/ActivityFeed/activityfeed/build.gradle deleted file mode 100644 index 91d4c7e..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 23 - buildToolsVersion "22.0.1" - - defaultConfig { - applicationId "org.apache.usergrid.activityfeed" - minSdkVersion 17 - targetSdkVersion 23 - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:23.3.0' - compile project(':UsergridAndroidSDK') -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/libs/gcm.jar ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/libs/gcm.jar b/sdks/android/Samples/ActivityFeed/activityfeed/libs/gcm.jar deleted file mode 100755 index ac109a8..0000000 Binary files a/sdks/android/Samples/ActivityFeed/activityfeed/libs/gcm.jar and /dev/null differ http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/proguard-rules.pro ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/proguard-rules.pro b/sdks/android/Samples/ActivityFeed/activityfeed/proguard-rules.pro deleted file mode 100644 index 73ed137..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Users/ApigeeCorporation/Developer/android_sdk_files/sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/androidTest/java/org/apache/usergrid/activityfeed/ApplicationTest.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/androidTest/java/org/apache/usergrid/activityfeed/ApplicationTest.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/androidTest/java/org/apache/usergrid/activityfeed/ApplicationTest.java deleted file mode 100644 index b376e2f..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/androidTest/java/org/apache/usergrid/activityfeed/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.apache.usergrid.activityfeed; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> - */ -public class ApplicationTest extends ApplicationTestCase<Application> { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/AndroidManifest.xml ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/AndroidManifest.xml b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/AndroidManifest.xml deleted file mode 100644 index ec275c8..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/AndroidManifest.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="org.apache.usergrid.activityfeed"> - - <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> - <uses-permission android:name="android.permission.GET_ACCOUNTS" /> - <uses-permission android:name="android.permission.WAKE_LOCK" /> - - <permission - android:name="org.apache.usergrid.activityfeed.gcm.permission.C2D_MESSAGE" - android:protectionLevel="signature" /> - - <uses-permission android:name="org.apache.usergrid.activityfeed.gcm.permission.C2D_MESSAGE" /> - - <application - android:allowBackup="true" - android:icon="@mipmap/ic_launcher" - android:label="@string/app_name" - android:supportsRtl="true" - android:theme="@style/AppTheme"> - - <receiver - android:name="com.google.android.gcm.GCMBroadcastReceiver" - android:permission="com.google.android.c2dm.permission.SEND" > - <intent-filter> - <action android:name="com.google.android.c2dm.intent.RECEIVE" /> - <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> - - <category android:name="org.apache.usergrid.activityfeed" /> - </intent-filter> - </receiver> - <service android:name=".GCMIntentService" /> - - <activity - android:name=".activities.MainActivity" - android:label=""> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity - android:name=".activities.CreateAccountActivity" - android:label=""> </activity> - <activity - android:name=".activities.FeedActivity" - android:windowSoftInputMode="stateHidden" - android:label=""> </activity> - <activity android:name=".activities.FollowActivity"> </activity> - </application> - -</manifest> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/ActivityEntity.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/ActivityEntity.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/ActivityEntity.java deleted file mode 100644 index 4c19085..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/ActivityEntity.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.JsonNode; - -import org.apache.usergrid.java.client.model.UsergridEntity; -import org.jetbrains.annotations.NotNull; - -import java.util.HashMap; - -@SuppressWarnings("unused") -public class ActivityEntity extends UsergridEntity { - - public static final String ACTIVITY_ENTITY_TYPE = "activity"; - - private String content; - private JsonNode actor; - - @Nullable @JsonIgnore - public String getDisplayName() { - if( actor != null ) { - JsonNode displayName = actor.get("displayName"); - if( displayName != null ) { - return displayName.asText(); - } - } - return null; - } - - @Nullable public String getContent() { return this.content; } - public void setContent(@NonNull String content) { - this.content = content; - } - - @Nullable public JsonNode getActor() { return this.actor; } - public void setActor(@NonNull JsonNode actor) { - this.actor = actor; - } - - public ActivityEntity() { - super(ACTIVITY_ENTITY_TYPE); - } - - public ActivityEntity(@JsonProperty("type") @NotNull String type) { - super(type); - } - - public ActivityEntity(@NonNull final String displayName, @NonNull final String email, @Nullable final String picture, @NonNull final String content) { - super(ACTIVITY_ENTITY_TYPE); - HashMap<String,Object> actorMap = new HashMap<>(); - actorMap.put("displayName",displayName); - actorMap.put("email",email); - if( picture != null ) { - HashMap<String,Object> imageMap = new HashMap<>(); - imageMap.put("url",picture); - imageMap.put("height",80); - imageMap.put("width",80); - actorMap.put("image",imageMap); - } - HashMap<String,Object> activityMap = new HashMap<>(); - activityMap.put("verb","post"); - activityMap.put("actor",actorMap); - activityMap.put("content",content); - this.putProperties(activityMap); - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/GCMIntentService.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/GCMIntentService.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/GCMIntentService.java deleted file mode 100644 index 36cb9f1..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/GCMIntentService.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.apache.usergrid.activityfeed; - -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.support.v4.app.NotificationCompat; -import android.util.Log; - -import com.google.android.gcm.GCMBaseIntentService; - -import org.apache.usergrid.activityfeed.activities.MainActivity; - -public class GCMIntentService extends GCMBaseIntentService { - - public GCMIntentService() { - super(UsergridManager.GCM_SENDER_ID); - } - - @Override - protected void onRegistered(Context context, String registrationId) { - Log.i(TAG, "Device registered: " + registrationId); - UsergridManager.registerPush(context,registrationId); - } - - @Override - protected void onUnregistered(Context context, String registrationId) { - Log.i(TAG, "Device unregistered"); - } - - @Override - protected void onMessage(Context context, Intent intent) { - String message = intent.getExtras().getString("data"); - Log.i(TAG, "Received message: " + message); - generateNotification(context, message); - } - - @Override - protected void onDeletedMessages(Context context, int total) { - Log.i(TAG, "Received deleted messages notification"); - String message = "GCM server deleted " + total +" pending messages!"; - generateNotification(context, message); - } - - @Override - public void onError(Context context, String errorId) { - Log.i(TAG, "Received error: " + errorId); - } - - @Override - protected boolean onRecoverableError(Context context, String errorId) { - Log.i(TAG, "Received recoverable error: " + errorId); - return super.onRecoverableError(context, errorId); - } - - /** - * Issues a Notification to inform the user that server has sent a message. - */ - private static void generateNotification(Context context, String message) { - long when = System.currentTimeMillis(); - NotificationManager notificationManager = (NotificationManager) - context.getSystemService(Context.NOTIFICATION_SERVICE); - - Intent notificationIntent = new Intent(context, MainActivity.class); - // set intent so it does not start a new activity - notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); - PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); - - Notification notification = new NotificationCompat.Builder(context) - .setContentText(message) - .setContentTitle(context.getString(R.string.app_name)) - .setWhen(when) - .setSmallIcon(R.drawable.usergridguy) - .setContentIntent(intent) - .build(); - - notification.flags |= Notification.FLAG_AUTO_CANCEL; - - // Play default notification sound - notification.defaults |= Notification.DEFAULT_SOUND; - - // Vibrate if vibrate is enabled - notification.defaults |= Notification.DEFAULT_VIBRATE; - notificationManager.notify(0, notification); - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/UsergridManager.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/UsergridManager.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/UsergridManager.java deleted file mode 100644 index b201631..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/UsergridManager.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed; - -import android.app.Activity; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.support.annotation.NonNull; -import android.util.Log; - -import com.google.android.gcm.GCMRegistrar; - -import org.apache.usergrid.activityfeed.activities.FeedActivity; -import org.apache.usergrid.activityfeed.callbacks.GetFeedMessagesCallback; -import org.apache.usergrid.activityfeed.callbacks.PostFeedMessageCallback; -import org.apache.usergrid.activityfeed.helpers.AlertDialogHelpers; -import org.apache.usergrid.android.UsergridAsync; -import org.apache.usergrid.android.UsergridSharedDevice; -import org.apache.usergrid.android.UsergridUserAsync; -import org.apache.usergrid.android.callbacks.UsergridResponseCallback; -import org.apache.usergrid.java.client.Usergrid; -import org.apache.usergrid.java.client.UsergridEnums; -import org.apache.usergrid.java.client.UsergridRequest; -import org.apache.usergrid.java.client.auth.UsergridUserAuth; -import org.apache.usergrid.java.client.model.UsergridEntity; -import org.apache.usergrid.java.client.model.UsergridUser; -import org.apache.usergrid.java.client.query.UsergridQuery; -import org.apache.usergrid.java.client.response.UsergridResponse; -import org.apache.usergrid.java.client.response.UsergridResponseError; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; - -public final class UsergridManager { - - private static final String ORG_ID = "rwalsh"; - private static final String APP_ID = "sandbox"; - private static final String BASE_URL = "https://api.usergrid.com"; - private static final String ANDROID_NOTIFIER_ID = "androidPushNotifier"; - - public static String GCM_SENDER_ID = "186455511595"; - public static String GCM_REGISTRATION_ID = ""; - - private UsergridManager() {} - - public static void initializeSharedInstance(@NonNull final Context context) { - Usergrid.initSharedInstance(ORG_ID,APP_ID,BASE_URL); - Usergrid.setAuthMode(UsergridEnums.UsergridAuthMode.USER); - UsergridEntity.mapCustomSubclassToType(ActivityEntity.ACTIVITY_ENTITY_TYPE,ActivityEntity.class); - UsergridSharedDevice.saveSharedDevice(context, new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { } - }); - registerPush(context); - } - - public static void registerPush(Context context) { - final String regId = GCMRegistrar.getRegistrationId(context); - if ("".equals(regId)) { - GCMRegistrar.register(context, GCM_SENDER_ID); - } else { - if (GCMRegistrar.isRegisteredOnServer(context)) { - Log.i("", "Already registered with GCM"); - } else { - registerPush(context, regId); - } - } - } - - public static void registerPush(@NonNull final Context context, @NonNull final String registrationId) { - GCM_REGISTRATION_ID = registrationId; - UsergridAsync.applyPushToken(context, registrationId, ANDROID_NOTIFIER_ID, new UsergridResponseCallback() { - @Override - public void onResponse(@NonNull UsergridResponse response) { - if( !response.ok() && response.getResponseError() != null ) { - System.out.print("Error Description :" + response.getResponseError().toString()); - } - } - }); - } - - public static void loginUser(@NonNull final Activity activity, @NonNull final String username, @NonNull final String password) { - UsergridAsync.authenticateUser(new UsergridUserAuth(username,password), new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull final UsergridResponse response) { - final UsergridUser currentUser = Usergrid.getCurrentUser(); - if( response.ok() && currentUser != null ) { - UsergridAsync.connect("users", "me", "devices", UsergridSharedDevice.getSharedDeviceUUID(activity), new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - AlertDialogHelpers.showScrollableAlert(activity,"Authenticate User Successful","User Description: \n\n " + currentUser.toPrettyString(), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - activity.startActivity(new Intent(activity,FeedActivity.class)); - } - }); - } - }); - } else { - AlertDialogHelpers.showAlert(activity,"Error Authenticating User","Invalid username or password."); - } - } - }); - } - - public static void logoutCurrentUser(@NonNull final Activity activity) { - UsergridAsync.disconnect("users", "me", "devices", UsergridSharedDevice.getSharedDevice(activity).getUuid(), new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - UsergridAsync.logoutCurrentUser(new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - System.out.print(response.toString()); - } - }); - } - }); - } - - public static void createUserAccount(@NonNull final Activity activity, @NonNull final String name, @NonNull final String username, @NonNull final String email, @NonNull final String password) { - final UsergridUser user = new UsergridUser(name,username,email,password); - UsergridUserAsync.create(user, new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - final UsergridUser responseUser = response.user(); - if( response.ok() && responseUser != null ) { - AlertDialogHelpers.showScrollableAlert(activity, "Creating Account Successful", "User Description: \n\n " + responseUser.toPrettyString(), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - activity.finish(); - } - }); - } else { - String errorMessage = "Unknown Error"; - UsergridResponseError responseError = response.getResponseError(); - if( responseError != null ) { - errorMessage = responseError.getErrorDescription(); - } - AlertDialogHelpers.showAlert(activity,"Error Creating Account",errorMessage); - } - } - }); - } - - @SuppressWarnings("unchecked") - public static void getFeedMessages(@NonNull final GetFeedMessagesCallback callback) { - final UsergridQuery feedMessagesQuery = new UsergridQuery("users/me/feed").desc(UsergridEnums.UsergridEntityProperties.CREATED.toString()); - UsergridAsync.GET(feedMessagesQuery, new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - ArrayList<ActivityEntity> feedMessages = new ArrayList<>(); - if( response.ok() ) { - List feedEntities = response.getEntities(); - if( feedEntities != null ) { - Collections.reverse(feedEntities); - feedMessages.addAll((List<ActivityEntity>)feedEntities); - } - } - callback.onResponse(feedMessages); - } - }); - } - - public static void postFeedMessage(@NonNull final String messageText, @NonNull final PostFeedMessageCallback callback) { - final UsergridUser currentUser = Usergrid.getCurrentUser(); - if( currentUser != null ) { - String usernameOrEmail = currentUser.usernameOrEmail(); - if( usernameOrEmail == null ) { - usernameOrEmail = ""; - } - String email = currentUser.getEmail(); - if( email == null ) { - email = ""; - } - String picture = currentUser.getPicture(); - final ActivityEntity activityEntity = new ActivityEntity(usernameOrEmail,email,picture,messageText); - UsergridAsync.POST("users/me/activities",activityEntity.toMapValue(), new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - final UsergridEntity responseEntity = response.entity(); - if( response.ok() && responseEntity != null && responseEntity instanceof ActivityEntity ) { - callback.onSuccess((ActivityEntity)responseEntity); - UsergridManager.sendPushToFollowers(messageText); - } - } - }); - } - } - - public static void followUser(@NonNull final Activity activity, @NonNull final String username) { - UsergridAsync.connect("users", "me", "following", "users", username, new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - if( response.ok() ) { - activity.finish(); - } else { - String errorMessage = "Unknown Error"; - UsergridResponseError responseError = response.getResponseError(); - if( responseError != null ) { - String errorDescription = responseError.getErrorDescription(); - if( errorDescription != null ) { - errorMessage = errorDescription; - } - } - AlertDialogHelpers.showAlert(activity,"Error Following User",errorMessage); - } - } - }); - } - - public static void sendPushToFollowers(@NonNull final String message) { - HashMap<String,String> notificationMap = new HashMap<>(); - notificationMap.put(ANDROID_NOTIFIER_ID,message); - final HashMap<String,HashMap<String,String>> payloadMap = new HashMap<>(); - payloadMap.put("payloads",notificationMap); - - UsergridAsync.GET("users/me/followers", new UsergridResponseCallback() { - @Override - public void onResponse(@NotNull UsergridResponse response) { - if( response.ok() ) { - String followerUserNames = ""; - final List<UsergridUser> users = response.users(); - if( users != null && !users.isEmpty() ) { - for( UsergridUser user : users ) { - String username = user.getUsername(); - if( username != null && !username.isEmpty() ) { - followerUserNames += username + ";"; - } - } - if( !followerUserNames.isEmpty() ) { - final UsergridRequest notificationRequest = new UsergridRequest(UsergridEnums.UsergridHttpMethod.POST,UsergridRequest.APPLICATION_JSON_MEDIA_TYPE,Usergrid.clientAppUrl(),null,payloadMap,Usergrid.authForRequests(),"users", followerUserNames, "notifications"); - UsergridAsync.sendRequest(notificationRequest, new UsergridResponseCallback() { - @Override - public void onResponse(@NonNull UsergridResponse response) {} - }); - } - } - } - } - }); - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/CreateAccountActivity.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/CreateAccountActivity.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/CreateAccountActivity.java deleted file mode 100644 index 0f72fbb..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/CreateAccountActivity.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.activities; - -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import org.apache.usergrid.activityfeed.R; -import org.apache.usergrid.activityfeed.UsergridManager; -import org.apache.usergrid.activityfeed.helpers.ActionBarHelpers; -import org.apache.usergrid.activityfeed.helpers.AlertDialogHelpers; - -public class CreateAccountActivity extends AppCompatActivity { - - private static final String actionBarTitle = "Create Account"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_create_account); - - ActionBarHelpers.setCustomViewForActionBarWithTitle(this,actionBarTitle); - - final EditText nameText = (EditText) findViewById(R.id.nameText); - final EditText usernameEditText = (EditText) findViewById(R.id.usernameText); - final EditText emailText = (EditText) findViewById(R.id.emailText); - final EditText passwordEditText = (EditText) findViewById(R.id.passwordEditText); - - final TextView createAccountTextView = (TextView) findViewById(R.id.createAccountText); - if( createAccountTextView != null ) { - createAccountTextView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if( nameText != null && usernameEditText != null && emailText != null && passwordEditText != null ) { - String name = nameText.getText().toString(); - String username = usernameEditText.getText().toString(); - String email = emailText.getText().toString(); - String password = passwordEditText.getText().toString(); - if(!name.isEmpty() && !username.isEmpty() && !email.isEmpty() && !password.isEmpty()) { - UsergridManager.createUserAccount(CreateAccountActivity.this,name,username,email,password); - } else { - AlertDialogHelpers.showAlert(CreateAccountActivity.this,"Error Creating Account","All fields must not be empty."); - } - } - - } - }); - } - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FeedActivity.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FeedActivity.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FeedActivity.java deleted file mode 100644 index 4f347f8..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FeedActivity.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.activities; - -import android.content.Intent; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v7.app.AppCompatActivity; -import android.text.TextUtils; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ListView; - -import org.apache.usergrid.activityfeed.ActivityEntity; -import org.apache.usergrid.activityfeed.R; -import org.apache.usergrid.activityfeed.UsergridManager; -import org.apache.usergrid.activityfeed.callbacks.GetFeedMessagesCallback; -import org.apache.usergrid.activityfeed.callbacks.PostFeedMessageCallback; -import org.apache.usergrid.activityfeed.helpers.ActionBarHelpers; -import org.apache.usergrid.activityfeed.helpers.FeedAdapter; -import org.apache.usergrid.java.client.Usergrid; -import org.apache.usergrid.java.client.model.UsergridUser; - -import java.util.ArrayList; -import java.util.List; - -public class FeedActivity extends AppCompatActivity { - - private EditText messageET; - private ListView messagesContainer; - private FeedAdapter adapter; - private ArrayList<ActivityEntity> feedMessages; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_feed); - - final UsergridUser currentUser = Usergrid.getCurrentUser(); - String username = "Unknown"; - if( currentUser != null ) { - String currentUsername = currentUser.getUsername(); - if( currentUsername != null ) { - username = currentUser.getUsername(); - } - } - final Intent followActivityIntent = new Intent(this,FollowActivity.class); - ActionBarHelpers.setCustomViewForActionBarWithTitle(this, username + "'s feed", "Follow", new View.OnClickListener() { - @Override - public void onClick(View v) { - FeedActivity.this.startActivity(followActivityIntent); - } - }); - - initControls(); - } - - private void initControls() { - messagesContainer = (ListView) findViewById(R.id.messagesContainer); - messageET = (EditText) findViewById(R.id.messageEdit); - if(messageET != null) { - messageET.setMaxWidth(messageET.getWidth()); - } - final Button sendBtn = (Button) findViewById(R.id.chatSendButton); - if( sendBtn != null ) { - sendBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String messageText = messageET.getText().toString(); - if (TextUtils.isEmpty(messageText)) { - return; - } - - UsergridManager.postFeedMessage(messageText, new PostFeedMessageCallback() { - @Override - public void onSuccess(@NonNull ActivityEntity activityEntity) { - displayMessage(activityEntity); - } - }); - messageET.setText(""); - } - }); - } - } - - private void displayMessage(ActivityEntity message) { - adapter.add(message); - adapter.notifyDataSetChanged(); - scroll(); - } - - private void scroll() { - messagesContainer.setSelection(messagesContainer.getCount() - 1); - } - - @SuppressWarnings("unchecked") - private void loadMessages(){ - - feedMessages = new ArrayList<>(); - adapter = new FeedAdapter(FeedActivity.this, new ArrayList<ActivityEntity>()); - messagesContainer.setAdapter(adapter); - - UsergridManager.getFeedMessages(new GetFeedMessagesCallback() { - @Override - public void onResponse(@NonNull List<ActivityEntity> feedMessages) { - FeedActivity.this.feedMessages.addAll(feedMessages); - for( ActivityEntity activityEntity : FeedActivity.this.feedMessages ) { - displayMessage(activityEntity); - } - } - }); - } - - @Override - protected void onResume() { - this.loadMessages(); - super.onResume(); - } - - @Override - protected void onDestroy() { - if( Usergrid.getCurrentUser() != null ) { - UsergridManager.logoutCurrentUser(this); - } - super.onDestroy(); - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FollowActivity.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FollowActivity.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FollowActivity.java deleted file mode 100644 index c4aac27..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/FollowActivity.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.activities; - -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; - -import org.apache.usergrid.activityfeed.R; -import org.apache.usergrid.activityfeed.UsergridManager; -import org.apache.usergrid.activityfeed.helpers.ActionBarHelpers; -import org.apache.usergrid.activityfeed.helpers.AlertDialogHelpers; - -public class FollowActivity extends AppCompatActivity { - - private static final String actionBarTitle = "Follow"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_follow); - - ActionBarHelpers.setCustomViewForActionBarWithTitle(this,actionBarTitle); - - final EditText usernameEditText = (EditText) findViewById(R.id.followUsernameText); - final Button addFollowerButton = (Button) findViewById(R.id.addFollowerButton); - if( addFollowerButton != null ) { - addFollowerButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if( usernameEditText != null ) { - final String username = usernameEditText.getText().toString(); - if( !username.isEmpty() ) { - UsergridManager.followUser(FollowActivity.this,username); - } else { - AlertDialogHelpers.showAlert(FollowActivity.this,"Error Following User","Please enter a valid username."); - } - } - } - }); - } - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/MainActivity.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/MainActivity.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/MainActivity.java deleted file mode 100644 index 338f829..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/activities/MainActivity.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.activities; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.TextView; - -import org.apache.usergrid.activityfeed.R; -import org.apache.usergrid.activityfeed.UsergridManager; -import org.apache.usergrid.activityfeed.helpers.AlertDialogHelpers; -import org.apache.usergrid.java.client.Usergrid; - -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - UsergridManager.initializeSharedInstance(this); - - final EditText usernameEditText = (EditText) findViewById(R.id.usernameText); - if( usernameEditText != null ) { - usernameEditText.setSelection(usernameEditText.getText().length()); - } - final EditText passwordEditText = (EditText) findViewById(R.id.passwordEditText); - if( passwordEditText != null ) { - passwordEditText.setSelection(passwordEditText.getText().length()); - } - - final Button signInButton = (Button) findViewById(R.id.signInButton); - if( signInButton != null ) { - signInButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if( usernameEditText != null && passwordEditText != null ) { - final String username = usernameEditText.getText().toString(); - final String password = passwordEditText.getText().toString(); - if( !username.isEmpty() && !password.isEmpty() ) { - UsergridManager.loginUser(MainActivity.this,username,password); - } else { - AlertDialogHelpers.showAlert(MainActivity.this,"Error Authenticating User","Username and password must not be empty."); - } - } - } - }); - } - - final TextView createAccountTextView = (TextView) findViewById(R.id.createAccountTextView); - if( createAccountTextView != null ) { - final Intent createAccountIntent = new Intent(this,CreateAccountActivity.class); - createAccountTextView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MainActivity.this.startActivity(createAccountIntent); - } - }); - } - } - - @Override - protected void onResume() { - if(Usergrid.getCurrentUser() != null) { - this.startActivity(new Intent(this,FeedActivity.class)); - } - super.onResume(); - } -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/GetFeedMessagesCallback.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/GetFeedMessagesCallback.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/GetFeedMessagesCallback.java deleted file mode 100644 index ae7b999..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/GetFeedMessagesCallback.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.callbacks; - -import android.support.annotation.NonNull; - -import org.apache.usergrid.activityfeed.ActivityEntity; - -import java.util.List; - -public interface GetFeedMessagesCallback { - void onResponse(@NonNull final List<ActivityEntity> feedMessages); -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/PostFeedMessageCallback.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/PostFeedMessageCallback.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/PostFeedMessageCallback.java deleted file mode 100644 index 14f5117..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/callbacks/PostFeedMessageCallback.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.callbacks; - -import android.support.annotation.NonNull; - -import org.apache.usergrid.activityfeed.ActivityEntity; - -public interface PostFeedMessageCallback { - void onSuccess(@NonNull final ActivityEntity activityEntity); -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/ActionBarHelpers.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/ActionBarHelpers.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/ActionBarHelpers.java deleted file mode 100644 index 46c2560..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/ActionBarHelpers.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.helpers; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.view.Gravity; -import android.view.View; -import android.widget.TextView; - -import org.apache.usergrid.activityfeed.R; - -public final class ActionBarHelpers { - private ActionBarHelpers() {} - - public static void setCustomViewForActionBarWithTitle(@NonNull final AppCompatActivity activity, @Nullable final String title) { - ActionBarHelpers.setCustomViewForActionBarWithTitle(activity,title,null,null); - } - - public static void setCustomViewForActionBarWithTitle(@NonNull final AppCompatActivity activity, @Nullable final String title, @Nullable final String rightButtonTitle, @Nullable final View.OnClickListener rightButtonOnClick) { - ActionBar actionBar = activity.getSupportActionBar(); - if( actionBar != null ) { - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); - View actionBarView = View.inflate(activity, R.layout.action_bar_layout,null); - TextView actionBarTitleText = (TextView) actionBarView.findViewById(R.id.actionBarTitle); - actionBarTitleText.setText(title); - if( rightButtonTitle != null ) { - TextView rightTextView = (TextView) actionBarView.findViewById(R.id.buttonTitle); - rightTextView.setText(rightButtonTitle); - rightTextView.setOnClickListener(rightButtonOnClick); - } - final ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER); - actionBar.setCustomView(actionBarView,params); - } - } - -} http://git-wip-us.apache.org/repos/asf/usergrid/blob/fdc10b78/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/AlertDialogHelpers.java ---------------------------------------------------------------------- diff --git a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/AlertDialogHelpers.java b/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/AlertDialogHelpers.java deleted file mode 100644 index e871271..0000000 --- a/sdks/android/Samples/ActivityFeed/activityfeed/src/main/java/org/apache/usergrid/activityfeed/helpers/AlertDialogHelpers.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.usergrid.activityfeed.helpers; - -import android.app.Activity; -import android.content.DialogInterface; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.AlertDialog; -import android.view.View; -import android.widget.TextView; - -import org.apache.usergrid.activityfeed.R; - -@SuppressWarnings("unused") -public final class AlertDialogHelpers { - - private AlertDialogHelpers() {} - - public static void showAlert(@NonNull final Activity activity, @Nullable final String title, @Nullable final String message) { - AlertDialogHelpers.showAlert(activity,title,message,null); - } - - public static void showAlert(@NonNull final Activity activity, @Nullable final String title, @Nullable final String message, @Nullable final DialogInterface.OnClickListener onClickListener) { - new AlertDialog.Builder(activity) - .setTitle(title) - .setMessage(message) - .setPositiveButton(android.R.string.ok, onClickListener) - .show(); - } - - public static void showScrollableAlert(@NonNull final Activity activity, @Nullable final String title, @Nullable final String message) { - AlertDialogHelpers.showScrollableAlert(activity, title, message,null); - } - - public static void showScrollableAlert(@NonNull final Activity activity, @Nullable final String title, @Nullable final String message, @Nullable final DialogInterface.OnClickListener onClickListener) { - final View scrollableAlertView = View.inflate(activity, R.layout.scrollable_alert_view, null); - final TextView titleTextView = (TextView) scrollableAlertView.findViewById(R.id.scrollableAlertTitle); - titleTextView.setText(title); - final TextView messageTextView = (TextView) scrollableAlertView.findViewById(R.id.scrollableAlertMessage); - messageTextView.setText(message); - new AlertDialog.Builder(activity) - .setView(scrollableAlertView) - .setPositiveButton(android.R.string.ok, onClickListener) - .show(); - } -}
