Skip to content

Commit c95602d

Browse files
committed
well, a lots of rewrite
custom json reader/writer based on gson/moshi
1 parent a27a1e0 commit c95602d

27 files changed

Lines changed: 1838 additions & 217 deletions

File tree

auto-content-provider/src/androidTest/java/pl/selvin/android/autocontentprovider/test/ContentHelperTest.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.junit.runner.RunWith;
2323

2424
import pl.selvin.android.autocontentprovider.content.ContentHelper;
25+
import pl.selvin.android.autocontentprovider.db.TableInfo;
2526

2627
@RunWith(AndroidJUnit4.class)
2728
public class ContentHelperTest {
@@ -32,53 +33,53 @@ private Uri.Builder baseBuilder() {
3233

3334
@Test
3435
public void getUriTest() {
35-
final ContentHelper ch = TestProvider.CONTENT_HELPER;
36+
final ContentHelper<TableInfo> contentHelper = TestProvider.CONTENT_HELPER;
3637

37-
final Uri statusDirUri = ch.getDirUri(DatabaseTest.Status.TABLE_NAME);
38+
final Uri statusDirUri = contentHelper.getDirUri(DatabaseTest.Status.TABLE_NAME);
3839
assertEquals(baseBuilder().appendPath(DatabaseTest.Status.TABLE_NAME).build(),
3940
statusDirUri);
40-
assertEquals(0, ch.matchUri(statusDirUri) & ContentHelper.uriCodeItemFlag);
41-
assertEquals(0, ch.matchUri(statusDirUri) & ContentHelper.uriCodeItemRowIDFlag);
42-
int statusUriCodeBase = ch.matchUri(statusDirUri) & ContentHelper.uriCode;
41+
assertEquals(0, contentHelper.matchUri(statusDirUri) & ContentHelper.uriCodeItemFlag);
42+
assertEquals(0, contentHelper.matchUri(statusDirUri) & ContentHelper.uriCodeItemRowIDFlag);
43+
int statusUriCodeBase = contentHelper.matchUri(statusDirUri) & ContentHelper.uriCode;
4344

44-
final Uri statusItemROWIDUri = ch.getItemUri(DatabaseTest.Status.TABLE_NAME, 1);
45+
final Uri statusItemROWIDUri = contentHelper.getItemUri(DatabaseTest.Status.TABLE_NAME, 1);
4546
assertEquals(baseBuilder().appendPath(DatabaseTest.Status.TABLE_NAME).appendPath("ROWID").appendPath("1").build(),
4647
statusItemROWIDUri);
47-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusItemROWIDUri) & ContentHelper.uriCodeItemFlag);
48-
assertEquals(ContentHelper.uriCodeItemRowIDFlag, ch.matchUri(statusItemROWIDUri) & ContentHelper.uriCodeItemRowIDFlag);
49-
assertEquals(statusUriCodeBase, ch.matchUri(statusItemROWIDUri) & ContentHelper.uriCode);
48+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusItemROWIDUri) & ContentHelper.uriCodeItemFlag);
49+
assertEquals(ContentHelper.uriCodeItemRowIDFlag, contentHelper.matchUri(statusItemROWIDUri) & ContentHelper.uriCodeItemRowIDFlag);
50+
assertEquals(statusUriCodeBase, contentHelper.matchUri(statusItemROWIDUri) & ContentHelper.uriCode);
5051

5152

52-
final Uri statusItemPKUri = ch.getItemUri(DatabaseTest.Status.TABLE_NAME, "1");
53+
final Uri statusItemPKUri = contentHelper.getItemUri(DatabaseTest.Status.TABLE_NAME, "1");
5354
assertEquals(baseBuilder().appendPath(DatabaseTest.Status.TABLE_NAME).appendPath("1").build(),
5455
statusItemPKUri);
55-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusItemPKUri) & ContentHelper.uriCodeItemFlag);
56-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusItemPKUri) & ContentHelper.uriCodeItemRowIDFlag);
57-
assertEquals(statusUriCodeBase, ch.matchUri(statusItemPKUri) & ContentHelper.uriCode);
56+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusItemPKUri) & ContentHelper.uriCodeItemFlag);
57+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusItemPKUri) & ContentHelper.uriCodeItemRowIDFlag);
58+
assertEquals(statusUriCodeBase, contentHelper.matchUri(statusItemPKUri) & ContentHelper.uriCode);
5859

5960

60-
final Uri statusReadonlyDirUri = ch.getDirUri(DatabaseTest.StatusReadonly.TABLE_NAME);
61+
final Uri statusReadonlyDirUri = contentHelper.getDirUri(DatabaseTest.StatusReadonly.TABLE_NAME);
6162
assertEquals(baseBuilder().appendPath(DatabaseTest.StatusReadonly.TABLE_NAME).build(),
6263
statusReadonlyDirUri);
63-
assertEquals(0, ch.matchUri(statusReadonlyDirUri) & ContentHelper.uriCodeItemFlag);
64-
assertEquals(0, ch.matchUri(statusReadonlyDirUri) & ContentHelper.uriCodeItemRowIDFlag);
65-
int statusReadonlyUriCodeBase = ch.matchUri(statusReadonlyDirUri) & ContentHelper.uriCode;
64+
assertEquals(0, contentHelper.matchUri(statusReadonlyDirUri) & ContentHelper.uriCodeItemFlag);
65+
assertEquals(0, contentHelper.matchUri(statusReadonlyDirUri) & ContentHelper.uriCodeItemRowIDFlag);
66+
int statusReadonlyUriCodeBase = contentHelper.matchUri(statusReadonlyDirUri) & ContentHelper.uriCode;
6667

6768
assertNotEquals(statusUriCodeBase, statusReadonlyUriCodeBase);
6869

69-
final Uri statusReadonlyItemROWIDUri = ch.getItemUri(DatabaseTest.StatusReadonly.TABLE_NAME, 1);
70+
final Uri statusReadonlyItemROWIDUri = contentHelper.getItemUri(DatabaseTest.StatusReadonly.TABLE_NAME, 1);
7071
assertEquals(baseBuilder().appendPath(DatabaseTest.StatusReadonly.TABLE_NAME).appendPath("ROWID").appendPath("1").build(),
7172
statusReadonlyItemROWIDUri);
72-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCodeItemFlag);
73-
assertEquals(ContentHelper.uriCodeItemRowIDFlag, ch.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCodeItemRowIDFlag);
74-
assertEquals(statusReadonlyUriCodeBase, ch.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCode);
73+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCodeItemFlag);
74+
assertEquals(ContentHelper.uriCodeItemRowIDFlag, contentHelper.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCodeItemRowIDFlag);
75+
assertEquals(statusReadonlyUriCodeBase, contentHelper.matchUri(statusReadonlyItemROWIDUri) & ContentHelper.uriCode);
7576

7677

77-
final Uri statusReadonlyItemPKUri = ch.getItemUri(DatabaseTest.StatusReadonly.TABLE_NAME, "1");
78+
final Uri statusReadonlyItemPKUri = contentHelper.getItemUri(DatabaseTest.StatusReadonly.TABLE_NAME, "1");
7879
assertEquals(baseBuilder().appendPath(DatabaseTest.StatusReadonly.TABLE_NAME).appendPath("1").build(),
7980
statusReadonlyItemPKUri);
80-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCodeItemFlag);
81-
assertEquals(ContentHelper.uriCodeItemFlag, ch.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCodeItemRowIDFlag);
82-
assertEquals(statusReadonlyUriCodeBase, ch.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCode);
81+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCodeItemFlag);
82+
assertEquals(ContentHelper.uriCodeItemFlag, contentHelper.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCodeItemRowIDFlag);
83+
assertEquals(statusReadonlyUriCodeBase, contentHelper.matchUri(statusReadonlyItemPKUri) & ContentHelper.uriCode);
8384
}
8485
}

auto-content-provider/src/main/java/pl/selvin/android/autocontentprovider/content/ContentHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public int matchUri(Uri uri) {
147147
return matcher.match(uri);
148148
}
149149

150-
public TableInfo getTableFromType(String type) {
150+
public TTableInfo getTableFromType(String type) {
151151
return databaseInfo.allTablesInfo.get(type);
152152
}
153153

auto-content-provider/src/main/java/pl/selvin/android/autocontentprovider/db/DatabaseInfo.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212
package pl.selvin.android.autocontentprovider.db;
1313

1414
import android.content.UriMatcher;
15+
import android.util.ArrayMap;
1516
import android.util.SparseArray;
1617

17-
import java.util.HashMap;
18-
1918
import pl.selvin.android.autocontentprovider.annotation.Table;
2019
import pl.selvin.android.autocontentprovider.content.ContentHelper;
2120

22-
public class DatabaseInfo<TTableInfo extends TableInfo> {
23-
public final HashMap<String, TTableInfo> allTablesInfo = new HashMap<>();
21+
public class DatabaseInfo<TTableInfo extends TableInfo> {
22+
public final ArrayMap<String, TTableInfo> allTablesInfo = new ArrayMap<>();
2423
public final SparseArray<TTableInfo> allTablesInfoCode = new SparseArray<>();
2524

2625
public DatabaseInfo(Class<?> dbClass, String authority, UriMatcher matcher, TableInfoFactory<TTableInfo> tableInfoFactory) throws Exception {

auto-content-provider/src/main/java/pl/selvin/android/autocontentprovider/db/IndexInfo.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,14 @@ public IndexInfo(String tableName, final Index index) {
3838
}
3939

4040
public String createStatement() {
41-
StringBuilder sb = new StringBuilder("CREATE INDEX ");
42-
if (ifNotExists)
41+
StringBuilder sb = new StringBuilder("CREATE ");
42+
if (isUnique) {
43+
sb.append("UNIQUE ");
44+
}
45+
sb.append("INDEX ");
46+
if (ifNotExists) {
4347
sb.append("IF NOT EXISTS ");
48+
}
4449
sb.append('[');
4550
sb.append(name);
4651
sb.append("] ON [");

auto-content-provider/src/main/java/pl/selvin/android/autocontentprovider/db/TableInfo.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,15 @@
1818
import android.database.sqlite.SQLiteQueryBuilder;
1919
import android.net.Uri;
2020
import android.text.TextUtils;
21+
import android.util.ArrayMap;
2122

2223
import androidx.sqlite.db.SupportSQLiteDatabase;
2324

2425
import java.lang.reflect.Field;
2526
import java.util.ArrayList;
2627
import java.util.Arrays;
2728
import java.util.Collections;
28-
import java.util.HashMap;
2929
import java.util.List;
30-
import java.util.Map;
3130

3231
import pl.selvin.android.autocontentprovider.annotation.Cascade;
3332
import pl.selvin.android.autocontentprovider.annotation.Column;
@@ -38,7 +37,7 @@
3837

3938
public class TableInfo {
4039

41-
public final Map<String, String> map = new HashMap<>();
40+
public final ArrayMap<String, String> map = new ArrayMap<>();
4241
public final String name;
4342
public final List<ColumnInfo> primaryKeys;
4443
public final String dirMime;
@@ -62,7 +61,7 @@ public TableInfo(Table table, Class<?> clazz, final String authority, final Stri
6261
final ArrayList<ColumnInfo> computedColumns = new ArrayList<>();
6362
final Field[] fields = clazz.getDeclaredFields();
6463
final ArrayList<ColumnInfo> primaryKeys = new ArrayList<>();
65-
final HashMap<String, ColumnInfo> namesToColumns = new HashMap<>();
64+
final ArrayMap<String, ColumnInfo> namesToColumns = new ArrayMap<>();
6665
for (final Field field : fields) {
6766
final Column column = field.getAnnotation(Column.class);
6867
if (column != null) {
@@ -172,7 +171,7 @@ public void executeAfterOnCreate(SupportSQLiteDatabase database) {
172171
public Cursor query(SupportSQLiteDatabase database, Uri uri, SQLiteQueryBuilder builder, String[] projection, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit, Logger logger) {
173172
final String query = builder.buildQuery(projection, selection, groupBy, having, sortOrder, limit);
174173
logger.LogQuery(clazz, uri, builder, projection, selection, selectionArgs, groupBy, having, sortOrder, limit);
175-
if(selectionArgs == null)
174+
if (selectionArgs == null)
176175
return database.query(query);
177176
return database.query(query, selectionArgs);
178177
}

demo/src/main/java/pl/selvin/android/listsyncsample/provider/QueryProviders.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
import pl.selvin.android.autocontentprovider.content.ContentHelper;
1010
import pl.selvin.android.autocontentprovider.log.Logger;
1111
import pl.selvin.android.listsyncsample.provider.implementation.AbstractQueryProvider;
12+
import pl.selvin.android.syncframework.content.SyncTableInfo;
1213

1314
public class QueryProviders {
1415
private final UriMatcher uriMatcher;
1516
private final ArrayList<AbstractQueryProvider> providers = new ArrayList<>();
1617

1718
@SafeVarargs
18-
public QueryProviders(ListProvider contentProvider, ContentHelper contentHelper, Logger logger,
19+
public QueryProviders(ListProvider contentProvider, ContentHelper<SyncTableInfo> contentHelper, Logger logger,
1920
Class<? extends AbstractQueryProvider>... providerClasses) {
2021
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
2122
try {

demo/src/main/java/pl/selvin/android/listsyncsample/provider/RequestExecutor.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.accounts.Account;
44
import android.accounts.AccountManager;
5-
import android.accounts.AuthenticatorException;
65
import android.content.Context;
76
import android.os.Bundle;
87

@@ -23,12 +22,14 @@
2322
import pl.selvin.android.listsyncsample.network.HttpClient;
2423
import pl.selvin.android.syncframework.content.BaseContentProvider;
2524

26-
public class RequestExecutor implements pl.selvin.android.syncframework.content.RequestExecutor {
25+
public class RequestExecutor extends RequestBody implements pl.selvin.android.syncframework.content.RequestExecutor {
2726
public final static String ACCOUNT_PARAMETER = "ACCOUNT_PARAMETER";
27+
private final MediaType contentType = MediaType.parse("application/json; charset=utf-8");
28+
private BaseContentProvider.SyncContentProducer syncContentProducer;
2829

2930
@Override
3031
@NonNull
31-
public Result execute(@NonNull Context context, @Nullable final BaseContentProvider.ISyncContentProducer syncContentProducer, @NonNull Bundle parameters) throws IOException, AuthenticatorException {
32+
public Result execute(@NonNull Context context, @Nullable final BaseContentProvider.SyncContentProducer syncContentProducer, @NonNull Bundle parameters) throws IOException {
3233
final Account account = BundleCompat.getParcelable(parameters, RequestExecutor.ACCOUNT_PARAMETER, Account.class);
3334
int requestMethod = parameters.getInt(RequestExecutor.REQUEST_METHOD_PARAMETER);
3435
final String scope = parameters.getString(RequestExecutor.SCOPE_PARAMETER);
@@ -42,19 +43,11 @@ public Result execute(@NonNull Context context, @Nullable final BaseContentProvi
4243
.addHeader("Accept", "application/json");
4344

4445
if (requestMethod == RequestExecutor.POST && syncContentProducer != null) {
45-
requestBuilder.post(new RequestBody() {
46-
@Override
47-
public MediaType contentType() {
48-
return MediaType.parse("application/json; charset=utf-8");
49-
}
50-
51-
@Override
52-
public void writeTo(@NonNull BufferedSink sink) throws IOException {
53-
syncContentProducer.writeTo(sink);
54-
}
55-
});
46+
this.syncContentProducer = syncContentProducer;
47+
requestBuilder.post(this);
5648
}
5749
final Response response = HttpClient.DEFAULT.newCall(requestBuilder.build()).execute();
50+
this.syncContentProducer = null;
5851
final ResponseBody body = response.body();
5952
if (body != null) {
6053
final String error;
@@ -68,4 +61,15 @@ public void writeTo(@NonNull BufferedSink sink) throws IOException {
6861
response.close();
6962
throw new RuntimeException("Response body is null");
7063
}
64+
65+
@Nullable
66+
@Override
67+
public MediaType contentType() {
68+
return contentType;
69+
}
70+
71+
@Override
72+
public void writeTo(@NonNull BufferedSink bufferedSink) throws IOException {
73+
syncContentProducer.writeTo(bufferedSink);
74+
}
7175
}

demo/src/main/java/pl/selvin/android/listsyncsample/provider/implementation/AbstractQueryProvider.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@
66
import android.database.sqlite.SQLiteQueryBuilder;
77
import android.net.Uri;
88
import android.provider.BaseColumns;
9+
import android.util.ArrayMap;
910

1011
import androidx.annotation.NonNull;
1112
import androidx.sqlite.db.SimpleSQLiteQuery;
1213
import androidx.sqlite.db.SupportSQLiteDatabase;
1314
import androidx.sqlite.db.SupportSQLiteQuery;
1415

15-
import java.util.HashMap;
1616
import java.util.Map;
1717

1818
import pl.selvin.android.autocontentprovider.content.ContentHelper;
1919
import pl.selvin.android.autocontentprovider.db.TableInfo;
2020
import pl.selvin.android.autocontentprovider.log.Logger;
2121
import pl.selvin.android.listsyncsample.provider.ListProvider;
22+
import pl.selvin.android.syncframework.content.SyncTableInfo;
2223
import pl.selvin.apt.constructorsconstraints.annotations.ConstructorConstraint;
2324

2425
/**
@@ -27,12 +28,12 @@
2728
@ConstructorConstraint(arguments = {ListProvider.class, ContentHelper.class, Logger.class, UriMatcher.class, int.class})
2829
public abstract class AbstractQueryProvider implements AbstractQueryProviderInterface {
2930
protected final ListProvider contentProvider;
30-
protected final ContentHelper contentHelper;
31+
protected final ContentHelper<SyncTableInfo> contentHelper;
3132
protected final Logger logger;
3233
protected final UriMatcher uriMatcher;
3334
protected final int code;
3435

35-
public AbstractQueryProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper contentHelper, Logger logger,
36+
public AbstractQueryProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper<SyncTableInfo> contentHelper, Logger logger,
3637
@NonNull UriMatcher uriMatcher, int code) {
3738
this.contentProvider = contentProvider;
3839
this.contentHelper = contentHelper;
@@ -87,10 +88,10 @@ protected void registerCursor(Cursor cursor, Uri uri) {
8788
}
8889

8990
public static class ProjectionMapBuilder {
90-
private final HashMap<String, String> projectionMap = new HashMap<>();
91-
private final ContentHelper contentHelper;
91+
private final ArrayMap<String, String> projectionMap = new ArrayMap<>();
92+
private final ContentHelper<SyncTableInfo> contentHelper;
9293

93-
private ProjectionMapBuilder(final ContentHelper contentHelper, final String scope, final String table) {
94+
private ProjectionMapBuilder(final ContentHelper<SyncTableInfo> contentHelper, final String scope, final String table) {
9495
this.contentHelper = contentHelper;
9596
projectionMap.putAll(contentHelper.getTableFromType(String.format("%s.%s", scope, table)).map);
9697
}
@@ -105,7 +106,7 @@ public ProjectionMapBuilder addTable(final String scope, final String table) {
105106
return this;
106107
}
107108

108-
public HashMap<String, String> build() {
109+
public ArrayMap<String, String> build() {
109110
return projectionMap;
110111
}
111112
}

demo/src/main/java/pl/selvin/android/listsyncsample/provider/implementation/TagItemMappingWithNamesProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@
44
import android.database.Cursor;
55
import android.database.sqlite.SQLiteQueryBuilder;
66
import android.net.Uri;
7+
import android.util.ArrayMap;
78

89
import androidx.annotation.NonNull;
910

10-
import java.util.HashMap;
11-
1211
import pl.selvin.android.autocontentprovider.content.ContentHelper;
1312
import pl.selvin.android.autocontentprovider.log.Logger;
1413
import pl.selvin.android.listsyncsample.Constants;
1514
import pl.selvin.android.listsyncsample.provider.Database.Tag;
1615
import pl.selvin.android.listsyncsample.provider.Database.TagItemMapping;
1716
import pl.selvin.android.listsyncsample.provider.ListProvider;
1817
import pl.selvin.android.syncframework.content.SYNC;
18+
import pl.selvin.android.syncframework.content.SyncTableInfo;
1919

2020
public class TagItemMappingWithNamesProvider extends AbstractQueryProvider {
2121
protected static final String baseTable = TagItemMapping.TABLE_NAME;
2222
protected static final String Path = "TagItemMappingWithNames";
2323
public static final String Uri = "content://" + Constants.AUTHORITY + "/" + Path;
24-
private final HashMap<String, String> projectionMap;
24+
private final ArrayMap<String, String> projectionMap;
2525

26-
public TagItemMappingWithNamesProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper contentHelper, Logger logger, @NonNull UriMatcher uriMatcher, int code) {
26+
public TagItemMappingWithNamesProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper<SyncTableInfo> contentHelper, Logger logger, @NonNull UriMatcher uriMatcher, int code) {
2727
super(contentProvider, contentHelper, logger, uriMatcher, code);
2828
uriMatcher.addURI(Constants.AUTHORITY, Path, code);
2929
projectionMap = projectionMapBuilder(TagItemMapping.SCOPE, TagItemMapping.TABLE_NAME)

demo/src/main/java/pl/selvin/android/listsyncsample/provider/implementation/TagNotUsedProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@
44
import android.database.Cursor;
55
import android.database.sqlite.SQLiteQueryBuilder;
66
import android.net.Uri;
7+
import android.util.ArrayMap;
78

89
import androidx.annotation.NonNull;
910

10-
import java.util.HashMap;
11-
1211
import pl.selvin.android.autocontentprovider.content.ContentHelper;
1312
import pl.selvin.android.autocontentprovider.log.Logger;
1413
import pl.selvin.android.listsyncsample.Constants;
1514
import pl.selvin.android.listsyncsample.provider.Database.Tag;
1615
import pl.selvin.android.listsyncsample.provider.Database.TagItemMapping;
1716
import pl.selvin.android.listsyncsample.provider.ListProvider;
1817
import pl.selvin.android.syncframework.content.SYNC;
18+
import pl.selvin.android.syncframework.content.SyncTableInfo;
1919

2020
public class TagNotUsedProvider extends AbstractQueryProvider {
2121
protected static final String baseTable = Tag.TABLE_NAME;
2222
protected static final String Path = "TagNotUsed";
2323
public static final String Uri = "content://" + Constants.AUTHORITY + "/" + Path;
24-
private final HashMap<String, String> projectionMap;
24+
private final ArrayMap<String, String> projectionMap;
2525

26-
public TagNotUsedProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper contentHelper, Logger logger, @NonNull UriMatcher uriMatcher, int code) {
26+
public TagNotUsedProvider(@NonNull ListProvider contentProvider, @NonNull ContentHelper<SyncTableInfo> contentHelper, Logger logger, @NonNull UriMatcher uriMatcher, int code) {
2727
super(contentProvider, contentHelper, logger, uriMatcher, code);
2828
uriMatcher.addURI(Constants.AUTHORITY, Path, code);
2929
projectionMap = projectionMapBuilder(Tag.SCOPE, Tag.TABLE_NAME)

0 commit comments

Comments
 (0)