Browse Source

feat(android): init room db

pull/8/head
isra el 2 years ago
parent
commit
30b005d867
  1. 13
      android/app/build.gradle
  2. 25
      android/app/src/main/java/com/vernu/sms/database/local/AppDatabase.java
  3. 17
      android/app/src/main/java/com/vernu/sms/database/local/DateConverter.java
  4. 114
      android/app/src/main/java/com/vernu/sms/database/local/SMS.java
  5. 27
      android/app/src/main/java/com/vernu/sms/database/local/SMSDao.java
  6. 42
      android/app/src/main/java/com/vernu/sms/dtos/SMSDTO.java

13
android/app/build.gradle

@ -14,6 +14,12 @@ android {
versionName "2.2.0" versionName "2.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments["room.schemaLocation"] = "$projectDir/schemas"
}
}
} }
buildTypes { buildTypes {
@ -46,4 +52,9 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.journeyapps:zxing-android-embedded:4.1.0' implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
}
def room_version = "2.4.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
}

25
android/app/src/main/java/com/vernu/sms/database/local/AppDatabase.java

@ -0,0 +1,25 @@
package com.vernu.sms.database.local;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
@Database(entities = {SMS.class}, version = 2)
public abstract class AppDatabase extends RoomDatabase {
private static volatile AppDatabase INSTANCE;
public static AppDatabase getInstance(Context context) {
if (INSTANCE == null) {
synchronized (AppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "db1")
.build();
}
}
}
return INSTANCE;
}
public abstract SMSDao localReceivedSMSDao();
}

17
android/app/src/main/java/com/vernu/sms/database/local/DateConverter.java

@ -0,0 +1,17 @@
package com.vernu.sms.database.local;
import androidx.room.TypeConverter;
import java.util.Date;
public class DateConverter {
@TypeConverter
public static Date toDate(Long dateLong) {
return dateLong == null ? null : new Date(dateLong);
}
@TypeConverter
public static Long fromDate(Date date) {
return date == null ? null : date.getTime();
}
}

114
android/app/src/main/java/com/vernu/sms/database/local/SMS.java

@ -0,0 +1,114 @@
package com.vernu.sms.database.local;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import androidx.room.TypeConverters;
import java.util.Date;
@Entity(tableName = "sms")
@TypeConverters(DateConverter.class)
public class SMS {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "message")
private String message = "";
@ColumnInfo(name = "sender")
private String sender;
@ColumnInfo(name = "received_at")
private Date receivedAt;
@NonNull
@ColumnInfo(name = "type")
private String type;
@ColumnInfo(name = "server_acknowledged_at")
private Date serverAcknowledgedAt;
public SMS() {
type = null;
}
public boolean hasServerAcknowledged() {
return serverAcknowledgedAt != null;
}
@ColumnInfo(name = "last_acknowledged_request_at")
private Date lastAcknowledgedRequestAt;
@ColumnInfo(name = "retry_count", defaultValue = "0")
private int retryCount = 0;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public Date getServerAcknowledgedAt() {
return serverAcknowledgedAt;
}
public void setServerAcknowledgedAt(Date serverAcknowledgedAt) {
this.serverAcknowledgedAt = serverAcknowledgedAt;
}
public Date getReceivedAt() {
return receivedAt;
}
public void setReceivedAt(Date receivedAt) {
this.receivedAt = receivedAt;
}
@NonNull
public String getType() {
return type;
}
public void setType(@NonNull String type) {
this.type = type;
}
public Date getLastAcknowledgedRequestAt() {
return lastAcknowledgedRequestAt;
}
public void setLastAcknowledgedRequestAt(Date lastAcknowledgedRequestAt) {
this.lastAcknowledgedRequestAt = lastAcknowledgedRequestAt;
}
public int getRetryCount() {
return retryCount;
}
public void setRetryCount(int retryCount) {
this.retryCount = retryCount;
}
}

27
android/app/src/main/java/com/vernu/sms/database/local/SMSDao.java

@ -0,0 +1,27 @@
package com.vernu.sms.database.local;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;
@Dao
public interface SMSDao {
@Query("SELECT * FROM sms")
List<SMS> getAll();
@Query("SELECT * FROM sms WHERE id IN (:smsIds)")
List<SMS> loadAllByIds(int[] smsIds);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(SMS... sms);
@Delete
void delete(SMS sms);
}

42
android/app/src/main/java/com/vernu/sms/dtos/SMSDTO.java

@ -0,0 +1,42 @@
package com.vernu.sms.dtos;
import java.util.Date;
public class SMSDTO {
private String sender;
private String message;
private Date receivedAt;
public SMSDTO() {
}
public SMSDTO(String sender, String message, Date receivedAt) {
this.sender = sender;
this.message = message;
this.receivedAt = receivedAt;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getReceivedAt() {
return receivedAt;
}
public void setReceivedAt(Date receivedAt) {
this.receivedAt = receivedAt;
}
}
Loading…
Cancel
Save