Advertisement
andyshon

DbModel

Jul 10th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.34 KB | None | 0 0
  1. package com.andyshon.rxjava_1_sqlite;
  2.  
  3. import android.content.ContentValues;
  4. import android.content.Context;
  5. import android.database.Cursor;
  6. import android.database.sqlite.SQLiteDatabase;
  7.  
  8. import java.util.ArrayList;
  9. import java.util.List;
  10.  
  11. import io.reactivex.Observable;
  12. import io.reactivex.ObservableEmitter;
  13. import io.reactivex.ObservableOnSubscribe;
  14.  
  15. /**
  16.  * Created by andyshon on 10.07.18.
  17.  */
  18.  
  19. public class DbModel {
  20.  
  21.     private UserDbHelper userDbHelper;
  22.     private Context context;
  23.  
  24.     public DbModel (Context context) {
  25.         this.context = context;
  26.         userDbHelper = new UserDbHelper(context);
  27.     }
  28.  
  29.  
  30.     public void removeAllDatabase () {
  31.         //userDbHelper.getWritableDatabase().execSQL("DROP TABLE IF EXISTS " + UserDbHelper.DATABASE_NAME);
  32.         userDbHelper.getWritableDatabase().execSQL("delete from "+ UserContract.UserEntry.TABLE_NAME);
  33.     }
  34.  
  35.  
  36.     public void insertUsers(List<User> userList) {
  37.         // Gets the database in write mode
  38.         SQLiteDatabase db = userDbHelper.getWritableDatabase();
  39.         // Создаем объект ContentValues, где имена столбцов ключи,
  40.         // а информация о госте является значениями ключей
  41.  
  42.  
  43.         for (User user : userList) {
  44.             ContentValues values = new ContentValues();
  45.             values.put(UserContract.UserEntry.COLUMN_NAME, user.getName());
  46.             values.put(UserContract.UserEntry.COLUMN_CITY, user.getCity());
  47.             values.put(UserContract.UserEntry.COLUMN_GENDER, user.getName().length()>6 ? UserContract.UserEntry.GENDER_MALE : UserContract.UserEntry.GENDER_FEMALE);
  48.             values.put(UserContract.UserEntry.COLUMN_AGE, user.getAge());
  49.  
  50.             long newRowId = db.insert(UserContract.UserEntry.TABLE_NAME, null, values);
  51.         }
  52.     }
  53.  
  54.  
  55.     public Observable<List<User>> displayDatabaseInfo() {
  56.         // Создадим и откроем для чтения базу данных
  57.         //context.deleteDatabase(UserDbHelper.DATABASE_NAME);
  58.         //db.execSQL("delete from "+ TABLE_NAME);
  59.         SQLiteDatabase db = userDbHelper.getReadableDatabase();
  60.  
  61.         // Зададим условие для выборки - список столбцов
  62.         /*String[] projection = {
  63.                 GuestEntry.COLUMN_NAME };
  64.  
  65.         String selection = GuestEntry._ID + ">?";
  66.         String[] selectionArgs = {"1"};*/
  67.  
  68.         String[] projection = {
  69.                 UserContract.UserEntry._ID,
  70.                 UserContract.UserEntry.COLUMN_NAME,
  71.                 UserContract.UserEntry.COLUMN_CITY,
  72.                 UserContract.UserEntry.COLUMN_GENDER,
  73.                 UserContract.UserEntry.COLUMN_AGE };
  74.  
  75.         // Делаем запрос
  76.         Cursor cursor = db.query(
  77.                 UserContract.UserEntry.TABLE_NAME,   // таблица
  78.                 projection,            // столбцы
  79.                 /*selection*/null,                  // столбцы для условия WHERE
  80.                 /*selectionArgs*/null,                  // значения для условия WHERE
  81.                 null,                  // Don't group the rows
  82.                 null,                  // Don't filter by row groups
  83.                 UserContract.UserEntry.COLUMN_AGE + " DESC");     // порядок сортировки
  84.  
  85.  
  86.         try {
  87.  
  88.             // Узнаем индекс каждого столбца
  89.             int idColumnIndex = cursor.getColumnIndex(UserContract.UserEntry._ID);
  90.             int nameColumnIndex = cursor.getColumnIndex(UserContract.UserEntry.COLUMN_NAME);
  91.             int cityColumnIndex = cursor.getColumnIndex(UserContract.UserEntry.COLUMN_CITY);
  92.             int genderColumnIndex = cursor.getColumnIndex(UserContract.UserEntry.COLUMN_GENDER);
  93.             int ageColumnIndex = cursor.getColumnIndex(UserContract.UserEntry.COLUMN_AGE);
  94.  
  95.             List<User> userList = new ArrayList<>();
  96.             // Проходим через все ряды
  97.             while (cursor.moveToNext()) {
  98.                 // Используем индекс для получения строки или числа
  99.                 int currentID = cursor.getInt(idColumnIndex);
  100.                 String currentName = cursor.getString(nameColumnIndex);
  101.                 String currentCity = cursor.getString(cityColumnIndex);
  102.                 int currentGender = cursor.getInt(genderColumnIndex);
  103.                 int currentAge = cursor.getInt(ageColumnIndex);
  104.  
  105.                 System.out.println("CURRENT-ID:" + currentID);
  106.                
  107.                 userList.add(new User(new ApiUser(currentAge, currentName, currentCity)));
  108.             }
  109.  
  110.             Observable<List<User>> listObservable = Observable.create(new ObservableOnSubscribe<List<User>>() {
  111.                 @Override
  112.                 public void subscribe(ObservableEmitter<List<User>> e) throws Exception {
  113.  
  114.                     if (!e.isDisposed()) {
  115.                         e.onNext(userList);
  116.                         e.onComplete();
  117.                     }
  118.                     //e.onError(new Throwable("error here!"));
  119.                 }
  120.             });
  121.  
  122.             return listObservable;
  123.  
  124.         } finally {
  125.             // Всегда закрываем курсор после чтения
  126.             cursor.close();
  127.         }
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement