mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-14 21:13:37 +02:00
Added rule log
This commit is contained in:
@@ -1513,6 +1513,14 @@ class Core {
|
||||
for (EntityRule rule : rules)
|
||||
if (rule.matches(context, message, imessage)) {
|
||||
rule.execute(context, db, message);
|
||||
|
||||
EntityRuleLog rlog = new EntityRuleLog();
|
||||
rlog.rule = rule.id;
|
||||
rlog.message = message.id;
|
||||
rlog.time = new Date().getTime();
|
||||
rlog.id = db.rulelog().insertRuleLog(rlog);
|
||||
Log.i("Inserted rule log=" + rlog.id);
|
||||
|
||||
if (rule.stop)
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
|
||||
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||
|
||||
@Database(
|
||||
version = 83,
|
||||
version = 84,
|
||||
entities = {
|
||||
EntityIdentity.class,
|
||||
EntityAccount.class,
|
||||
@@ -62,7 +62,8 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
|
||||
EntityContact.class,
|
||||
EntityAnswer.class,
|
||||
EntityRule.class,
|
||||
EntityLog.class
|
||||
EntityLog.class,
|
||||
EntityRuleLog.class
|
||||
}
|
||||
)
|
||||
|
||||
@@ -88,6 +89,8 @@ public abstract class DB extends RoomDatabase {
|
||||
|
||||
public abstract DaoLog log();
|
||||
|
||||
public abstract DaoRuleLog rulelog();
|
||||
|
||||
private static DB sInstance;
|
||||
private static ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory);
|
||||
|
||||
@@ -818,6 +821,22 @@ public abstract class DB extends RoomDatabase {
|
||||
db.execSQL("ALTER TABLE `message` ADD COLUMN `color` INTEGER");
|
||||
}
|
||||
})
|
||||
.addMigrations(new Migration(83, 84) {
|
||||
@Override
|
||||
public void migrate(SupportSQLiteDatabase db) {
|
||||
Log.i("DB migration from version " + startVersion + " to " + endVersion);
|
||||
db.execSQL("CREATE TABLE IF NOT EXISTS `rule_log`" +
|
||||
" (`id` INTEGER PRIMARY KEY AUTOINCREMENT" +
|
||||
", `rule` INTEGER NOT NULL" +
|
||||
", `message` INTEGER NOT NULL" +
|
||||
", `time` INTEGER NOT NULL" +
|
||||
", FOREIGN KEY(`rule`) REFERENCES `rule`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE" +
|
||||
", FOREIGN KEY(`message`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )");
|
||||
db.execSQL("CREATE INDEX `index_rulelog_rule` ON `rule_log` (`rule`)");
|
||||
db.execSQL("CREATE INDEX `index_rulelog_message` ON `rule_log` (`message`)");
|
||||
db.execSQL("CREATE INDEX `index_rulelog_time` ON `rule_log` (`time`)");
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
30
app/src/main/java/eu/faircode/email/DaoRuleLog.java
Normal file
30
app/src/main/java/eu/faircode/email/DaoRuleLog.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package eu.faircode.email;
|
||||
|
||||
/*
|
||||
This file is part of FairEmail.
|
||||
|
||||
FairEmail is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FairEmail is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FairEmail. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2018-2019 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Insert;
|
||||
|
||||
@Dao
|
||||
public interface DaoRuleLog {
|
||||
|
||||
@Insert
|
||||
long insertRuleLog(EntityRuleLog log);
|
||||
}
|
||||
62
app/src/main/java/eu/faircode/email/EntityRuleLog.java
Normal file
62
app/src/main/java/eu/faircode/email/EntityRuleLog.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package eu.faircode.email;
|
||||
|
||||
/*
|
||||
This file is part of FairEmail.
|
||||
|
||||
FairEmail is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FairEmail is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FairEmail. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2018-2019 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
import androidx.room.Index;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import static androidx.room.ForeignKey.CASCADE;
|
||||
|
||||
@Entity(
|
||||
tableName = EntityRuleLog.TABLE_NAME,
|
||||
foreignKeys = {
|
||||
@ForeignKey(childColumns = "rule", entity = EntityRule.class, parentColumns = "id", onDelete = CASCADE),
|
||||
@ForeignKey(childColumns = "message", entity = EntityMessage.class, parentColumns = "id", onDelete = CASCADE),
|
||||
},
|
||||
indices = {
|
||||
@Index(value = {"rule"}),
|
||||
@Index(value = {"message"}),
|
||||
@Index(value = {"time"})
|
||||
}
|
||||
)
|
||||
public class EntityRuleLog {
|
||||
static final String TABLE_NAME = "rule_log";
|
||||
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
public Long id;
|
||||
@NonNull
|
||||
public Long rule;
|
||||
@NonNull
|
||||
public Long message;
|
||||
@NonNull
|
||||
public Long time;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof EntityRuleLog) {
|
||||
EntityRuleLog other = (EntityRuleLog) obj;
|
||||
return this.id.equals(other.id);
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user