Log cleanup improvements

master
sh123 2022-09-05 10:20:01 +03:00
rodzic ab54a49d00
commit c2768dbd76
11 zmienionych plików z 61 dodań i 142 usunięć

Wyświetl plik

@ -10,8 +10,8 @@ android {
applicationId "com.radio.codec2talkie"
minSdkVersion 23
targetSdkVersion 30
versionCode 145
versionName "1.45"
versionCode 146
versionName "1.46"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

Wyświetl plik

@ -164,21 +164,9 @@ public class LogItemActivity extends AppCompatActivity {
private void deleteLogItems(int hours) {
DialogInterface.OnClickListener deleteAllDialogClickListener = (dialog, which) -> {
if (which == DialogInterface.BUTTON_POSITIVE) {
if (_stationName == null) {
if (hours == -1) {
_logItemViewModel.deleteAllLogItems();
_positionItemViewModel.deleteAllPositionItems();
_stationItemViewModel.deleteAllStationItems();
} else {
_logItemViewModel.deleteLogItemsOlderThanHours(hours);
_positionItemViewModel.deletePositionItemsOlderThanHours(hours);
_stationItemViewModel.deleteAllStationItemsOlderThanHours(hours);
}
} else {
_logItemViewModel.deleteLogItems(_stationName);
_positionItemViewModel.deletePositionItems(_stationName);
_stationItemViewModel.deleteStationItem(_stationName);
}
_logItemViewModel.deleteLogItems(_stationName, hours);
_positionItemViewModel.deletePositionItems(_stationName, hours);
_stationItemViewModel.deleteStationItems(_stationName, hours);
}
};
String alertMessage = getString(R.string.log_item_activity_delete_all_title);

Wyświetl plik

@ -16,72 +16,6 @@ public interface LogItemDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
void insertLogItem(LogItem logItem);
@Query("SELECT pos.timestampEpoch AS timestampEpoch, " +
"pos.id AS id, " +
"log.srcCallsign AS srcCallsign, " +
"log.logLine AS logLine," +
"pos.dstCallsign AS dstCallsign, " +
"pos.latitude AS latitude, " +
"pos.longitude AS longitude, " +
"pos.maidenHead AS maidenHead, " +
"pos.altitudeMeters AS altitudeMeters, " +
"pos.bearingDegrees AS bearingDegrees, " +
"pos.speedMetersPerSecond AS speedMetersPerSecond, " +
"pos.status AS status, " +
"pos.comment AS comment, " +
"pos.symbolCode AS symbolCode, " +
"pos.privacyLevel AS privacyLevel, " +
"pos.rangeMiles AS rangeMiles, " +
"pos.directivityDeg AS directivityDeg, " +
"MAX(pos.timestampEpoch)" +
"FROM LogItem log " +
"LEFT OUTER JOIN PositionItem pos ON (log.srcCallsign = pos.srcCallsign) " +
"GROUP BY log.srcCallsign " +
"UNION " +
"SELECT pos.timestampEpoch AS timestampEpoch, " +
"pos.id AS id, " +
"pos.srcCallsign AS srcCallsign, " +
"log.logLine AS logLine," +
"pos.dstCallsign AS dstCallsign, " +
"pos.latitude AS latitude, " +
"pos.longitude AS longitude, " +
"pos.maidenHead AS maidenHead, " +
"pos.altitudeMeters AS altitudeMeters, " +
"pos.bearingDegrees AS bearingDegrees, " +
"pos.speedMetersPerSecond AS speedMetersPerSecond, " +
"pos.status AS status, " +
"pos.comment AS comment, " +
"pos.symbolCode AS symbolCode, " +
"pos.privacyLevel AS privacyLevel, " +
"pos.rangeMiles AS rangeMiles, " +
"pos.directivityDeg AS directivityDeg, " +
"MAX(pos.timestampEpoch)" +
"FROM PositionItem pos " +
"LEFT OUTER JOIN LogItem log ON (log.srcCallsign = pos.srcCallsign) " +
"GROUP BY pos.srcCallsign " +
"ORDER BY srcCallsign ASC")
LiveData<List<StationItem>> getLastPositions();
@Query("SELECT pos.timestampEpoch AS timestampEpoch, " +
"pos.id AS id, " +
"pos.srcCallsign AS srcCallsign, " +
"pos.dstCallsign AS dstCallsign, " +
"pos.latitude AS latitude, " +
"pos.longitude AS longitude, " +
"pos.maidenHead AS maidenHead, " +
"pos.altitudeMeters AS altitudeMeters, " +
"pos.bearingDegrees AS bearingDegrees, " +
"pos.speedMetersPerSecond AS speedMetersPerSecond, " +
"pos.status AS status, " +
"pos.comment AS comment, " +
"pos.symbolCode AS symbolCode, " +
"pos.privacyLevel AS privacyLevel, " +
"pos.rangeMiles AS rangeMiles, " +
"pos.directivityDeg AS directivityDeg " +
"FROM PositionItem AS pos WHERE pos.srcCallsign = :srcCallsign " +
"ORDER BY pos.timestampEpoch DESC")
LiveData<List<StationItem>> getStationPositions(String srcCallsign);
@Query("SELECT * FROM LogItem ORDER by timestampEpoch ASC")
LiveData<List<LogItem>> getAllLogItems();
@ -89,11 +23,14 @@ public interface LogItemDao {
LiveData<List<LogItem>> getLogItems(String srcCallsign);
@Query("DELETE FROM LogItem WHERE srcCallsign = :srcCallsign")
void deleteLogItems(String srcCallsign);
void deleteLogItemsFromCallsign(String srcCallsign);
@Query("DELETE FROM LogItem")
void deleteAllLogItems();
@Query("DELETE FROM LogItem WHERE timestampEpoch < :timestampEpoch")
void deleteLogItemsOlderThanTimestamp(long timestampEpoch);
@Query("DELETE FROM LogItem WHERE srcCallsign = :srcCallsign AND timestampEpoch < :timestampEpoch")
void deleteLogItems(String srcCallsign, long timestampEpoch);
}

Wyświetl plik

@ -32,15 +32,16 @@ public class LogItemRepository {
AppDatabase.getDatabaseExecutor().execute(() -> _logItemDao.insertLogItem(logItem));
}
public void deleteAllLogItems() {
AppDatabase.getDatabaseExecutor().execute(_logItemDao::deleteAllLogItems);
}
public void deleteLogItems(String groupName) {
AppDatabase.getDatabaseExecutor().execute(() -> _logItemDao.deleteLogItems(groupName));
}
public void deleteLogItemsOlderThanHours(int hours) {
AppDatabase.getDatabaseExecutor().execute(() -> _logItemDao.deleteLogItemsOlderThanTimestamp(DateTools.currentTimestampMinusHours(hours)));
public void deleteLogItems(String srcCallsign, int hours) {
AppDatabase.getDatabaseExecutor().execute(() -> {
if (srcCallsign == null && hours == -1)
_logItemDao.deleteAllLogItems();
else if (srcCallsign == null)
_logItemDao.deleteLogItemsOlderThanTimestamp(DateTools.currentTimestampMinusHours(hours));
else if (hours == -1)
_logItemDao.deleteLogItemsFromCallsign(srcCallsign);
else
_logItemDao.deleteLogItems(srcCallsign, DateTools.currentTimestampMinusHours(hours));
});
}
}

Wyświetl plik

@ -29,11 +29,7 @@ public class LogItemViewModel extends AndroidViewModel {
return _logItemRepository.getLogItems(groupName);
}
public void deleteAllLogItems() { _logItemRepository.deleteAllLogItems(); }
public void deleteLogItems(String groupName) {
_logItemRepository.deleteLogItems(groupName);
public void deleteLogItems(String srcCallsign, int hours) {
_logItemRepository.deleteLogItems(srcCallsign, hours);
}
public void deleteLogItemsOlderThanHours(int hours) { _logItemRepository.deleteLogItemsOlderThanHours(hours); }
}

Wyświetl plik

@ -50,11 +50,14 @@ public abstract class PositionItemDao {
public abstract LiveData<List<PositionItem>> getPositionItems(String srcCallsign);
@Query("DELETE FROM PositionItem WHERE srcCallsign = :srcCallsign")
public abstract void deletePositionItems(String srcCallsign);
public abstract void deletePositionItemsFromCallsign(String srcCallsign);
@Query("DELETE FROM PositionItem WHERE timestampEpoch < :timestamp")
public abstract void deletePositionItemsOlderThanTimestamp(long timestamp);
@Query("DELETE FROM PositionItem WHERE timestampEpoch < :timestamp AND srcCallsign = :srcCallsign")
public abstract void deletePositionItems(String srcCallsign, long timestamp);
@Query("DELETE FROM PositionItem")
public abstract void deleteAllPositionItems();
}

Wyświetl plik

@ -6,6 +6,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.Transformations;
import com.radio.codec2talkie.storage.AppDatabase;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
@ -28,15 +29,18 @@ public class PositionItemRepository {
return Transformations.distinctUntilChanged(_positionItemDao.getPositionItems(srcCallsign));
}
public void deleteAllPositionItems() {
AppDatabase.getDatabaseExecutor().execute(_positionItemDao::deleteAllPositionItems);
}
public void deletePositionItemsFromCallsign(String srcCallsign) {
AppDatabase.getDatabaseExecutor().execute(() -> _positionItemDao.deletePositionItems(srcCallsign));
}
public void deletePositionItemsOlderThanTimestamp(long timestamp) {
AppDatabase.getDatabaseExecutor().execute(() -> _positionItemDao.deletePositionItemsOlderThanTimestamp(timestamp));
public void deletePositionItems(String srcCallsign, int hours) {
AppDatabase.getDatabaseExecutor().execute(() -> {
AppDatabase.getDatabaseExecutor().execute(() -> {
if (srcCallsign == null && hours == -1)
_positionItemDao.deleteAllPositionItems();
else if (srcCallsign == null)
_positionItemDao.deletePositionItemsOlderThanTimestamp(DateTools.currentTimestampMinusHours(hours));
else if (hours == -1)
_positionItemDao.deletePositionItemsFromCallsign(srcCallsign);
else
_positionItemDao.deletePositionItems(srcCallsign, DateTools.currentTimestampMinusHours(hours));
});
});
}
}

Wyświetl plik

@ -23,13 +23,7 @@ public class PositionItemViewModel extends AndroidViewModel {
return _positionItemRepository.getPositionItems(srcCallsign);
}
public void deleteAllPositionItems() { _positionItemRepository.deleteAllPositionItems(); }
public void deletePositionItems(String srcCallsign) {
_positionItemRepository.deletePositionItemsFromCallsign(srcCallsign);
}
public void deletePositionItemsOlderThanHours(int hours) {
_positionItemRepository.deletePositionItemsOlderThanTimestamp(DateTools.currentTimestampMinusHours(hours));
public void deletePositionItems(String srcCallsign, int hours) {
_positionItemRepository.deletePositionItems(srcCallsign, hours);
}
}

Wyświetl plik

@ -49,6 +49,9 @@ public abstract class StationItemDao {
@Query("DELETE FROM StationItem WHERE timestampEpoch < :timestamp")
public abstract void deleteStationItemsOlderThanTimestamp(long timestamp);
@Query("DELETE FROM StationItem WHERE timestampEpoch < :timestamp AND srcCallsign = :srcCallsign")
public abstract void deleteStationItems(String srcCallsign, long timestamp);
@Query("DELETE FROM StationItem")
public abstract void deleteAllStationItems();
}

Wyświetl plik

@ -8,6 +8,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.Transformations;
import com.radio.codec2talkie.storage.AppDatabase;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
@ -31,15 +32,18 @@ public class StationItemRepository {
});
}
public void deleteAllStationItems() {
AppDatabase.getDatabaseExecutor().execute(_stationItemDao::deleteAllStationItems);
}
public void deleteStationItemsFromCallsign(String srcCallsign) {
AppDatabase.getDatabaseExecutor().execute(() -> _stationItemDao.deleteStationItemsFromCallsign(srcCallsign));
}
public void deleteAllStationItemsOlderThanHours(long timestamp) {
AppDatabase.getDatabaseExecutor().execute(() -> _stationItemDao.deleteStationItemsOlderThanTimestamp(timestamp));
public void deleteStationItems(String srcCallsign, int hours) {
AppDatabase.getDatabaseExecutor().execute(() -> {
AppDatabase.getDatabaseExecutor().execute(() -> {
if (srcCallsign == null && hours == -1)
_stationItemDao.deleteAllStationItems();
else if (srcCallsign == null)
_stationItemDao.deleteStationItemsOlderThanTimestamp(DateTools.currentTimestampMinusHours(hours));
else if (hours == -1)
_stationItemDao.deleteStationItemsFromCallsign(srcCallsign);
else
_stationItemDao.deleteStationItems(srcCallsign, DateTools.currentTimestampMinusHours(hours));
});
});
}
}

Wyświetl plik

@ -1,14 +1,11 @@
package com.radio.codec2talkie.storage.station;
import android.app.Application;
import android.text.format.DateUtils;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import com.radio.codec2talkie.storage.AppDatabase;
import com.radio.codec2talkie.storage.station.StationItemRepository;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
@ -24,15 +21,7 @@ public class StationItemViewModel extends AndroidViewModel {
public LiveData<List<StationItem>> getAllStationItems() { return _stationItemRepository.getAllStationItems(); }
public void deleteAllStationItems() {
_stationItemRepository.deleteAllStationItems();
}
public void deleteAllStationItemsOlderThanHours(int hours) {
_stationItemRepository.deleteAllStationItemsOlderThanHours(hours);
}
public void deleteStationItem(String srcCallsign) {
_stationItemRepository.deleteStationItemsFromCallsign(srcCallsign);
public void deleteStationItems(String srcCallsign, int hours) {
_stationItemRepository.deleteStationItems(srcCallsign, hours);
}
}