kopia lustrzana https://github.com/sh123/codec2_talkie
Log cleanup improvements
rodzic
ab54a49d00
commit
c2768dbd76
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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); }
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue