Skip to content

Commit ad83cba

Browse files
authored
Merge pull request #1128 from Raizlabs/develop
4.0.0-beta4
2 parents 279fe41 + 40420a2 commit ad83cba

File tree

128 files changed

+1110
-1321
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+1110
-1321
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Add the library to the project-level build.gradle, using the apt plugin to enabl
4141

4242
```groovy
4343
44-
def dbflow_version = "4.0.0-beta3"
44+
def dbflow_version = "4.0.0-beta4"
4545
// or dbflow_version = "develop-SNAPSHOT" for grabbing latest dependency in your project on the develop branch
4646
// or 10-digit short-hash of a specific commit. (Useful for bugs fixed in develop, but not in a release yet)
4747

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ buildscript {
55
dependencies {
66
classpath 'com.android.tools.build:gradle:2.2.3'
77
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
8+
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.2'
89
}
910
}
1011

dbflow-core/src/main/java/com/raizlabs/android/dbflow/annotation/Database.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@
3030
*/
3131
String name() default "";
3232

33+
/**
34+
* @return Specify the extension of the file name : {fileName}.{extension}. Default is ".db"
35+
*/
36+
String databaseExtension() default "";
37+
3338
/**
3439
* @return If true, SQLite will throw exceptions when {@link ForeignKey} constraints are not respected.
3540
* Default is false and will not throw exceptions.

dbflow-core/src/main/java/com/raizlabs/android/dbflow/annotation/TypeConverter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@
1010
* Description: Marks a class as being a TypeConverter. A type converter will turn a non-model, non-SQLiteTyped class into
1111
* a valid database type.
1212
*/
13-
@Retention(RetentionPolicy.SOURCE)
13+
@Retention(RetentionPolicy.CLASS)
1414
@Target(ElementType.TYPE)
1515
public @interface TypeConverter {
16+
17+
/**
18+
* @return Specify a set of subclasses by which the {@link TypeConverter} registers for. For
19+
* each one, this will create a new instance of the converter.
20+
*/
21+
Class<?>[] allowedSubtypes() default {};
1622
}

dbflow-core/src/main/java/com/raizlabs/android/dbflow/annotation/provider/ContentUri.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ class ContentType {
3939
}
4040

4141
/**
42-
* @return the path of this ContentUri. ex: notes/#, notes/1, etc. Must be unique within a {@link com.raizlabs.android.dbflow.annotation.provider.TableEndpoint}
42+
* @return the path of this ContentUri. ex: notes/#, notes/1, etc. Must be unique within a {@link TableEndpoint}
4343
*/
4444
String path();
4545

4646
/**
47-
* @return The type of content that this uri is associated with. Ex: {@link com.raizlabs.android.dbflow.annotation.provider.ContentUri.ContentType#VND_SINGLE}
47+
* @return The type of content that this uri is associated with. Ex: {@link ContentType#VND_SINGLE}
4848
*/
4949
String type();
5050

dbflow-core/src/main/java/com/raizlabs/android/dbflow/converter/CalendarConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.raizlabs.android.dbflow.converter;
22

33
import java.util.Calendar;
4+
import java.util.GregorianCalendar;
45

56
/**
67
* Author: andrewgrosner
78
* Description: Defines how we store and retrieve a {@link java.util.Calendar}
89
*/
10+
@com.raizlabs.android.dbflow.annotation.TypeConverter(allowedSubtypes = {GregorianCalendar.class})
911
public class CalendarConverter extends TypeConverter<Long, Calendar> {
1012

1113
@Override

dbflow-core/src/main/java/com/raizlabs/android/dbflow/converter/SqlDateConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.raizlabs.android.dbflow.converter;
22

33
import java.sql.Date;
4+
import java.sql.Time;
5+
import java.sql.Timestamp;
46

57
/**
68
* Author: andrewgrosner
79
* Description: Defines how we store and retrieve a {@link java.sql.Date}
810
*/
11+
@com.raizlabs.android.dbflow.annotation.TypeConverter(allowedSubtypes = {Time.class, Timestamp.class})
912
public class SqlDateConverter extends TypeConverter<Long, Date> {
1013

1114
@Override

dbflow-kotlinextensions/src/androidTest/java/com/raizlabs/android/dbflow/kotlinextensions/ApplicationTest.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

dbflow-kotlinextensions/src/main/java/com/raizlabs/android/dbflow/kotlinextensions/DatabaseExtensions.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ inline fun <reified T : Any> Collection<T>.processInTransaction(crossinline proc
5656
inline fun <reified T : Any> Collection<T>.processInTransactionAsync(crossinline processFunction: (T, DatabaseWrapper) -> Unit) {
5757
val wrapper = database<T>()
5858
wrapper.beginTransactionAsync(
59-
ProcessModelTransaction.Builder(ProcessModelTransaction.ProcessModel<T> {
60-
processFunction(it, wrapper.writableDatabase)
59+
ProcessModelTransaction.Builder(ProcessModelTransaction.ProcessModel<T> { it, wrapper ->
60+
processFunction(it, wrapper)
6161
}).addAll(this).build()
62-
).build().execute();
62+
).execute()
6363
}
6464

6565
/**
@@ -71,10 +71,10 @@ inline fun <reified T : Any> Collection<T>.processInTransactionAsync(crossinline
7171
error: Transaction.Error? = null) {
7272
val wrapper = database<T>()
7373
wrapper.beginTransactionAsync(
74-
ProcessModelTransaction.Builder(ProcessModelTransaction.ProcessModel<T> {
75-
processFunction(it, wrapper.writableDatabase)
76-
}).addAll(this).build()
77-
).success(success).error(error).build().execute();
74+
ProcessModelTransaction.Builder(
75+
ProcessModelTransaction.ProcessModel<T> { it, wrapper -> processFunction(it, wrapper) })
76+
.addAll(this).build())
77+
.success(success).error(error).execute()
7878
}
7979

8080
/**
@@ -87,10 +87,10 @@ inline fun <reified T : Any> Collection<T>.processInTransactionAsync(crossinline
8787
error: Transaction.Error? = null) {
8888
val wrapper = database<T>()
8989
wrapper.beginTransactionAsync(
90-
ProcessModelTransaction.Builder(ProcessModelTransaction.ProcessModel<T> {
91-
processFunction(it, wrapper.writableDatabase)
90+
ProcessModelTransaction.Builder(ProcessModelTransaction.ProcessModel<T> { it, wrapper ->
91+
processFunction(it, wrapper)
9292
}).addAll(this).processListener(processListener).build()
93-
).success(success).error(error).build().execute();
93+
).success(success).error(error).execute()
9494
}
9595

9696
/**

dbflow-kotlinextensions/src/main/java/com/raizlabs/android/dbflow/kotlinextensions/PropertyMethodExtensions.kt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,27 @@ import com.raizlabs.android.dbflow.structure.Model
1010
* Description: Provides property methods in via infix functions.
1111
*/
1212

13-
infix fun <T : Any> Property<T>.eq(value: T) = this.eq(value)
13+
infix fun <T : Any> Property<T>.eq(value: T): Condition = this.eq(value)
1414

15-
infix fun <T : Any> Property<T>.`is`(value: T) = this.`is`(value)
15+
infix fun <T : Any> Property<T>.`is`(value: T): Condition = this.`is`(value)
1616

17-
infix fun <T : Any> Property<T>.isNot(value: T) = this.isNot(value)
17+
infix fun <T : Any> Property<T>.isNot(value: T): Condition = this.isNot(value)
1818

19-
infix fun <T : Any> Property<T>.notEq(value: T) = this.notEq(value)
19+
infix fun <T : Any> Property<T>.notEq(value: T): Condition = this.notEq(value)
2020

21-
infix fun <T : Any> Property<T>.like(value: String) = this.like(value)
21+
infix fun <T : Any> Property<T>.like(value: String): Condition = this.like(value)
2222

23-
infix fun <T : Any> Property<T>.glob(value: String) = this.glob(value)
23+
infix fun <T : Any> Property<T>.glob(value: String): Condition = this.glob(value)
2424

25-
infix fun <T : Any> Property<T>.greaterThan(value: T) = this.greaterThan(value)
25+
infix fun <T : Any> Property<T>.greaterThan(value: T): Condition = this.greaterThan(value)
2626

27-
infix fun <T : Any> Property<T>.greaterThanOrEq(value: T) = this.greaterThanOrEq(value)
27+
infix fun <T : Any> Property<T>.greaterThanOrEq(value: T): Condition = this.greaterThanOrEq(value)
2828

29-
infix fun <T : Any> Property<T>.lessThan(value: T) = this.lessThan(value)
29+
infix fun <T : Any> Property<T>.lessThan(value: T): Condition = this.lessThan(value)
3030

31-
infix fun <T : Any> Property<T>.lessThanOrEq(value: T) = this.lessThanOrEq(value)
31+
infix fun <T : Any> Property<T>.lessThanOrEq(value: T): Condition = this.lessThanOrEq(value)
3232

33-
infix fun <T : Any> Property<T>.between(value: T) = this.between(value)
33+
infix fun <T : Any> Property<T>.between(value: T): Condition.Between = this.between(value)
3434

3535
infix fun <T : Any> Property<T>.`in`(values: Array<T>): Condition.In {
3636
return when (values.size) {
@@ -46,37 +46,37 @@ infix fun <T : Any> Property<T>.notIn(values: Array<T>): Condition.In {
4646
}
4747
}
4848

49-
infix fun <T : Any> Property<T>.`in`(values: Collection<T>) = this.`in`(values)
49+
infix fun <T : Any> Property<T>.`in`(values: Collection<T>): Condition.In = this.`in`(values)
5050

51-
infix fun <T : Any> Property<T>.notIn(values: Collection<T>) = this.notIn(values)
51+
infix fun <T : Any> Property<T>.notIn(values: Collection<T>): Condition.In = this.notIn(values)
5252

53-
infix fun <T : Any> Property<T>.concatenate(value: T) = this.concatenate(value)
53+
infix fun <T : Any> Property<T>.concatenate(value: T): Condition = this.concatenate(value)
5454

55-
infix fun IConditional.eq(value: IConditional) = this.eq(value)
55+
infix fun IConditional.eq(value: IConditional): Condition = this.eq(value)
5656

57-
infix fun IConditional.`is`(conditional: IConditional) = this.`is`(conditional)
57+
infix fun IConditional.`is`(conditional: IConditional): Condition = this.`is`(conditional)
5858

59-
infix fun IConditional.isNot(conditional: IConditional) = this.isNot(conditional)
59+
infix fun IConditional.isNot(conditional: IConditional): Condition = this.isNot(conditional)
6060

61-
infix fun IConditional.notEq(conditional: IConditional) = this.notEq(conditional)
61+
infix fun IConditional.notEq(conditional: IConditional): Condition = this.notEq(conditional)
6262

63-
infix fun IConditional.like(conditional: IConditional) = this.like(conditional)
63+
infix fun IConditional.like(conditional: IConditional): Condition = this.like(conditional)
6464

65-
infix fun IConditional.glob(conditional: IConditional) = this.glob(conditional)
65+
infix fun IConditional.glob(conditional: IConditional): Condition = this.glob(conditional)
6666

67-
infix fun IConditional.like(value: String) = this.like(value)
67+
infix fun IConditional.like(value: String): Condition = this.like(value)
6868

69-
infix fun IConditional.glob(value: String) = this.glob(value)
69+
infix fun IConditional.glob(value: String): Condition = this.glob(value)
7070

71-
infix fun IConditional.greaterThan(conditional: IConditional) = this.greaterThan(conditional)
71+
infix fun IConditional.greaterThan(conditional: IConditional): Condition = this.greaterThan(conditional)
7272

73-
infix fun IConditional.greaterThanOrEq(conditional: IConditional) = this.greaterThanOrEq(conditional)
73+
infix fun IConditional.greaterThanOrEq(conditional: IConditional): Condition = this.greaterThanOrEq(conditional)
7474

75-
infix fun IConditional.lessThan(conditional: IConditional) = this.lessThan(conditional)
75+
infix fun IConditional.lessThan(conditional: IConditional): Condition = this.lessThan(conditional)
7676

77-
infix fun IConditional.lessThanOrEq(conditional: IConditional) = this.lessThanOrEq(conditional)
77+
infix fun IConditional.lessThanOrEq(conditional: IConditional): Condition = this.lessThanOrEq(conditional)
7878

79-
infix fun IConditional.between(conditional: IConditional) = this.between(conditional)
79+
infix fun IConditional.between(conditional: IConditional): Condition.Between = this.between(conditional)
8080

8181
infix fun IConditional.`in`(values: Array<IConditional>): Condition.In {
8282
return when (values.size) {
@@ -92,27 +92,27 @@ infix fun IConditional.notIn(values: Array<IConditional>): Condition.In {
9292
}
9393
}
9494

95-
infix fun IConditional.`is`(baseModelQueriable: BaseModelQueriable<Model>) = this.`is`(baseModelQueriable)
95+
infix fun IConditional.`is`(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.`is`(baseModelQueriable)
9696

97-
infix fun IConditional.eq(baseModelQueriable: BaseModelQueriable<Model>) = this.eq(baseModelQueriable)
97+
infix fun IConditional.eq(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.eq(baseModelQueriable)
9898

99-
infix fun IConditional.isNot(baseModelQueriable: BaseModelQueriable<Model>) = this.isNot(baseModelQueriable)
99+
infix fun IConditional.isNot(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.isNot(baseModelQueriable)
100100

101-
infix fun IConditional.notEq(baseModelQueriable: BaseModelQueriable<Model>) = this.notEq(baseModelQueriable)
101+
infix fun IConditional.notEq(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.notEq(baseModelQueriable)
102102

103-
infix fun IConditional.like(baseModelQueriable: BaseModelQueriable<Model>) = this.like(baseModelQueriable)
103+
infix fun IConditional.like(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.like(baseModelQueriable)
104104

105-
infix fun IConditional.glob(baseModelQueriable: BaseModelQueriable<Model>) = this.glob(baseModelQueriable)
105+
infix fun IConditional.glob(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.glob(baseModelQueriable)
106106

107-
infix fun IConditional.greaterThan(baseModelQueriable: BaseModelQueriable<Model>) = this.greaterThan(baseModelQueriable)
107+
infix fun IConditional.greaterThan(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.greaterThan(baseModelQueriable)
108108

109-
infix fun IConditional.greaterThanOrEq(baseModelQueriable: BaseModelQueriable<Model>) = this.greaterThanOrEq(baseModelQueriable)
109+
infix fun IConditional.greaterThanOrEq(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.greaterThanOrEq(baseModelQueriable)
110110

111-
infix fun IConditional.lessThan(baseModelQueriable: BaseModelQueriable<Model>) = this.lessThan(baseModelQueriable)
111+
infix fun IConditional.lessThan(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.lessThan(baseModelQueriable)
112112

113-
infix fun IConditional.lessThanOrEq(baseModelQueriable: BaseModelQueriable<Model>) = this.lessThanOrEq(baseModelQueriable)
113+
infix fun IConditional.lessThanOrEq(baseModelQueriable: BaseModelQueriable<Model>): Condition = this.lessThanOrEq(baseModelQueriable)
114114

115-
infix fun IConditional.between(baseModelQueriable: BaseModelQueriable<Model>) = this.between(baseModelQueriable)
115+
infix fun IConditional.between(baseModelQueriable: BaseModelQueriable<Model>): Condition.Between = this.between(baseModelQueriable)
116116

117117
infix fun IConditional.`in`(values: Array<BaseModelQueriable<Model>>): Condition.In {
118118
return when (values.size) {
@@ -128,5 +128,5 @@ infix fun IConditional.notIn(values: Array<BaseModelQueriable<Model>>): Conditio
128128
}
129129
}
130130

131-
infix fun IConditional.concatenate(conditional: IConditional) = this.concatenate(conditional)
131+
infix fun IConditional.concatenate(conditional: IConditional): Condition = this.concatenate(conditional)
132132

0 commit comments

Comments
 (0)