Browse Source

feat: 🎉 room

master
niushuai233 1 year ago
parent
commit
c60f8358a2
  1. 158
      app/schemas/cc.niushuai.dididone.biz.roomx.Database/1.json
  2. 5
      app/src/main/java/cc/niushuai/dididone/MainActivity.java
  3. 34
      app/src/main/java/cc/niushuai/dididone/biz/dao/ProjectDao.java
  4. 34
      app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java
  5. 7
      app/src/main/java/cc/niushuai/dididone/biz/dao/SavedIconDao.java
  6. 65
      app/src/main/java/cc/niushuai/dididone/biz/entity/Project.java
  7. 75
      app/src/main/java/cc/niushuai/dididone/biz/entity/Record.java
  8. 75
      app/src/main/java/cc/niushuai/dididone/biz/entity/SavedIcon.java
  9. 51
      app/src/main/java/cc/niushuai/dididone/biz/roomx/DBManager.java
  10. 21
      app/src/main/java/cc/niushuai/dididone/biz/roomx/Database.java
  11. 2
      app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java

158
app/schemas/cc.niushuai.dididone.biz.roomx.Database/1.json

@ -0,0 +1,158 @@ @@ -0,0 +1,158 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "966ac67768ec0c8feefb2e843474d8c7",
"entities": [
{
"tableName": "t_record",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `check_date` INTEGER, `description` TEXT, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "checkDate",
"columnName": "check_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createDate",
"columnName": "create_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "t_project",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `project_icon_id` INTEGER, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "projectIconId",
"columnName": "project_icon_id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createDate",
"columnName": "create_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "t_icon",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `icon` TEXT, `color` TEXT, `size` INTEGER, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "color",
"columnName": "color",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "size",
"columnName": "size",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createDate",
"columnName": "create_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '966ac67768ec0c8feefb2e843474d8c7')"
]
}
}

5
app/src/main/java/cc/niushuai/dididone/MainActivity.java

@ -20,6 +20,7 @@ import com.mikepenz.iconics.Iconics; @@ -20,6 +20,7 @@ import com.mikepenz.iconics.Iconics;
import com.mikepenz.iconics.context.IconicsLayoutInflater2;
import com.mikepenz.ionicons_typeface_library.Ionicons;
import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
@ -40,7 +41,11 @@ public class MainActivity extends AppCompatActivity { @@ -40,7 +41,11 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 初始化icon列表
iconicsInit();
// 初始化数据库
DBManager.init(this);
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());

34
app/src/main/java/cc/niushuai/dididone/biz/dao/ProjectDao.java

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
package cc.niushuai.dididone.biz.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
import cc.niushuai.dididone.biz.entity.Project;
import io.reactivex.Completable;
import io.reactivex.Flowable;
@Dao
public interface ProjectDao {
@Query("SELECT * FROM t_project")
Flowable<List<Project>> testListAll();
@Query("SELECT * FROM t_project where deleted = 0 order by create_date desc")
Flowable<List<Project>> listAll();
@Query("SELECT count(*) FROM t_project where deleted = 0 and name = :name")
Flowable<Integer> countByName(String name);
@Insert
Completable insertAll(Project... projects);
@Delete
void delete(Project project);
@Query("delete from t_project where id = :id")
void deleteById(Long id);
}

34
app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
package cc.niushuai.dididone.biz.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
import cc.niushuai.dididone.biz.entity.Record;
import io.reactivex.Completable;
import io.reactivex.Flowable;
@Dao
public interface RecordDao {
@Query("SELECT * FROM t_record order by check_date desc, create_date desc")
Flowable<List<Record>> listAll();
@Query("select * from t_record where deleted = 0 and check_date = :date order by check_date desc, create_date desc")
Flowable<List<Record>> queryByDate(long date);
@Query("select * from t_record where deleted = 0 and create_date >= :startDate and create_date <= :endDate order by check_date desc, create_date desc")
Flowable<List<Record>> queryByDate(long startDate, long endDate);
@Insert
Completable insertAll(Record... records);
@Delete
void delete(Record record);
@Delete
void delete(Record... records);
}

7
app/src/main/java/cc/niushuai/dididone/biz/dao/SavedIconDao.java

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
package cc.niushuai.dididone.biz.dao;
import androidx.room.Dao;
@Dao
public interface SavedIconDao {
}

65
app/src/main/java/cc/niushuai/dididone/biz/entity/Project.java

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
package cc.niushuai.dididone.biz.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity(tableName = "t_project")
public class Project {
@PrimaryKey
private Long id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "project_icon_id")
private Long projectIconId;
@ColumnInfo(name = "create_date")
private Long createDate;
@ColumnInfo(name = "deleted")
private Integer deleted;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getProjectIconId() {
return projectIconId;
}
public void setProjectIconId(Long projectIconId) {
this.projectIconId = projectIconId;
}
public Long getCreateDate() {
return createDate;
}
public void setCreateDate(Long createDate) {
this.createDate = createDate;
}
public Integer getDeleted() {
return deleted;
}
public void setDeleted(Integer deleted) {
this.deleted = deleted;
}
}

75
app/src/main/java/cc/niushuai/dididone/biz/entity/Record.java

@ -0,0 +1,75 @@ @@ -0,0 +1,75 @@
package cc.niushuai.dididone.biz.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity(tableName = "t_record")
public class Record {
@PrimaryKey
private Long id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "check_date")
private Long checkDate;
@ColumnInfo(name = "description")
private String description;
@ColumnInfo(name = "create_date")
private Long createDate;
@ColumnInfo(name = "deleted")
private Integer deleted;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getCheckDate() {
return checkDate;
}
public void setCheckDate(Long checkDate) {
this.checkDate = checkDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Long getCreateDate() {
return createDate;
}
public void setCreateDate(Long createDate) {
this.createDate = createDate;
}
public Integer getDeleted() {
return deleted;
}
public void setDeleted(Integer deleted) {
this.deleted = deleted;
}
}

75
app/src/main/java/cc/niushuai/dididone/biz/entity/SavedIcon.java

@ -0,0 +1,75 @@ @@ -0,0 +1,75 @@
package cc.niushuai.dididone.biz.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity(tableName = "t_icon")
public class SavedIcon {
@PrimaryKey
private Long id;
@ColumnInfo(name = "icon")
private String icon;
@ColumnInfo(name = "color")
private String color;
@ColumnInfo(name = "size")
private Integer size;
@ColumnInfo(name = "create_date")
private Long createDate;
@ColumnInfo(name = "deleted")
private Integer deleted;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public Long getCreateDate() {
return createDate;
}
public void setCreateDate(Long createDate) {
this.createDate = createDate;
}
public Integer getDeleted() {
return deleted;
}
public void setDeleted(Integer deleted) {
this.deleted = deleted;
}
}

51
app/src/main/java/cc/niushuai/dididone/biz/roomx/DBManager.java

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
package cc.niushuai.dididone.biz.roomx;
import android.content.Context;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import cc.niushuai.dididone.biz.dao.ProjectDao;
import cc.niushuai.dididone.biz.dao.RecordDao;
import cc.niushuai.dididone.biz.dao.SavedIconDao;
public class DBManager {
public static DBManager INSTANCE;
private Context context;
private Database database;
public DBManager(Context context) {
this.context = context;
}
public static void init(Context context) {
INSTANCE = new DBManager(context);
}
public static RoomDatabase buildDatabase(Context context, Class<? extends RoomDatabase> clazz, String dbName) {
RoomDatabase.Builder<? extends RoomDatabase> databaseBuilder = Room.databaseBuilder(context, clazz, dbName);
databaseBuilder.setJournalMode(RoomDatabase.JournalMode.AUTOMATIC);
databaseBuilder.allowMainThreadQueries();
return databaseBuilder.build();
}
public Database getDataBase() {
if (null == database) {
database = (Database) buildDatabase(context, Database.class, "darling_done.db");
}
return database;
}
public RecordDao recordDao() {
return getDataBase().recordDao();
}
public ProjectDao projectDao() {
return getDataBase().projectDao();
}
public SavedIconDao iconDao() {
return getDataBase().savedIconDao();
}
}

21
app/src/main/java/cc/niushuai/dididone/biz/roomx/Database.java

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
package cc.niushuai.dididone.biz.roomx;
import androidx.room.RoomDatabase;
import cc.niushuai.dididone.biz.dao.ProjectDao;
import cc.niushuai.dididone.biz.dao.RecordDao;
import cc.niushuai.dididone.biz.dao.SavedIconDao;
import cc.niushuai.dididone.biz.entity.Record;
import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.biz.entity.SavedIcon;
@androidx.room.Database(entities = {Record.class, Project.class, SavedIcon.class}, version = 1)
public abstract class Database extends RoomDatabase {
public abstract RecordDao recordDao();
public abstract ProjectDao projectDao();
public abstract SavedIconDao savedIconDao();
}

2
app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java

@ -109,7 +109,7 @@ public class CalendarFragment extends Fragment { @@ -109,7 +109,7 @@ public class CalendarFragment extends Fragment {
// itemLayout.setOrientation(LinearLayout.VERTICAL);
// icon layout
// projectIcon layout
RelativeLayout.LayoutParams iconLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
iconLayout.setMargins(10,5,0,0);
IconicsImageView iconView = new IconicsImageView(getContext());

Loading…
Cancel
Save