├── .gitignore
├── app
    ├── .gitignore
    ├── build.gradle
    ├── proguard-rules.pro
    └── src
    │   ├── androidTest
    │       └── java
    │       │   └── com
    │       │       └── esantiago
    │       │           └── pagination
    │       │               └── ApplicationTest.java
    │   ├── main
    │       ├── AndroidManifest.xml
    │       ├── java
    │       │   └── com
    │       │   │   └── esantiago
    │       │   │       └── pagination
    │       │   │           ├── MainActivity.java
    │       │   │           ├── adapter
    │       │   │               └── AdapterItem.java
    │       │   │           └── entity
    │       │   │               └── Item.java
    │       └── res
    │       │   ├── layout
    │       │       ├── activity_main.xml
    │       │       ├── item_progress.xml
    │       │       └── item_text.xml
    │       │   ├── mipmap-hdpi
    │       │       └── ic_launcher.png
    │       │   ├── mipmap-mdpi
    │       │       └── ic_launcher.png
    │       │   ├── mipmap-xhdpi
    │       │       └── ic_launcher.png
    │       │   ├── mipmap-xxhdpi
    │       │       └── ic_launcher.png
    │       │   ├── mipmap-xxxhdpi
    │       │       └── ic_launcher.png
    │       │   ├── values-w820dp
    │       │       └── dimens.xml
    │       │   └── values
    │       │       ├── colors.xml
    │       │       ├── dimens.xml
    │       │       ├── strings.xml
    │       │       └── styles.xml
    │   └── test
    │       └── java
    │           └── com
    │               └── esantiago
    │                   └── pagination
    │                       └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
    └── wrapper
    │   ├── gradle-wrapper.jar
    │   └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea
6 | .DS_Store
7 | /build
8 | /captures
9 | 
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | 
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
 1 | apply plugin: 'com.android.application'
 2 | 
 3 | android {
 4 |     compileSdkVersion 26
 5 |     buildToolsVersion "26.0.2"
 6 | 
 7 |     defaultConfig {
 8 |         applicationId "com.esantiago.pagination"
 9 |         minSdkVersion 17
10 |         targetSdkVersion 26
11 |         versionCode 1
12 |         versionName "1.0"
13 |     }
14 |     buildTypes {
15 |         release {
16 |             minifyEnabled false
17 |             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 |         }
19 |     }
20 | }
21 | 
22 | dependencies {
23 |     compile fileTree(dir: 'libs', include: ['*.jar'])
24 |     testCompile 'junit:junit:4.12'
25 |     compile 'com.android.support:appcompat-v7:26.1.0'
26 |     compile 'com.android.support:recyclerview-v7:26.1.0'
27 | }
28 | 
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
 1 | # Add project specific ProGuard rules here.
 2 | # By default, the flags in this file are appended to flags specified
 3 | # in /home/edwin/Android/Sdk/tools/proguard/proguard-android.txt
 4 | # You can edit the include path and order by changing the proguardFiles
 5 | # directive in build.gradle.
 6 | #
 7 | # For more details, see
 8 | #   http://developer.android.com/guide/developing/tools/proguard.html
 9 | 
10 | # Add any project specific keep options here:
11 | 
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | #   public *;
17 | #}
18 | 
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/esantiago/pagination/ApplicationTest.java:
--------------------------------------------------------------------------------
 1 | package com.esantiago.pagination;
 2 | 
 3 | import android.app.Application;
 4 | import android.test.ApplicationTestCase;
 5 | 
 6 | /**
 7 |  * Testing Fundamentals
 8 |  */
 9 | public class ApplicationTest extends ApplicationTestCase {
10 |     public ApplicationTest() {
11 |         super(Application.class);
12 |     }
13 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 4 | 
 5 |     
11 |         
12 |             
13 |                 
14 | 
15 |                 
16 |             
17 |         
18 |     
19 | 
20 | 
--------------------------------------------------------------------------------
/app/src/main/java/com/esantiago/pagination/MainActivity.java:
--------------------------------------------------------------------------------
  1 | package com.esantiago.pagination;
  2 | 
  3 | import android.os.AsyncTask;
  4 | import android.os.Handler;
  5 | import android.support.v4.widget.SwipeRefreshLayout;
  6 | import android.support.v7.app.AppCompatActivity;
  7 | import android.os.Bundle;
  8 | import android.support.v7.widget.LinearLayoutManager;
  9 | import android.support.v7.widget.RecyclerView;
 10 | import android.support.v7.widget.Toolbar;
 11 | import android.util.Log;
 12 | import android.widget.TextView;
 13 | 
 14 | import com.esantiago.pagination.adapter.AdapterItem;
 15 | import com.esantiago.pagination.entity.Item;
 16 | 
 17 | import java.util.ArrayList;
 18 | import java.util.List;
 19 | 
 20 | public class MainActivity extends AppCompatActivity implements AdapterItem.OnLoadMoreListener
 21 |         , SwipeRefreshLayout.OnRefreshListener {
 22 | 
 23 | 
 24 |     private AdapterItem mAdapter;
 25 |     private ArrayList-  itemList;
 26 |     private SwipeRefreshLayout swipeRefresh;
 27 | 
 28 |     @Override
 29 |     protected void onCreate(Bundle savedInstanceState) {
 30 |         super.onCreate(savedInstanceState);
 31 |         setContentView(R.layout.activity_main);
 32 | 
 33 |         itemList = new ArrayList<>();
 34 |         swipeRefresh = findViewById(R.id.swipeRefresh);
 35 |         RecyclerView mRecyclerView = findViewById(R.id.rvList);
 36 |         LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
 37 |         mRecyclerView.setLayoutManager(mLayoutManager);
 38 |         mAdapter = new AdapterItem(this);
 39 |         mRecyclerView.setAdapter(mAdapter);
 40 |         swipeRefresh.setOnRefreshListener(this);
 41 |         mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
 42 |             @Override
 43 |             public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
 44 |                 super.onScrolled(recyclerView, dx, dy);
 45 |                 LinearLayoutManager llManager = (LinearLayoutManager) recyclerView.getLayoutManager();
 46 |                 if (dy > 0 && llManager.findLastCompletelyVisibleItemPosition() == (mAdapter.getItemCount() - 2)) {
 47 |                     mAdapter.showLoading();
 48 |                 }
 49 |             }
 50 |         });
 51 | 
 52 | 
 53 |     }
 54 | 
 55 |     @Override
 56 |     protected void onStart() {
 57 |         super.onStart();
 58 |         Log.d("MainActivity_", "onStart");
 59 |         loadData();
 60 |     }
 61 | 
 62 |     @Override
 63 |     public void onRefresh() {
 64 |         Log.d("MainActivity_", "onRefresh");
 65 |         new Handler().postDelayed(new Runnable() {
 66 |             @Override
 67 |             public void run() {
 68 |                 swipeRefresh.setRefreshing(false);
 69 |                 loadData();
 70 | 
 71 |             }
 72 |         }, 2000);
 73 |     }
 74 | 
 75 |     @Override
 76 |     public void onLoadMore() {
 77 |         Log.d("MainActivity_", "onLoadMore");
 78 |         new AsyncTask>() {
 79 |             @Override
 80 |             protected List-  doInBackground(Void... voids) {
 81 |                 /**
 82 |                  *    Delete everything what is below // and place your code logic
 83 |                  */
 84 |                 ///////////////////////////////////////////
 85 |                 int start = mAdapter.getItemCount() - 1;
 86 |                 int end = start + 15;
 87 |                 List-  list = new ArrayList<>();
 88 |                 if (end < 200) {
 89 |                     for (int i = start + 1; i <= end; i++) {
 90 |                         list.add(new Item("Item " + i));
 91 |                     }
 92 |                 }
 93 |                 try {
 94 |                     Thread.sleep(1500);
 95 |                 } catch (InterruptedException e) {
 96 |                     e.printStackTrace();
 97 |                 }
 98 |                 /////////////////////////////////////////////////
 99 |                 return list;
100 | 
101 |             }
102 | 
103 |             @Override
104 |             protected void onPostExecute(List-  items) {
105 |                 super.onPostExecute(items);
106 |                 mAdapter.dismissLoading();
107 |                 mAdapter.addItemMore(items);
108 |                 mAdapter.setMore(true);
109 |             }
110 |         }.execute();
111 | 
112 |     }
113 | 
114 |     private void loadData() {
115 |         itemList.clear();
116 |         for (int i = 1; i <= 20; i++) {
117 |             itemList.add(new Item("Item " + i));
118 |         }
119 |         mAdapter.addAll(itemList);
120 |     }
121 | 
122 | }
123 | 
--------------------------------------------------------------------------------
/app/src/main/java/com/esantiago/pagination/adapter/AdapterItem.java:
--------------------------------------------------------------------------------
  1 | package com.esantiago.pagination.adapter;
  2 | 
  3 | import android.os.Handler;
  4 | import android.support.v7.widget.RecyclerView;
  5 | import android.view.LayoutInflater;
  6 | import android.view.View;
  7 | import android.view.ViewGroup;
  8 | import android.widget.ProgressBar;
  9 | import android.widget.TextView;
 10 | 
 11 | import com.esantiago.pagination.R;
 12 | import com.esantiago.pagination.entity.Item;
 13 | 
 14 | import java.util.ArrayList;
 15 | import java.util.List;
 16 | 
 17 | public class AdapterItem extends RecyclerView.Adapter  {
 18 |     private final int VIEW_ITEM = 1;
 19 |     private final int VIEW_PROG = 0;
 20 | 
 21 |     private ArrayList-  itemList;
 22 | 
 23 |     private OnLoadMoreListener onLoadMoreListener;
 24 | 
 25 |     private boolean isMoreLoading = true;
 26 | 
 27 |     public interface OnLoadMoreListener{
 28 |         void onLoadMore();
 29 |     }
 30 | 
 31 |     public AdapterItem(OnLoadMoreListener onLoadMoreListener) {
 32 |         this.onLoadMoreListener=onLoadMoreListener;
 33 |         itemList =new ArrayList<>();
 34 |     }
 35 | 
 36 |     @Override
 37 |     public int getItemViewType(int position) {
 38 |         return itemList.get(position) != null ? VIEW_ITEM : VIEW_PROG;
 39 |     }
 40 | 
 41 |     @Override
 42 |     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
 43 |         if (viewType == VIEW_ITEM) {
 44 |             return new StudentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text, parent, false));
 45 |         } else {
 46 |             return new ProgressViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_progress, parent, false));
 47 |         }
 48 |     }
 49 | 
 50 |     public void showLoading() {
 51 |         if (isMoreLoading && itemList != null && onLoadMoreListener != null) {
 52 |             isMoreLoading = false;
 53 |             new Handler().post(new Runnable() {
 54 |                 @Override
 55 |                 public void run() {
 56 |                     itemList.add(null);
 57 |                     notifyItemInserted(itemList.size() - 1);
 58 |                     onLoadMoreListener.onLoadMore();
 59 |                 }
 60 |             });
 61 |         }
 62 |     }
 63 | 
 64 |     public void setMore(boolean isMore) {
 65 |         this.isMoreLoading = isMore;
 66 |     }
 67 | 
 68 |     public void dismissLoading() {
 69 |         if (itemList != null && itemList.size() > 0) {
 70 |             itemList.remove(itemList.size() - 1);
 71 |             notifyItemRemoved(itemList.size());
 72 |         }
 73 |     }
 74 | 
 75 |     public void addAll(List-  lst){
 76 |         itemList.clear();
 77 |         itemList.addAll(lst);
 78 |         notifyDataSetChanged();
 79 |     }
 80 | 
 81 |     public void addItemMore(List-  lst){
 82 |         int sizeInit = itemList.size();
 83 |         itemList.addAll(lst);
 84 |         notifyItemRangeChanged(sizeInit, itemList.size());
 85 |     }
 86 | 
 87 | 
 88 |     @Override
 89 |     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
 90 |         if (holder instanceof StudentViewHolder) {
 91 |             Item singleItem = (Item) itemList.get(position);
 92 |             ((StudentViewHolder) holder).tvItem.setText(singleItem.getItem());
 93 |         }
 94 |     }
 95 | 
 96 | 
 97 |     @Override
 98 |     public int getItemCount() {
 99 |         return itemList.size();
100 |     }
101 | 
102 |     static class StudentViewHolder extends RecyclerView.ViewHolder {
103 |         public TextView tvItem;
104 | 
105 |         public StudentViewHolder(View v) {
106 |             super(v);
107 |             tvItem = (TextView) v.findViewById(R.id.tvItem);
108 |         }
109 |     }
110 | 
111 |     static class ProgressViewHolder extends RecyclerView.ViewHolder {
112 |         public ProgressBar pBar;
113 |         public ProgressViewHolder(View v) {
114 |             super(v);
115 |             pBar = (ProgressBar) v.findViewById(R.id.pBar);
116 |         }
117 |     }
118 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/esantiago/pagination/entity/Item.java:
--------------------------------------------------------------------------------
 1 | package com.esantiago.pagination.entity;
 2 | 
 3 | import android.os.Parcel;
 4 | import android.os.Parcelable;
 5 | 
 6 | /**
 7 |  * Created by edwin on 19/03/16.
 8 |  */
 9 | public class Item  {
10 | 
11 |     private String item;
12 | 
13 |     public String getItem() {
14 |         return item;
15 |     }
16 | 
17 |     public void setItem(String item) {
18 |         this.item = item;
19 |     }
20 | 
21 | 
22 |     public Item(String item) {
23 |         this.item=item;
24 |     }
25 | 
26 | }
27 | 
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 7 |     
11 |         
16 |     
17 | 
18 | 
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_progress.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 6 | 
 7 |     
12 | 
13 | 
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_text.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 5 | 
 6 |     
11 | 
12 | 
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 | 
2 |     
5 |     64dp
6 | 
7 | 
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |     #3F51B5
4 |     #303F9F
5 |     #FF4081
6 | 
7 | 
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 | 
2 |     
3 |     16dp
4 |     16dp
5 | 
6 | 
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 | 
2 |     RecyclerViewPagination
3 | 
4 | 
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |     
 4 |     
10 | 
11 | 
12 | 
--------------------------------------------------------------------------------
/app/src/test/java/com/esantiago/pagination/ExampleUnitTest.java:
--------------------------------------------------------------------------------
 1 | package com.esantiago.pagination;
 2 | 
 3 | import org.junit.Test;
 4 | 
 5 | import static org.junit.Assert.*;
 6 | 
 7 | /**
 8 |  * To work on unit tests, switch the Test Artifact in the Build Variants view.
 9 |  */
10 | public class ExampleUnitTest {
11 |     @Test
12 |     public void addition_isCorrect() throws Exception {
13 |         assertEquals(4, 2 + 2);
14 |     }
15 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
 2 | 
 3 | buildscript {
 4 |     repositories {
 5 |         jcenter()
 6 |     }
 7 |     dependencies {
 8 |         classpath 'com.android.tools.build:gradle:3.0.1'
 9 | 
10 |         // NOTE: Do not place your application dependencies here; they belong
11 |         // in the individual module build.gradle files
12 |     }
13 | }
14 | 
15 | allprojects {
16 |     repositories {
17 |         jcenter()
18 |         maven { url 'https://maven.google.com' }
19 |     }
20 | }
21 | 
22 | task clean(type: Delete) {
23 |     delete rootProject.buildDir
24 | }
25 | 
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
 1 | # Project-wide Gradle settings.
 2 | 
 3 | # IDE (e.g. Android Studio) users:
 4 | # Gradle settings configured through the IDE *will override*
 5 | # any settings specified in this file.
 6 | 
 7 | # For more details on how to configure your build environment visit
 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
 9 | 
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 | 
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esantiago1/LoadMore-RecyclerView/2dd99ba40651a367a086ccbc3b7ea11061b39ff0/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Feb 19 20:53:04 PET 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
7 | 
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
  1 | #!/usr/bin/env bash
  2 | 
  3 | ##############################################################################
  4 | ##
  5 | ##  Gradle start up script for UN*X
  6 | ##
  7 | ##############################################################################
  8 | 
  9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 10 | DEFAULT_JVM_OPTS=""
 11 | 
 12 | APP_NAME="Gradle"
 13 | APP_BASE_NAME=`basename "$0"`
 14 | 
 15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
 16 | MAX_FD="maximum"
 17 | 
 18 | warn ( ) {
 19 |     echo "$*"
 20 | }
 21 | 
 22 | die ( ) {
 23 |     echo
 24 |     echo "$*"
 25 |     echo
 26 |     exit 1
 27 | }
 28 | 
 29 | # OS specific support (must be 'true' or 'false').
 30 | cygwin=false
 31 | msys=false
 32 | darwin=false
 33 | case "`uname`" in
 34 |   CYGWIN* )
 35 |     cygwin=true
 36 |     ;;
 37 |   Darwin* )
 38 |     darwin=true
 39 |     ;;
 40 |   MINGW* )
 41 |     msys=true
 42 |     ;;
 43 | esac
 44 | 
 45 | # Attempt to set APP_HOME
 46 | # Resolve links: $0 may be a link
 47 | PRG="$0"
 48 | # Need this for relative symlinks.
 49 | while [ -h "$PRG" ] ; do
 50 |     ls=`ls -ld "$PRG"`
 51 |     link=`expr "$ls" : '.*-> \(.*\)$'`
 52 |     if expr "$link" : '/.*' > /dev/null; then
 53 |         PRG="$link"
 54 |     else
 55 |         PRG=`dirname "$PRG"`"/$link"
 56 |     fi
 57 | done
 58 | SAVED="`pwd`"
 59 | cd "`dirname \"$PRG\"`/" >/dev/null
 60 | APP_HOME="`pwd -P`"
 61 | cd "$SAVED" >/dev/null
 62 | 
 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 64 | 
 65 | # Determine the Java command to use to start the JVM.
 66 | if [ -n "$JAVA_HOME" ] ; then
 67 |     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 68 |         # IBM's JDK on AIX uses strange locations for the executables
 69 |         JAVACMD="$JAVA_HOME/jre/sh/java"
 70 |     else
 71 |         JAVACMD="$JAVA_HOME/bin/java"
 72 |     fi
 73 |     if [ ! -x "$JAVACMD" ] ; then
 74 |         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 75 | 
 76 | Please set the JAVA_HOME variable in your environment to match the
 77 | location of your Java installation."
 78 |     fi
 79 | else
 80 |     JAVACMD="java"
 81 |     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 82 | 
 83 | Please set the JAVA_HOME variable in your environment to match the
 84 | location of your Java installation."
 85 | fi
 86 | 
 87 | # Increase the maximum file descriptors if we can.
 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
 89 |     MAX_FD_LIMIT=`ulimit -H -n`
 90 |     if [ $? -eq 0 ] ; then
 91 |         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
 92 |             MAX_FD="$MAX_FD_LIMIT"
 93 |         fi
 94 |         ulimit -n $MAX_FD
 95 |         if [ $? -ne 0 ] ; then
 96 |             warn "Could not set maximum file descriptor limit: $MAX_FD"
 97 |         fi
 98 |     else
 99 |         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 |     fi
101 | fi
102 | 
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 |     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 | 
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 |     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 |     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 |     JAVACMD=`cygpath --unix "$JAVACMD"`
113 | 
114 |     # We build the pattern for arguments to be converted via cygpath
115 |     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 |     SEP=""
117 |     for dir in $ROOTDIRSRAW ; do
118 |         ROOTDIRS="$ROOTDIRS$SEP$dir"
119 |         SEP="|"
120 |     done
121 |     OURCYGPATTERN="(^($ROOTDIRS))"
122 |     # Add a user-defined pattern to the cygpath arguments
123 |     if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 |         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 |     fi
126 |     # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 |     i=0
128 |     for arg in "$@" ; do
129 |         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 |         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
131 | 
132 |         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
133 |             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 |         else
135 |             eval `echo args$i`="\"$arg\""
136 |         fi
137 |         i=$((i+1))
138 |     done
139 |     case $i in
140 |         (0) set -- ;;
141 |         (1) set -- "$args0" ;;
142 |         (2) set -- "$args0" "$args1" ;;
143 |         (3) set -- "$args0" "$args1" "$args2" ;;
144 |         (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 |         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 |         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 |         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 |         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 |         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 |     esac
151 | fi
152 | 
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 |     JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 | 
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 | 
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
 1 | @if "%DEBUG%" == "" @echo off
 2 | @rem ##########################################################################
 3 | @rem
 4 | @rem  Gradle startup script for Windows
 5 | @rem
 6 | @rem ##########################################################################
 7 | 
 8 | @rem Set local scope for the variables with windows NT shell
 9 | if "%OS%"=="Windows_NT" setlocal
10 | 
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 | 
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 | 
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 | 
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 | 
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 | 
32 | goto fail
33 | 
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 | 
38 | if exist "%JAVA_EXE%" goto init
39 | 
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 | 
46 | goto fail
47 | 
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 | 
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 | 
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 | 
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 | 
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 | 
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 | 
69 | :execute
70 | @rem Setup the command line
71 | 
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 | 
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 | 
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 | 
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 | 
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 | 
90 | :omega
91 | 
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | 
--------------------------------------------------------------------------------