Как построить ContentProvider для синхронизации? - PullRequest
0 голосов
/ 30 апреля 2019

Я настраиваю адаптер синхронизации Android в архитектуре MVP и хочу получить разъяснения о том, как его построить?

  1. Имеется ли каждая модель (здания, службы, пользователи, ...) нужен ContentProvider?

Я пытался следовать руководству для разработчиков https://developer.android.com/training/sync-adapters/creating-sync-adapter. Однако я не очень хорошо понимаю ContentProvider!

У меня уже естьпостроить помощник по базе данных:

public class DBHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "syncAdapter.db";

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        addCarriersTable(sqLiteDatabase);
        addCompaniesTable(sqLiteDatabase);
        addUsersTable(sqLiteDatabase);
        addShiftsTable(sqLiteDatabase);
        addVehiclesTable(sqLiteDatabase);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }

    private void addCarriersTable(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(
                "CREATE TABLE " + CarrierEntry.TABLE_NAME + " (" +
                        CarrierEntry._ID + " INTEGER PRIMARY KEY, " +
                        CarrierEntry.COLUMN_NAME + " TEXT NOT NULL);"
        );
    }

    private void addCompaniesTable(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(
                "CREATE TABLE " + CompanyEntry.TABLE_NAME + " (" +
                        CompanyEntry._ID + " INTEGER PRIMARY KEY, " +
                        CompanyEntry.COLUMN_NAME + " TEXT NOT NULL, " +
                        CompanyEntry.COLUMN_COLOR + " TEXT NOT NULL, " +
                        CompanyEntry.COLUMN_CITY + " TEXT NOT NULL, " +
                        CompanyEntry.COLUMN_STATE + " TEXT NOT NULL);");
    }

    private void addUsersTable(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(
                "CREATE TABLE " + UserEntry.TABLE_NAME + " (" +
                        UserEntry._ID + " INTEGER PRIMARY KEY, " +
                        UserEntry.COLUMN_NAME + " TEXT NOT NULL, " +
                        UserEntry.COLUMN_ROLE + " TEXT NOT NULL, " +
                        UserEntry.COLUMN_ENROLLMENT + " TEXT NOT NULL);");
    }

    private void addShiftsTable(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(
                "CREATE TABLE " + ShiftEntry.TABLE_NAME + " (" +
                        ShiftEntry._ID + " INTEGER PRIMARY KEY, " +
                        ShiftEntry.COLUMN_NAME + " TEXT NOT NULL);");
    }

    private void addVehiclesTable(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(
                "CREATE TABLE " + VehicleEntry.TABLE_NAME + " (" +
                        VehicleEntry._ID + " INTEGER PRIMARY KEY, " +
                        VehicleEntry.COLUMN_NAME + " TEXT NOT NULL, " +
                        VehicleEntry.COLUMN_CART + " BOOLEAN NOT NULL);");
    }
}

После этого я построил класс контракта:

public class ExampleContract {
    public static final String CONTENT_AUTHORITY = "br.com.example.syncAdapter";
    public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);

    public static final String PATH_CARRIER = "carriers";
    public static final String PATH_COMPANY = "companies";
    public static final String PATH_SHIFT = "shifts";
    public static final String PATH_USER = "users";
    public static final String PATH_VEHICLE = "vehicles";
}

Но теперь я застрял на ContentProvider.Может ли кто-нибудь указать мне учебник или дать подсказку?

...