diff --git a/.gitignore b/.gitignore index 30efabf..a25066c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build/ local.properties /wrapper gradle.properties +changelog.txt diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..79dd3e6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: android + +script: + - ./gradlew clean :Library:test :AndroidLibrary:connectedCheck -Psonatype_username='' -Psonatype_password='' diff --git a/AndroidLibrary/build.gradle b/AndroidLibrary/build.gradle index 67aa152..9ea081b 100644 --- a/AndroidLibrary/build.gradle +++ b/AndroidLibrary/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'maven' apply plugin: 'signing' -apply plugin: 'android-library' +apply plugin: 'com.android.library' buildscript { repositories { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'com.android.tools.build:gradle:1.0.1' } } @@ -16,7 +16,7 @@ repositories { } group = 'ninja.ugly' -version = prevail_version +version = project.prevailVersion ext.artifact = 'android-prevail' signing { @@ -43,10 +43,9 @@ artifacts { } android { - compileSdkVersion 19 - buildToolsVersion '19.1.0' + compileSdkVersion 21 + buildToolsVersion '21.1.2' defaultConfig { - applicationId 'ninja.ugly.prevail' minSdkVersion 15 targetSdkVersion 19 versionCode 1 @@ -54,7 +53,7 @@ android { } buildTypes { release { - runProguard false + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } @@ -62,7 +61,7 @@ android { dependencies { compile 'com.android.support:appcompat-v7:19.+' - compile 'ninja.ugly:prevail:' + prevail_version + compile project(':Library') } uploadArchives { diff --git a/AndroidLibrary/src/main/AndroidManifest.xml b/AndroidLibrary/src/main/AndroidManifest.xml index 88f0f98..b458bf7 100644 --- a/AndroidLibrary/src/main/AndroidManifest.xml +++ b/AndroidLibrary/src/main/AndroidManifest.xml @@ -1,9 +1,7 @@ - + diff --git a/AndroidLibrary/src/main/java/ninja/ugly/prevail/chunk/CursorQueryResult.java b/AndroidLibrary/src/main/java/ninja/ugly/prevail/chunk/CursorQueryResult.java index 3242bd4..75c9ec6 100644 --- a/AndroidLibrary/src/main/java/ninja/ugly/prevail/chunk/CursorQueryResult.java +++ b/AndroidLibrary/src/main/java/ninja/ugly/prevail/chunk/CursorQueryResult.java @@ -5,7 +5,6 @@ import android.database.Cursor; import android.database.DatabaseUtils; import android.os.RemoteException; - import com.google.common.base.Function; import com.google.common.collect.Iterators; diff --git a/AndroidLibrary/src/main/java/ninja/ugly/prevail/loader/ChunkLoader.java b/AndroidLibrary/src/main/java/ninja/ugly/prevail/loader/ChunkLoader.java index 448e9d6..14f3dba 100644 --- a/AndroidLibrary/src/main/java/ninja/ugly/prevail/loader/ChunkLoader.java +++ b/AndroidLibrary/src/main/java/ninja/ugly/prevail/loader/ChunkLoader.java @@ -5,8 +5,9 @@ import android.os.CancellationSignal; import android.os.OperationCanceledException; import android.util.Log; - import com.google.common.base.Optional; +import ninja.ugly.prevail.chunk.QueryResult; +import ninja.ugly.prevail.datamodel.DataModel; import java.io.FileDescriptor; import java.io.IOException; @@ -14,9 +15,6 @@ import java.util.List; import java.util.concurrent.ExecutionException; -import ninja.ugly.prevail.chunk.QueryResult; -import ninja.ugly.prevail.datamodel.DataModel; - public abstract class ChunkLoader extends AsyncTaskLoader> { private static final String TAG = ChunkLoader.class.getSimpleName(); diff --git a/AndroidLibrary/src/main/res/values/strings.xml b/AndroidLibrary/src/main/res/values/strings.xml deleted file mode 100644 index fe5feec..0000000 --- a/AndroidLibrary/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Prevail - diff --git a/Library/build.gradle b/Library/build.gradle index 91e9353..d8dd66d 100644 --- a/Library/build.gradle +++ b/Library/build.gradle @@ -6,7 +6,7 @@ apply plugin: 'maven' apply plugin: 'signing' group = 'ninja.ugly' -version = prevail_version +version = project.prevailVersion ext.artifact = 'prevail' buildscript { @@ -99,16 +99,16 @@ dependencies { } } -sonarRunner { - sonarProperties { - property "sonar.host.url", "http://localhost:9000" - property "sonar.jdbc.url", "jdbc:h2:tcp://localhost:9092/sonar" - property "sonar.jdbc.driverClassName", "org.h2.Driver" - property "sonar.jdbc.username", "sonar" - property "sonar.jdbc.password", "sonar" - property "sonar.branch", "gradle" - property "sonar.dynamicAnalysis", "reuseReports" - property "sonar.junit.reportsPath", "build/test-results/" - property "sonar.pitest.reportsDirectory", "build/reports/pitest/" - } -} \ No newline at end of file +//sonarRunner { +// sonarProperties { +// property "sonar.host.url", "http://localhost:9000" +// property "sonar.jdbc.url", "jdbc:h2:tcp://localhost:9092/sonar" +// property "sonar.jdbc.driverClassName", "org.h2.Driver" +// property "sonar.jdbc.username", "sonar" +// property "sonar.jdbc.password", "sonar" +// property "sonar.branch", "gradle" +// property "sonar.dynamicAnalysis", "reuseReports" +// property "sonar.junit.reportsPath", "build/test-results/" +// property "sonar.pitest.reportsDirectory", "build/reports/pitest/" +// } +//} \ No newline at end of file diff --git a/Library/src/main/java/ninja/ugly/prevail/chunk/Chunk.java b/Library/src/main/java/ninja/ugly/prevail/chunk/Chunk.java index 8f9fd0f..8c78686 100644 --- a/Library/src/main/java/ninja/ugly/prevail/chunk/Chunk.java +++ b/Library/src/main/java/ninja/ugly/prevail/chunk/Chunk.java @@ -11,7 +11,10 @@ import ninja.ugly.prevail.exception.QueryException; import ninja.ugly.prevail.exception.UpdateException; -public interface Chunk { +import java.io.Closeable; +import java.io.IOException; + +public interface Chunk extends Closeable { /** * Insert a value into this Chunk, returning the key at which the get can be retrieved later. * @@ -141,5 +144,10 @@ public void addEventFactory(final UpdateEventFactory updateEventFactory) { public void addEventFactory(final DeleteEventFactory deleteEventFactory) { // Empty implementation } + + @Override + public void close() throws IOException { + // Empty implementation + } } } diff --git a/Library/src/main/java/ninja/ugly/prevail/chunk/QueryResult.java b/Library/src/main/java/ninja/ugly/prevail/chunk/QueryResult.java index eaf3c2b..9e6bbfb 100644 --- a/Library/src/main/java/ninja/ugly/prevail/chunk/QueryResult.java +++ b/Library/src/main/java/ninja/ugly/prevail/chunk/QueryResult.java @@ -21,7 +21,7 @@ public interface QueryResult extends Iterable, Closeable { /** * Returns if this QueryResult is already closed. - * @return + * @return a boolean true if this query result is close, false otherwise */ boolean isClosed(); @@ -47,7 +47,7 @@ public boolean isClosed() { /** * Returns an empty iterator. - * @return + * @return An iterator over this QueryResult, containing no elements. */ @Override public Iterator iterator() { @@ -74,7 +74,7 @@ public SingletonQueryResult(final V t) { *

* This implementation cannot be closed, ie calls to close() do nothing and * calls to isClosed() always return false. - * @return + * @return An iterator over this QueryResult, containing a single element. */ @Override public Iterator iterator() { diff --git a/Library/src/main/java/ninja/ugly/prevail/chunk/VolatileChunk.java b/Library/src/main/java/ninja/ugly/prevail/chunk/VolatileChunk.java index dcf7980..a46bdd5 100644 --- a/Library/src/main/java/ninja/ugly/prevail/chunk/VolatileChunk.java +++ b/Library/src/main/java/ninja/ugly/prevail/chunk/VolatileChunk.java @@ -4,6 +4,7 @@ import com.google.common.base.Functions; import com.google.common.collect.Maps; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -67,9 +68,9 @@ protected K doInsert(final V value, final OnProgressUpdateListener onProgressUpd protected QueryResult doQuery(final K key, final OnProgressUpdateListener onProgressUpdateListener) throws QueryException { final QueryResult result; if (mMap.containsKey(key)) { - result = new QueryResult.SingletonQueryResult(mMap.get(key)); + result = new QueryResult.SingletonQueryResult<>(mMap.get(key)); } else { - result = new QueryResult.EmptyQueryResult(); + result = new QueryResult.EmptyQueryResult<>(); } return result; } @@ -121,6 +122,11 @@ protected Collection getValues() { return Collections.unmodifiableCollection(mMap.values()); } + @Override + public void close() throws IOException { + mMap.clear(); + } + /** * A factory class for producing keys from values. */ diff --git a/Library/src/main/java/ninja/ugly/prevail/datamodel/DataModel.java b/Library/src/main/java/ninja/ugly/prevail/datamodel/DataModel.java index f5749c2..22123a2 100644 --- a/Library/src/main/java/ninja/ugly/prevail/datamodel/DataModel.java +++ b/Library/src/main/java/ninja/ugly/prevail/datamodel/DataModel.java @@ -2,11 +2,14 @@ import com.google.common.base.Function; import com.google.common.base.Optional; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; +import java.io.Closeable; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -34,10 +37,10 @@ * registered on a DataModel they can be accessed asynchronously. Chunks are registered on the DataModel * with an optional 'segment', that is a key that addresses possibly many Chunks. */ -public class DataModel { +public class DataModel implements Closeable { private static final String NO_SEGMENT = "NO SEGMENT"; private static final ExecutorService DEFAULT_CHUNK_EXECUTOR = Executors.newSingleThreadExecutor(); - private Map> mChunks = new HashMap>(); + private final Map> mChunks = new HashMap<>(); /** * Add a Chunk to the default segment of this DataModel. @@ -320,6 +323,37 @@ private List putIfAbsent(final String segment, final List exceptions = Lists.newArrayList(); + for (ChunkAndExecutor chunkAndExecutor : Iterables.concat(mChunks.values())) { + try { + chunkAndExecutor.getChunk().close(); + } catch (IOException e) { + exceptions.add(e); + } + } + + if (!exceptions.isEmpty()) { + throw new CompositeIOException(exceptions); + } + } + } + + public class CompositeIOException extends IOException { + private final List mExceptions; + + public CompositeIOException(List exceptions) { + mExceptions = exceptions; + } + + public List getExceptions() { + return mExceptions; + } + } + private static final class ChunkAndExecutor { private final Chunk mChunk; private final ExecutorService mExecutor; diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DataChangeEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DataChangeEvent.java index 82f1a53..45159cf 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/DataChangeEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/DataChangeEvent.java @@ -1,4 +1,4 @@ package ninja.ugly.prevail.event; -public interface DataChangeEvent { +public interface DataChangeEvent extends Event { } diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEndEvent.java new file mode 100644 index 0000000..b37496c --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEndEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseDataChangeEndEvent extends DataChangeEndEvent, DatabaseEndEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEvent.java new file mode 100644 index 0000000..04444f5 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseDataChangeEvent extends DataChangeEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeExceptionEvent.java new file mode 100644 index 0000000..1a8ff7e --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeExceptionEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseDataChangeExceptionEvent extends DataChangeExceptionEvent, DatabaseExceptionEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeStartEvent.java new file mode 100644 index 0000000..0c7df19 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDataChangeStartEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseDataChangeStartEvent extends DataChangeStartEvent, DatabaseEvent, DatabaseStartEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEndEvent.java new file mode 100644 index 0000000..d8d188c --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseDeleteEndEvent extends DeleteEndEvent implements DatabaseDataChangeEndEvent, DatabaseDeleteEvent { + public DatabaseDeleteEndEvent(K key, int numValuesDeleted) { + super(key, numValuesDeleted); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEvent.java new file mode 100644 index 0000000..094760b --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseDeleteEvent extends DeleteEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteExceptionEvent.java new file mode 100644 index 0000000..e9fb18f --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseDeleteExceptionEvent extends DeleteExceptionEvent implements DatabaseDataChangeExceptionEvent, DatabaseDeleteEvent { + public DatabaseDeleteExceptionEvent(K key, Exception exception) { + super(key, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteStartEvent.java new file mode 100644 index 0000000..9199974 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseDeleteStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseDeleteStartEvent extends DeleteStartEvent implements DatabaseDataChangeStartEvent, DatabaseDeleteEvent { + public DatabaseDeleteStartEvent(K key) { + super(key); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEndEvent.java new file mode 100644 index 0000000..f297428 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEndEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseEndEvent extends EndEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEvent.java new file mode 100644 index 0000000..705739d --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseEvent extends Event { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseExceptionEvent.java new file mode 100644 index 0000000..b8e2c69 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseExceptionEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseExceptionEvent extends ExceptionEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEndEvent.java new file mode 100644 index 0000000..d47403d --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseInsertEndEvent extends InsertEndEvent implements DatabaseDataChangeEndEvent, DatabaseInsertEvent { + public DatabaseInsertEndEvent(K key, V data) { + super(key, data); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEvent.java new file mode 100644 index 0000000..6e6c4bd --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseInsertEvent extends InsertEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertExceptionEvent.java new file mode 100644 index 0000000..2becaf5 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseInsertExceptionEvent extends InsertExceptionEvent implements DatabaseDataChangeExceptionEvent, DatabaseInsertEvent { + public DatabaseInsertExceptionEvent(K value, Exception exception) { + super(value, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertStartEvent.java new file mode 100644 index 0000000..7106077 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseInsertStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseInsertStartEvent extends InsertStartEvent implements DatabaseDataChangeStartEvent, DatabaseInsertEvent { + public DatabaseInsertStartEvent(V value) { + super(value); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEndEvent.java new file mode 100644 index 0000000..96f902d --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEndEvent.java @@ -0,0 +1,9 @@ +package ninja.ugly.prevail.event; + +import ninja.ugly.prevail.chunk.QueryResult; + +public class DatabaseQueryEndEvent extends QueryEndEvent implements DatabaseQueryEvent, DatabaseEndEvent { + public DatabaseQueryEndEvent(K key, QueryResult data) { + super(key, data); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEvent.java new file mode 100644 index 0000000..7a54756 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseQueryEvent extends QueryEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryExceptionEvent.java new file mode 100644 index 0000000..e9803db --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseQueryExceptionEvent extends QueryExceptionEvent implements DatabaseQueryEvent, DatabaseExceptionEvent { + public DatabaseQueryExceptionEvent(K key, Exception exception) { + super(key, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryStartEvent.java new file mode 100644 index 0000000..e181c39 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseQueryStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseQueryStartEvent extends QueryStartEvent implements DatabaseQueryEvent, DatabaseStartEvent { + public DatabaseQueryStartEvent(K key) { + super(key); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseStartEvent.java new file mode 100644 index 0000000..b3a5c4d --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseStartEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseStartEvent extends StartEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEndEvent.java new file mode 100644 index 0000000..5930389 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseUpdateEndEvent extends UpdateEndEvent implements DatabaseDataChangeEndEvent, DatabaseUpdateEvent { + public DatabaseUpdateEndEvent(K key, V value, int numValuesUpdated) { + super(key, value, numValuesUpdated); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEvent.java new file mode 100644 index 0000000..fcf80e5 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface DatabaseUpdateEvent extends UpdateEvent, DatabaseEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateExceptionEvent.java new file mode 100644 index 0000000..7f61653 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseUpdateExceptionEvent extends UpdateExceptionEvent implements DatabaseDataChangeExceptionEvent, DatabaseUpdateEvent { + public DatabaseUpdateExceptionEvent(K key, V value, Exception exception) { + super(key, value, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateStartEvent.java new file mode 100644 index 0000000..e5e0426 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/DatabaseUpdateStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class DatabaseUpdateStartEvent extends UpdateStartEvent implements DatabaseDataChangeStartEvent, DatabaseUpdateEvent { + public DatabaseUpdateStartEvent(K key, V value) { + super(key, value); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/DeleteExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/DeleteExceptionEvent.java index 167ab38..25b8125 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/DeleteExceptionEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/DeleteExceptionEvent.java @@ -2,15 +2,15 @@ public class DeleteExceptionEvent implements DeleteEvent, DataChangeExceptionEvent { private final K mKey; - private final Exception mExeption; + private final Exception mException; - public DeleteExceptionEvent(K key, Exception exeption) { + public DeleteExceptionEvent(K key, Exception exception) { mKey = key; - mExeption = exeption; + mException = exception; } - public Exception getExeption() { - return mExeption; + public Exception getException() { + return mException; } public K getKey() { diff --git a/Library/src/main/java/ninja/ugly/prevail/event/InsertExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/InsertExceptionEvent.java index dba53af..ebdd248 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/InsertExceptionEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/InsertExceptionEvent.java @@ -2,15 +2,15 @@ public class InsertExceptionEvent implements InsertEvent, DataChangeExceptionEvent { private final V mValue; - private final Exception mExeption; + private final Exception mException; - public InsertExceptionEvent(V value, Exception exeption) { + public InsertExceptionEvent(V value, Exception exception) { mValue = value; - mExeption = exeption; + mException = exception; } - public Exception getExeption() { - return mExeption; + public Exception getException() { + return mException; } public V getValue() { diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEndEvent.java new file mode 100644 index 0000000..8fdc07a --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEndEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkDataChangeEndEvent extends DataChangeEndEvent, NetworkEndEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEvent.java new file mode 100644 index 0000000..bd1bab0 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkDataChangeEvent extends DataChangeEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeExceptionEvent.java new file mode 100644 index 0000000..cfb317b --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeExceptionEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkDataChangeExceptionEvent extends DataChangeExceptionEvent, NetworkExceptionEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeStartEvent.java new file mode 100644 index 0000000..c173a9e --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDataChangeStartEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkDataChangeStartEvent extends DataChangeStartEvent, NetworkEvent, NetworkStartEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEndEvent.java new file mode 100644 index 0000000..53b16b2 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkDeleteEndEvent extends DeleteEndEvent implements NetworkDataChangeEndEvent, NetworkDeleteEvent { + public NetworkDeleteEndEvent(K key, int numValuesDeleted) { + super(key, numValuesDeleted); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEvent.java new file mode 100644 index 0000000..2ca6835 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkDeleteEvent extends DeleteEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteExceptionEvent.java new file mode 100644 index 0000000..2c1bf93 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkDeleteExceptionEvent extends DeleteExceptionEvent implements NetworkDataChangeExceptionEvent, NetworkDeleteEvent { + public NetworkDeleteExceptionEvent(K key, Exception exception) { + super(key, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteStartEvent.java new file mode 100644 index 0000000..d2b9e0c --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkDeleteStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkDeleteStartEvent extends DeleteStartEvent implements NetworkDataChangeStartEvent, NetworkDeleteEvent { + public NetworkDeleteStartEvent(K key) { + super(key); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkEndEvent.java new file mode 100644 index 0000000..70a5fe4 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkEndEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkEndEvent extends EndEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkEvent.java new file mode 100644 index 0000000..b162f17 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkEvent extends Event { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkExceptionEvent.java new file mode 100644 index 0000000..56b37d6 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkExceptionEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkExceptionEvent extends ExceptionEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEndEvent.java new file mode 100644 index 0000000..888e187 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkInsertEndEvent extends InsertEndEvent implements NetworkDataChangeEndEvent, NetworkInsertEvent { + public NetworkInsertEndEvent(K key, V data) { + super(key, data); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEvent.java new file mode 100644 index 0000000..ed4e15a --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkInsertEvent extends InsertEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertExceptionEvent.java new file mode 100644 index 0000000..db9812f --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkInsertExceptionEvent extends InsertExceptionEvent implements NetworkDataChangeExceptionEvent, NetworkInsertEvent { + public NetworkInsertExceptionEvent(K value, Exception exception) { + super(value, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertStartEvent.java new file mode 100644 index 0000000..428de19 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkInsertStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkInsertStartEvent extends InsertStartEvent implements NetworkDataChangeStartEvent, NetworkInsertEvent { + public NetworkInsertStartEvent(V value) { + super(value); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEndEvent.java new file mode 100644 index 0000000..cda3303 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEndEvent.java @@ -0,0 +1,9 @@ +package ninja.ugly.prevail.event; + +import ninja.ugly.prevail.chunk.QueryResult; + +public class NetworkQueryEndEvent extends QueryEndEvent implements NetworkQueryEvent, NetworkEndEvent { + public NetworkQueryEndEvent(K key, QueryResult data) { + super(key, data); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEvent.java new file mode 100644 index 0000000..ac6b60e --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkQueryEvent extends QueryEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryExceptionEvent.java new file mode 100644 index 0000000..d6db98d --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkQueryExceptionEvent extends QueryExceptionEvent implements NetworkQueryEvent, NetworkExceptionEvent { + public NetworkQueryExceptionEvent(K key, Exception exception) { + super(key, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryStartEvent.java new file mode 100644 index 0000000..168f22e --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkQueryStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkQueryStartEvent extends QueryStartEvent implements NetworkQueryEvent, NetworkStartEvent { + public NetworkQueryStartEvent(K key) { + super(key); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkStartEvent.java new file mode 100644 index 0000000..6fe923f --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkStartEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkStartEvent extends StartEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEndEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEndEvent.java new file mode 100644 index 0000000..2c0c089 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEndEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkUpdateEndEvent extends UpdateEndEvent implements NetworkDataChangeEndEvent, NetworkUpdateEvent { + public NetworkUpdateEndEvent(K key, V value, int numValuesUpdated) { + super(key, value, numValuesUpdated); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEvent.java new file mode 100644 index 0000000..329b5ca --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateEvent.java @@ -0,0 +1,4 @@ +package ninja.ugly.prevail.event; + +public interface NetworkUpdateEvent extends UpdateEvent, NetworkEvent { +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateExceptionEvent.java new file mode 100644 index 0000000..5fd8653 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateExceptionEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkUpdateExceptionEvent extends UpdateExceptionEvent implements NetworkDataChangeExceptionEvent, NetworkUpdateEvent { + public NetworkUpdateExceptionEvent(K key, V value, Exception exception) { + super(key, value, exception); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateStartEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateStartEvent.java new file mode 100644 index 0000000..0e96819 --- /dev/null +++ b/Library/src/main/java/ninja/ugly/prevail/event/NetworkUpdateStartEvent.java @@ -0,0 +1,7 @@ +package ninja.ugly.prevail.event; + +public class NetworkUpdateStartEvent extends UpdateStartEvent implements NetworkDataChangeStartEvent, NetworkUpdateEvent { + public NetworkUpdateStartEvent(K key, V value) { + super(key, value); + } +} diff --git a/Library/src/main/java/ninja/ugly/prevail/event/QueryEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/QueryEvent.java index fd7a32e..934097a 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/QueryEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/QueryEvent.java @@ -1,5 +1,4 @@ package ninja.ugly.prevail.event; -/** Marker interface for start Events */ public interface QueryEvent extends Event { } diff --git a/Library/src/main/java/ninja/ugly/prevail/event/QueryExceptionEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/QueryExceptionEvent.java index 7d696f4..e2f799b 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/QueryExceptionEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/QueryExceptionEvent.java @@ -2,15 +2,15 @@ public class QueryExceptionEvent implements QueryEvent, ExceptionEvent { private final K mKey; - private final Exception mExeption; + private final Exception mException; - public QueryExceptionEvent(K key, Exception exeption) { + public QueryExceptionEvent(K key, Exception exception) { mKey = key; - mExeption = exeption; + mException = exception; } - public Exception getExeption() { - return mExeption; + public Exception getException() { + return mException; } public K getKey() { diff --git a/Library/src/main/java/ninja/ugly/prevail/event/UpdateEvent.java b/Library/src/main/java/ninja/ugly/prevail/event/UpdateEvent.java index 0b42471..7e9a12c 100644 --- a/Library/src/main/java/ninja/ugly/prevail/event/UpdateEvent.java +++ b/Library/src/main/java/ninja/ugly/prevail/event/UpdateEvent.java @@ -1,5 +1,4 @@ package ninja.ugly.prevail.event; -/** Marker interface for start Events */ public interface UpdateEvent extends DataChangeEvent { } diff --git a/Library/src/test/java/ninja/ugly/prevail/KeyValueChunk.java b/Library/src/test/java/ninja/ugly/prevail/KeyValueChunk.java index 06db873..7cbd5f7 100644 --- a/Library/src/test/java/ninja/ugly/prevail/KeyValueChunk.java +++ b/Library/src/test/java/ninja/ugly/prevail/KeyValueChunk.java @@ -7,6 +7,8 @@ import ninja.ugly.prevail.exception.QueryException; import ninja.ugly.prevail.exception.UpdateException; +import java.io.IOException; + public class KeyValueChunk extends DefaultChunk { private final Inserter mInserter; private final Updater mUpdater; @@ -55,4 +57,9 @@ public interface Updater { public interface Deleter { int delete(K key, OnProgressUpdateListener onProgressUpdateListener) throws DeleteException; } + + @Override + public void close() throws IOException { + // Do nothing. + } } diff --git a/README.md b/README.md index aff25e8..47dc72e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Prevail ======= -[![Build Status](https://brycecicada.ci.cloudbees.com/buildStatus/icon?job=develop)](https://brycecicada.ci.cloudbees.com/job/develop/) +[![Build Status](https://travis-ci.org/BryceCicada/Prevail.svg?branch=develop)](https://travis-ci.org/BryceCicada/Prevail) Visit the main page at http://brycecicada.github.io/Prevail/ diff --git a/build.gradle b/build.gradle index 77aec35..25ee90e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,9 @@ allprojects { } } - prevail_version = '0.2.4' + project.ext { + prevailVersion = '0.2.5-SNAPSHOT' + } // configurations.all { // resolutionStrategy { // // Library version conflicts will cause pain. Let's be strict about this and force manual resolution. @@ -24,3 +26,6 @@ allprojects { } } +task wrapper(type: Wrapper) { + gradleVersion = '2.2.1' +} diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index 1563edd..0000000 --- a/changelog.txt +++ /dev/null @@ -1,4 +0,0 @@ -HashMapChunk renamed VolatileChunk since it's not necessarily backed by a HashMap. -Added progress events -Bumped Android library version down to ICS. -Replaced Iterable with QueryResult in QueryEndEvent. \ No newline at end of file diff --git a/example/ExampleAndroidApp/build.gradle b/example/ExampleAndroidApp/build.gradle index f06acb4..222654c 100644 --- a/example/ExampleAndroidApp/build.gradle +++ b/example/ExampleAndroidApp/build.gradle @@ -7,18 +7,18 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'com.android.tools.build:gradle:1.0.1' } } -apply plugin: 'android' +apply plugin: 'com.android.application' repositories { mavenCentral() } android { - compileSdkVersion 19 - buildToolsVersion '19.1.0' + compileSdkVersion 21 + buildToolsVersion '21.1.2' defaultConfig { minSdkVersion 17 targetSdkVersion 19 @@ -27,7 +27,7 @@ android { } buildTypes { release { - runProguard false + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } @@ -39,6 +39,5 @@ dependencies { compile 'com.android.support:appcompat-v7:19.+' compile 'com.google.guava:guava:16.0.1' compile 'nl.qbusict:cupboard:2.0.1' - compile 'ninja.ugly:android-prevail:0.2.4+@aar' - compile 'ninja.ugly:prevail:0.2.4+' + compile project(':AndroidLibrary') } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseDeleteEventFactory.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseDeleteEventFactory.java index 8651d57..134459c 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseDeleteEventFactory.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseDeleteEventFactory.java @@ -1,8 +1,7 @@ package ninja.ugly.prevail.example.event.database; import com.google.common.base.Optional; - -import ninja.ugly.prevail.event.DeleteEndEvent; +import ninja.ugly.prevail.event.DatabaseDeleteEndEvent; import ninja.ugly.prevail.event.Event; import static ninja.ugly.prevail.event.factory.DeleteEventFactory.EmptyDeleteEventFactory; @@ -10,6 +9,6 @@ public class DatabaseDeleteEventFactory extends EmptyDeleteEventFactory { @Override public Optional endEvent(final K key, final int numValuesDeleted) { - return (Optional) Optional.of(new DeleteEndEvent(key, numValuesDeleted)); + return (Optional) Optional.of(new DatabaseDeleteEndEvent(key, numValuesDeleted)); } } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseInsertEventFactory.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseInsertEventFactory.java index 4b6dd3e..55d7002 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseInsertEventFactory.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseInsertEventFactory.java @@ -1,15 +1,14 @@ package ninja.ugly.prevail.example.event.database; import com.google.common.base.Optional; - +import ninja.ugly.prevail.event.DatabaseInsertEndEvent; import ninja.ugly.prevail.event.Event; -import ninja.ugly.prevail.event.InsertEndEvent; import static ninja.ugly.prevail.event.factory.InsertEventFactory.EmptyInsertEventFactory; public class DatabaseInsertEventFactory extends EmptyInsertEventFactory { @Override public Optional endEvent(final K key, final V value) { - return (Optional) Optional.of(new InsertEndEvent(key, value)); + return (Optional) Optional.of(new DatabaseInsertEndEvent(key, value)); } } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseQueryEventFactory.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseQueryEventFactory.java index d52c768..7335585 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseQueryEventFactory.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/event/database/DatabaseQueryEventFactory.java @@ -1,16 +1,15 @@ package ninja.ugly.prevail.example.event.database; import com.google.common.base.Optional; - import ninja.ugly.prevail.chunk.QueryResult; +import ninja.ugly.prevail.event.DatabaseQueryEndEvent; import ninja.ugly.prevail.event.Event; -import ninja.ugly.prevail.event.QueryEndEvent; import static ninja.ugly.prevail.event.factory.QueryEventFactory.EmptyQueryEventFactory; public class DatabaseQueryEventFactory extends EmptyQueryEventFactory { @Override public Optional endEvent(final K key, final QueryResult value) { - return (Optional) Optional.of(new QueryEndEvent(key, value)); + return (Optional) Optional.of(new DatabaseQueryEndEvent(key, value)); } } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseChunk.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseChunk.java index e4710b0..b8177ac 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseChunk.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseChunk.java @@ -2,10 +2,6 @@ import android.content.Context; import android.database.sqlite.SQLiteDatabase; - -import java.io.IOException; -import java.util.Iterator; - import ninja.ugly.prevail.chunk.DefaultChunk; import ninja.ugly.prevail.chunk.QueryResult; import ninja.ugly.prevail.example.model.domain.TodoItem; @@ -15,6 +11,9 @@ import ninja.ugly.prevail.exception.UpdateException; import nl.qbusict.cupboard.QueryResultIterable; +import java.io.IOException; +import java.util.Iterator; + import static ninja.ugly.prevail.chunk.QueryResult.EmptyQueryResult; import static nl.qbusict.cupboard.CupboardFactory.cupboard; @@ -90,6 +89,11 @@ public DatabaseChunk(Context context) { mDatabase = DatabaseHelper.get(context).getWritableDatabase(); } + @Override + public void close() throws IOException { + mDatabase.close(); + } + private static class CupboardQueryResult implements QueryResult { private QueryResultIterable mItems; private boolean mClosed = false; diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseHelper.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseHelper.java index 7070166..b8b991f 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseHelper.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/model/database/DatabaseHelper.java @@ -3,7 +3,6 @@ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; - import ninja.ugly.prevail.example.model.domain.TodoItem; import static com.google.common.base.Preconditions.checkNotNull; diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/service/DataModelService.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/service/DataModelService.java index 37125c3..eb4d872 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/service/DataModelService.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/service/DataModelService.java @@ -4,9 +4,8 @@ import android.content.Intent; import android.os.Binder; import android.os.IBinder; - +import android.util.Log; import com.google.common.eventbus.EventBus; - import ninja.ugly.prevail.chunk.Chunk; import ninja.ugly.prevail.datamodel.DataModel; import ninja.ugly.prevail.event.dispatcher.EventBusEventDispatcher; @@ -19,8 +18,12 @@ import ninja.ugly.prevail.example.model.domain.TodoItem; import ninja.ugly.prevail.executor.MainThreadExecutor; +import java.io.IOException; + public class DataModelService extends Service { + private static final String TAG = DataModelService.class.getSimpleName(); + final EventDispatcher mEventDispatcher; final DataModel mDataModel; @@ -61,6 +64,16 @@ public void onCreate() { mDataModel.addChunk(chunk); } + @Override + public void onDestroy() { + try { + mDataModel.close(); + } catch (IOException e) { + Log.e(TAG, "IOException closing datamodel", e); + } + super.onDestroy(); + } + public EventDispatcher getEventDispatcher() { return mEventDispatcher; } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/activity/PrevailActivity.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/activity/PrevailActivity.java index 8fd86c8..df2c075 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/activity/PrevailActivity.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/activity/PrevailActivity.java @@ -7,7 +7,6 @@ import android.preference.PreferenceManager; import android.view.Menu; import android.view.MenuItem; - import ninja.ugly.prevail.example.R; import ninja.ugly.prevail.example.ui.fragment.AboutFragment; diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/adapter/TodoListAdapter.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/adapter/TodoListAdapter.java index f58d8b4..21cd024 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/adapter/TodoListAdapter.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/adapter/TodoListAdapter.java @@ -7,12 +7,11 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; - -import java.util.List; - import ninja.ugly.prevail.example.R; import ninja.ugly.prevail.example.model.domain.TodoItem; +import java.util.List; + import static com.google.common.base.Preconditions.checkNotNull; public class TodoListAdapter extends ArrayAdapter { diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/AddEditTextController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/AddEditTextController.java index d167a48..c04496e 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/AddEditTextController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/AddEditTextController.java @@ -6,7 +6,6 @@ import android.widget.CompoundButton; import android.widget.EditText; import android.widget.TextView; - import ninja.ugly.prevail.example.model.domain.TodoItem; import static com.google.common.base.Preconditions.checkNotNull; diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/Controller.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/Controller.java index c5bcf4b..f25fca1 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/Controller.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/Controller.java @@ -1,5 +1,7 @@ package ninja.ugly.prevail.example.ui.controller; +import android.os.Bundle; + import java.util.ArrayList; import java.util.List; @@ -20,6 +22,7 @@ public void onStart() { public void onStop() { // Do nothing } + } public class CompositeController implements Controller { @@ -30,6 +33,10 @@ public void addComponent(Controller component) { mComponents.add(component); } + public void clear() { + mComponents.clear(); + } + @Override public void onStart() { for (Controller component : mComponents) { @@ -44,4 +51,4 @@ public void onStop() { } } } -} +} \ No newline at end of file diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelController.java index 85a0c1d..2dabc05 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelController.java @@ -1,22 +1,23 @@ package ninja.ugly.prevail.example.ui.controller; + import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; - +import android.util.Log; import ninja.ugly.prevail.example.service.DataModelService; -import static com.google.common.base.Preconditions.checkNotNull; - public abstract class DataModelController extends Controller.EmptyController { + private static final String TAG = DataModelController.class.getSimpleName(); + private DataModelService mDataModelService; private final Context mContext; private DataModelServiceConnectionListener mConnectionListener = new DataModelServiceConnectionListener.EmptyDataModelServiceConnectionListener(); public DataModelController(Context context) { - mContext = context; + mContext = context.getApplicationContext(); } public DataModelService getDataModelService() { @@ -25,15 +26,22 @@ public DataModelService getDataModelService() { @Override public void onStart() { + super.onStart(); Intent intent = new Intent(mContext, DataModelService.class); mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); - super.onStart(); } @Override public void onStop() { - super.onStop(); mContext.unbindService(mConnection); + + if (mDataModelService != null) { + // Null check because onServiceDisconnected might have been called + // already from the ServiceConnection callback. + mConnectionListener.onDataModelServiceDisconnected(); + } + + super.onStop(); } private ServiceConnection mConnection = new ServiceConnection() { @@ -50,20 +58,40 @@ public void onServiceDisconnected(ComponentName className) { } }; - public DataModelServiceConnectionListener getConnectionListener() { - return mConnectionListener; - } + public void decorateConnectionListener(final DataModelServiceConnectionListener listener) { + mConnectionListener = new DataModelServiceConnectionListenerDecorator(mConnectionListener) { + @Override + public void onDataModelServiceConnected() { + super.onDataModelServiceConnected(); + listener.onDataModelServiceConnected(); + } - public void setConnectionListener(final DataModelServiceConnectionListener connectionListener) { - mConnectionListener = checkNotNull(connectionListener); + @Override + public void onDataModelServiceDisconnected() { + listener.onDataModelServiceDisconnected(); + super.onDataModelServiceDisconnected(); + } + }; } public interface DataModelServiceConnectionListener { void onDataModelServiceConnected(); + void onDataModelServiceDisconnected(); - public static class EmptyDataModelServiceConnectionListener implements DataModelServiceConnectionListener { + public static class LoggingDataModelServiceConnectionListener implements DataModelServiceConnectionListener { + @Override + public void onDataModelServiceConnected() { + Log.d(TAG, "DataModelService connected"); + } + @Override + public void onDataModelServiceDisconnected() { + Log.d(TAG, "DataModelService disconnected"); + } + } + + public static class EmptyDataModelServiceConnectionListener implements DataModelServiceConnectionListener { @Override public void onDataModelServiceConnected() { // Do nothing @@ -76,7 +104,7 @@ public void onDataModelServiceDisconnected() { } } - public abstract static class DataModelServiceConnectionListenerDecorator implements DataModelServiceConnectionListener { + private abstract static class DataModelServiceConnectionListenerDecorator implements DataModelServiceConnectionListener { private final DataModelServiceConnectionListener mDecoratedListener; @@ -84,18 +112,14 @@ public DataModelServiceConnectionListenerDecorator(final DataModelServiceConnect mDecoratedListener = decoratedListener; } - public DataModelServiceConnectionListener getDecoratedListener() { - return mDecoratedListener; - } - @Override public void onDataModelServiceConnected() { - getDecoratedListener().onDataModelServiceConnected(); + mDecoratedListener.onDataModelServiceConnected(); } @Override public void onDataModelServiceDisconnected() { - getDecoratedListener().onDataModelServiceDisconnected(); + mDecoratedListener.onDataModelServiceDisconnected(); } } -} +} \ No newline at end of file diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelSubscriberController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelSubscriberController.java index 355e08c..0056d64 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelSubscriberController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelSubscriberController.java @@ -1,5 +1,6 @@ package ninja.ugly.prevail.example.ui.controller; + import android.content.Context; public abstract class DataModelSubscriberController extends DataModelController { @@ -7,19 +8,17 @@ public abstract class DataModelSubscriberController extends DataModelController public DataModelSubscriberController(final Context context) { super(context); - setConnectionListener(new DataModelServiceConnectionListenerDecorator(getConnectionListener()) { + decorateConnectionListener(new DataModelServiceConnectionListener() { @Override public void onDataModelServiceConnected() { - getDecoratedListener().onDataModelServiceConnected(); getDataModelService().getEventDispatcher().register(DataModelSubscriberController.this); } @Override public void onDataModelServiceDisconnected() { getDataModelService().getEventDispatcher().unregister(DataModelSubscriberController.this); - getDecoratedListener().onDataModelServiceDisconnected(); } }); } -} +} \ No newline at end of file diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelViewController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelViewController.java index 74c0856..81900a9 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelViewController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/DataModelViewController.java @@ -1,5 +1,6 @@ package ninja.ugly.prevail.example.ui.controller; +import android.content.Context; import android.view.View; public abstract class DataModelViewController extends DataModelController { @@ -10,7 +11,7 @@ public DataModelViewController(final View button) { mView = button; mView.setEnabled(false); - setConnectionListener(new DataModelServiceConnectionListener() { + decorateConnectionListener(new DataModelServiceConnectionListener() { @Override public void onDataModelServiceConnected() { mView.setEnabled(true); diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListController.java index e0f8da4..8baf94c 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListController.java @@ -3,14 +3,13 @@ import android.view.View; import android.widget.CompoundButton; import android.widget.ListView; - -import java.util.ArrayList; -import java.util.List; - import ninja.ugly.prevail.example.R; import ninja.ugly.prevail.example.model.domain.TodoItem; import ninja.ugly.prevail.example.ui.adapter.TodoListAdapter; +import java.util.ArrayList; +import java.util.List; + public abstract class TodoListController extends DataModelSubscriberController implements View.OnClickListener, CompoundButton.OnCheckedChangeListener { private final List mItems = new ArrayList(); diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithLoaderController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithLoaderController.java index b4ddd32..228f049 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithLoaderController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithLoaderController.java @@ -6,18 +6,18 @@ import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; - import com.google.common.collect.Iterables; import com.google.common.eventbus.Subscribe; - -import java.util.Arrays; - import ninja.ugly.prevail.chunk.QueryResult; import ninja.ugly.prevail.datamodel.DataModel; import ninja.ugly.prevail.event.DataChangeEvent; import ninja.ugly.prevail.example.model.domain.TodoItem; import ninja.ugly.prevail.loader.ChunkLoader; +import java.util.Arrays; + +import static ninja.ugly.prevail.example.ui.controller.DataModelController.DataModelServiceConnectionListener.*; + public class TodoListWithLoaderController extends TodoListController implements LoaderManager.LoaderCallbacks> { private final Context mContext; @@ -25,10 +25,9 @@ public class TodoListWithLoaderController extends TodoListController implements public TodoListWithLoaderController(final ListView listView, final LoaderManager loaderManager) { super(listView); mContext = listView.getContext(); - setConnectionListener(new DataModelServiceConnectionListenerDecorator(getConnectionListener()) { + decorateConnectionListener(new EmptyDataModelServiceConnectionListener() { @Override public void onDataModelServiceConnected() { - getDecoratedListener().onDataModelServiceConnected(); loaderManager.initLoader(0, null, TodoListWithLoaderController.this); } }); diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithoutLoaderController.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithoutLoaderController.java index 02f0e82..be05d8c 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithoutLoaderController.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/controller/TodoListWithoutLoaderController.java @@ -2,18 +2,18 @@ import android.widget.ArrayAdapter; import android.widget.ListView; - import com.google.common.collect.Iterables; import com.google.common.eventbus.Subscribe; +import ninja.ugly.prevail.chunk.QueryResult; +import ninja.ugly.prevail.event.DatabaseDeleteEndEvent; +import ninja.ugly.prevail.event.DatabaseInsertEndEvent; +import ninja.ugly.prevail.event.DatabaseQueryEndEvent; +import ninja.ugly.prevail.example.model.domain.TodoItem; import java.io.IOException; import java.util.Arrays; -import ninja.ugly.prevail.chunk.QueryResult; -import ninja.ugly.prevail.event.DeleteEndEvent; -import ninja.ugly.prevail.event.InsertEndEvent; -import ninja.ugly.prevail.event.QueryEndEvent; -import ninja.ugly.prevail.example.model.domain.TodoItem; +import static ninja.ugly.prevail.example.ui.controller.DataModelController.DataModelServiceConnectionListener.*; public class TodoListWithoutLoaderController extends TodoListController { @@ -21,17 +21,16 @@ public class TodoListWithoutLoaderController extends TodoListController { public TodoListWithoutLoaderController(final ListView listView) { super(listView); - setConnectionListener(new DataModelServiceConnectionListenerDecorator(getConnectionListener()) { + decorateConnectionListener(new EmptyDataModelServiceConnectionListener() { @Override public void onDataModelServiceConnected() { - getDecoratedListener().onDataModelServiceConnected(); requery(); } }); } @Subscribe - public void queryEnd(QueryEndEvent event) throws IOException { + public void queryEnd(DatabaseQueryEndEvent event) throws IOException { getItems().clear(); QueryResult results = event.getResult(); getItems().addAll(Arrays.asList(Iterables.toArray(results, TodoItem.class))); @@ -46,12 +45,12 @@ public void queryEnd(QueryEndEvent event) throws IOException { } @Subscribe - public void deleteEnd(DeleteEndEvent event) { + public void deleteEnd(DatabaseDeleteEndEvent event) { requery(); } @Subscribe - public void insertEnd(InsertEndEvent event) { + public void insertEnd(DatabaseInsertEndEvent event) { setInserting(true); requery(); } diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/AboutFragment.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/AboutFragment.java index 1e9e628..37f1314 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/AboutFragment.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/AboutFragment.java @@ -5,7 +5,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import ninja.ugly.prevail.example.R; public class AboutFragment extends PreferenceFragment { diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/SettingsFragment.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/SettingsFragment.java index 0271383..464a7e4 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/SettingsFragment.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/SettingsFragment.java @@ -2,7 +2,6 @@ import android.os.Bundle; import android.preference.PreferenceFragment; - import ninja.ugly.prevail.example.R; public class SettingsFragment extends PreferenceFragment { diff --git a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/TodoListFragment.java b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/TodoListFragment.java index dba3abd..97fd4d4 100644 --- a/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/TodoListFragment.java +++ b/example/ExampleAndroidApp/src/main/java/ninja/ugly/prevail/example/ui/fragment/TodoListFragment.java @@ -9,14 +9,8 @@ import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ListView; - import ninja.ugly.prevail.example.R; -import ninja.ugly.prevail.example.ui.controller.AddButtonController; -import ninja.ugly.prevail.example.ui.controller.AddEditTextController; -import ninja.ugly.prevail.example.ui.controller.Controller; -import ninja.ugly.prevail.example.ui.controller.TodoListController; -import ninja.ugly.prevail.example.ui.controller.TodoListWithLoaderController; -import ninja.ugly.prevail.example.ui.controller.TodoListWithoutLoaderController; +import ninja.ugly.prevail.example.ui.controller.*; public class TodoListFragment extends Fragment { @@ -52,15 +46,21 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa } @Override - public void onResume() { - super.onResume(); + public void onDestroyView() { + mCompositeController.clear(); + super.onDestroyView(); + } + + @Override + public void onStart() { + super.onStart(); mCompositeController.onStart(); } @Override - public void onPause() { + public void onStop() { mCompositeController.onStop(); - super.onPause(); + super.onStop(); } } diff --git a/example/ExampleJavaApp/build.gradle b/example/ExampleJavaApp/build.gradle index 1c4aeee..ac2257f 100644 --- a/example/ExampleJavaApp/build.gradle +++ b/example/ExampleJavaApp/build.gradle @@ -12,6 +12,6 @@ repositories { } dependencies { - compile 'ninja.ugly:prevail:0.2.4+' - testCompile group: 'junit', name: 'junit', version: '4.11' + compile project (':Library') + testCompile 'junit:junit:4.11' } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c6f23a2..59ff50b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip