Skip to content

Commit

Permalink
Merge pull request #8 from jpage4500/feature/06-10
Browse files Browse the repository at this point in the history
- move preferences into a single class
  • Loading branch information
jpage4500 authored Jul 18, 2024
2 parents 5823b8f + 74b887f commit e31014e
Show file tree
Hide file tree
Showing 41 changed files with 1,928 additions and 1,535 deletions.
15 changes: 8 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,25 @@
<dependency>
<groupId>com.formdev</groupId>
<artifactId>flatlaf</artifactId>
<version>2.6</version>
<version>3.4.1</version>
</dependency>
<!-- logging to file -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
<version>2.0.13</version>
</dependency>
<!-- GSON serializer -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10</version>
<version>2.11.0</version>
</dependency>
<!-- better image scaling -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.17</version>
<version>0.4.20</version>
</dependency>
<!-- flexible layouts - https://mvnrepository.com/artifact/com.miglayout/miglayout -->
<dependency>
Expand All @@ -56,7 +56,7 @@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
<version>4.5.14</version>
</dependency>
</dependencies>

Expand All @@ -72,14 +72,15 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.7.1</version>
<executions>
<execution>
<phase>package</phase>
Expand All @@ -104,7 +105,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<version>3.3.0</version>
<configuration>
<mainClass>com.jpage4500.devicemanager.MainApplication</mainClass>
</configuration>
Expand Down
17 changes: 17 additions & 0 deletions scripts/clear-preferences.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

PREFS=com.apple.java.util.prefs.plist
PREFS_FULL=~/Library/Preferences/$PREFS

# clear out all Preferences (NOTE: only tested on a Mac)

if [ -f $PREFS_FULL ]; then
echo "removing $PREFS_FULL.."
rm $PREFS_FULL

USER=$(id -un)
echo "clearing cache for $USER.."
killall -u $USER cfprefsd
else
echo "Preferences not found: $PREFS_FULL"
fi
27 changes: 0 additions & 27 deletions scripts/device-manager.sh

This file was deleted.

13 changes: 3 additions & 10 deletions src/main/java/com/jpage4500/devicemanager/MainApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.jpage4500.devicemanager.logging.AppLoggerFactory;
import com.jpage4500.devicemanager.logging.Log;
import com.jpage4500.devicemanager.ui.DeviceScreen;
import com.jpage4500.devicemanager.ui.dialog.SettingsDialog;
import com.jpage4500.devicemanager.utils.PreferenceUtils;
import com.jpage4500.devicemanager.utils.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -14,7 +14,6 @@
import java.awt.*;
import java.io.IOException;
import java.util.Properties;
import java.util.prefs.Preferences;

public class MainApplication {
private static final Logger log = LoggerFactory.getLogger(MainApplication.class);
Expand Down Expand Up @@ -58,18 +57,12 @@ private void setupLogging() {
logger.setDebugLevel(Log.VERBOSE);
logger.setLogToFile(true);

Preferences preferences = Preferences.userRoot();
boolean isDebugMode = preferences.getBoolean(SettingsDialog.PREF_DEBUG_MODE, false);
boolean isDebugMode = PreferenceUtils.getPreference(PreferenceUtils.PrefBoolean.PREF_DEBUG_MODE, false);
logger.setFileLogLevel(isDebugMode ? Log.DEBUG : Log.INFO);
}

private void initializeUI() {
try {
UIManager.setLookAndFeel(new FlatLightLaf());
} catch (Exception e) {
log.error("initializeUI: {}", e.getMessage());
}

FlatLightLaf.setup();
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("defaultFont", new Font("Arial", Font.PLAIN, 16));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ public static DeviceFile fromEntry(String line) {
} else {
file.isDirectory = true;
}

}
if (TextUtils.equalsIgnoreCaseAny(securityType, "rootfs")) {
file.isReadOnly = true;
}
return file;
}
Expand Down
97 changes: 60 additions & 37 deletions src/main/java/com/jpage4500/devicemanager/data/LogFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,21 @@ public class LogFilter {
List<FilterExpression> filterList;

public enum Expression {
EQUALS, CONTAINS, STARTS_WITH, ENDS_WITH
EQUALS("is"),
CONTAINS("contains"),
STARTS_WITH("starts with"),
ENDS_WITH("ends with"),
;
String desc;

Expression(String desc) {
this.desc = desc;
}

@Override
public String toString() {
return desc;
}
}

public static class FilterExpression {
Expand All @@ -28,25 +42,30 @@ public String toString() {
if (column == null) sb.append("*");
else sb.append(column.name().toLowerCase());
sb.append(":");
if (isNotExpression) sb.append("!");
switch (expression) {
case STARTS_WITH:
sb.append("*");
sb.append(value);
break;
case ENDS_WITH:
sb.append(value);
sb.append("*");
break;
case CONTAINS:
sb.append("*");
sb.append(value);
sb.append("*");
break;
default:
sb.append(value);
break;
if (TextUtils.equalsIgnoreCaseAny(value, "*", "")) {
sb.append("*");
} else {
if (isNotExpression) sb.append("!");
switch (expression) {
case STARTS_WITH:
sb.append(value);
sb.append("*");
break;
case ENDS_WITH:
sb.append("*");
sb.append(value);
break;
case CONTAINS:
sb.append("*");
sb.append(value);
sb.append("*");
break;
default:
sb.append(value);
break;
}
}

return sb.toString();
}

Expand All @@ -61,8 +80,8 @@ public boolean isMatch(LogEntry logEntry) {
case PID -> logValue = logEntry.pid;
case LEVEL -> {
logValue = logEntry.level;
if (value != null && expression == Expression.ENDS_WITH) {
//log.trace("isMatch: {}", logValue);
//log.trace("isMatch: {}, val:{}, expr:{}", logValue, value, expression);
if (value != null && expression == Expression.STARTS_WITH) {
switch (value) {
case "D":
return TextUtils.equalsIgnoreCaseAny(logValue, "D", "I", "W", "E");
Expand Down Expand Up @@ -121,45 +140,49 @@ public String toString() {

public static LogFilter parse(String filterText) {
if (filterText == null) return null;
LogFilter filter = null;
LogFilter filter = new LogFilter();
filter.filterList = new ArrayList<>();
// TODO: support more than just "&&" (ie: "||")
String[] filterArr = filterText.split(" && ");
for (String entry : filterArr) {
String[] entryArr = entry.split(":", 2);
String key = entryArr[0].trim();
String value = entryArr[1].trim();
LogFilter.FilterExpression expr = new LogFilter.FilterExpression();
String colName = entryArr[0].toUpperCase();
try {
expr.column = LogsTableModel.Columns.valueOf(colName);
} catch (IllegalArgumentException e) {
if (TextUtils.notEmpty(key)) {
String colName = key.toUpperCase();
try {
expr.column = LogsTableModel.Columns.valueOf(colName);
} catch (IllegalArgumentException e) {
}
}
if (TextUtils.equalsIgnoreCaseAny(value, "*", "")) {
filter.filterList.add(expr);
continue;
}
String value = entryArr[1].trim();
if (TextUtils.isEmpty(value)) continue;
char firstChar = value.charAt(0);
if (firstChar == '!') {
expr.isNotExpression = true;
firstChar = value.charAt(1);
}
if (firstChar == '*') {
expr.expression = Expression.STARTS_WITH;
expr.expression = Expression.ENDS_WITH;
}
char lastChar = value.charAt(value.length() - 1);
if (lastChar == '*' || (expr.column == LogsTableModel.Columns.LEVEL && lastChar == '+')) {
if (expr.expression == Expression.STARTS_WITH) expr.expression = Expression.CONTAINS;
else expr.expression = Expression.ENDS_WITH;
if (expr.expression == Expression.ENDS_WITH) expr.expression = Expression.CONTAINS;
else expr.expression = Expression.STARTS_WITH;
}
int stPos = 0;
if (expr.isNotExpression) stPos++;
if (expr.expression == Expression.STARTS_WITH || expr.expression == Expression.CONTAINS) stPos++;
if (expr.expression == Expression.ENDS_WITH || expr.expression == Expression.CONTAINS) stPos++;

int endPos = value.length();
if (expr.expression == Expression.ENDS_WITH || expr.expression == Expression.CONTAINS) endPos--;
if (expr.expression == Expression.STARTS_WITH || expr.expression == Expression.CONTAINS) endPos--;

expr.value = value.substring(stPos, endPos);

if (filter == null) {
filter = new LogFilter();
filter.filterList = new ArrayList<>();
}
//log.trace("parse: expr:{}", GsonHelper.toJson(expr));
filter.filterList.add(expr);
}
return filter;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.jpage4500.devicemanager.logging;

import org.slf4j.ILoggerFactory;
import org.slf4j.IMarkerFactory;
import org.slf4j.helpers.BasicMarkerFactory;
import org.slf4j.helpers.NOPMDCAdapter;
import org.slf4j.spi.MDCAdapter;
import org.slf4j.spi.SLF4JServiceProvider;

public class AndroidLoggerService implements SLF4JServiceProvider {
/**
* Declare the version of the SLF4J API this implementation is compiled against.
* The value of this field is modified with each major release.
*/
// to avoid constant folding by the compiler, this field must *not* be final
public static String REQUESTED_API_VERSION = "2.0.99"; // !final

private ILoggerFactory loggerFactory;
private IMarkerFactory markerFactory;
private MDCAdapter mdcAdapter;

public ILoggerFactory getLoggerFactory() {
return loggerFactory;
}

@Override
public IMarkerFactory getMarkerFactory() {
return markerFactory;
}

@Override
public MDCAdapter getMDCAdapter() {
return mdcAdapter;
}

@Override
public String getRequestedApiVersion() {
return REQUESTED_API_VERSION;
}

@Override
public void initialize() {
loggerFactory = new AppLoggerFactory();
markerFactory = new BasicMarkerFactory();
mdcAdapter = new NOPMDCAdapter();
}

}
Loading

0 comments on commit e31014e

Please sign in to comment.