Skip to content

Instantly share code, notes, and snippets.

@heridev
Last active August 11, 2018 14:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heridev/d3b5ef5ac2959bcbbbed9519b2dcfbf7 to your computer and use it in GitHub Desktop.
Save heridev/d3b5ef5ac2959bcbbbed9519b2dcfbf7 to your computer and use it in GitHub Desktop.
Refactoring the app into MVP : Second part

Implementing the database thing

OpenHelperManager.java

/* this is not the complete example for the implementation
 but it is just a sample as I didn't write it all that
*/
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
  private static final String DATABASE_NAME="Sniptit.rb";

  private static final int DATABABASE_VERSION = 2;

  public DatabaseHelper(Context context) {super(contenxt, DATABASE_NAME, null, DATABASE_VERSION);}
  
  public RunTimeExceptionDao<Book, Integer> getBookDAO() {
    if(bookRunTimeDAO == null) {
      bookRuntimeDAO = getRunTimeExceptionDao(Book.class);
    }
    return bookRunTimeDAO;
  }
  ...
}

DatabaseBooksRepository.java

public class DatabaseBooksRepository implements BooksRepository {
  private final DatabaseHelper databaseHelper;
  public DatabaseBooksRepository(Content context) {
   databaseHelper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
  }

  @Override
  public List<Book> getBooks(){
    try{
      return databaseHelper.getbookDaO().queryBuilder()
               .orderBy("order", tru)
               .query();
    } catch {
      return Collections.emptyList();
    }
  }
}

BooksActivity.java

public class BooksActivity extend BaseActivity implements BooksActivityView {
  private BooksActivityPresenter presenter;
  @override
  protected void onCreate(...){
    super.onCreate()
    presenter = New BooksActivityPresenter(
     this,
     new DatabaseBooksRepository(getApplication())
    );
    presenter.loadBooks();
  }

  @Override public void displayBooks(List<book> bookList) {
    // here we have all the logic for showing books result
    Log.d(TAG, "Displaybooks: found some books");
  }

  @Override public void displayNoBooks() {
    // here we have all the logic for showing no books
    Log.d(TAG, "Displaybooks: found no some books");
  };

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment