Skip to content

Commit 4acc84b

Browse files
Missing WPA3 filter and security icon. #267
1 parent 5ed8c11 commit 4acc84b

File tree

5 files changed

+98
-25
lines changed

5 files changed

+98
-25
lines changed

app/build.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#Build Properties
2-
#Sat Oct 12 08:39:34 EDT 2019
2+
#Mon Oct 14 11:24:51 EDT 2019
33
version_minor=0
4-
version_build=9
4+
version_build=10
55
version_patch=8
6-
version_store=49
76
version_major=2
7+
version_store=49

app/src/main/java/com/vrem/wifianalyzer/wifi/model/Security.java

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@
2121
import com.vrem.util.EnumUtils;
2222
import com.vrem.wifianalyzer.R;
2323

24+
import org.apache.commons.collections4.CollectionUtils;
2425
import org.apache.commons.collections4.IterableUtils;
2526
import org.apache.commons.collections4.Predicate;
27+
import org.apache.commons.collections4.PredicateUtils;
28+
import org.apache.commons.collections4.Transformer;
2629

27-
import java.util.ArrayList;
30+
import java.util.Arrays;
2831
import java.util.List;
2932
import java.util.Locale;
3033
import java.util.Set;
@@ -37,29 +40,42 @@ public enum Security {
3740
WPS(R.drawable.ic_lock_outline),
3841
WEP(R.drawable.ic_lock_outline),
3942
WPA(R.drawable.ic_lock),
40-
WPA2(R.drawable.ic_lock);
43+
WPA2(R.drawable.ic_lock),
44+
WPA3(R.drawable.ic_lock, Constants.RSN);
4145

4246
private final int imageResource;
47+
private final String additional;
4348

4449
Security(int imageResource) {
50+
this(imageResource, null);
51+
}
52+
53+
Security(int imageResource, String additional) {
4554
this.imageResource = imageResource;
55+
this.additional = additional;
4656
}
4757

4858
@NonNull
49-
public static List<Security> findAll(String capabilities) {
50-
Set<Security> results = new TreeSet<>();
51-
if (capabilities != null) {
52-
String[] values = capabilities.toUpperCase(Locale.getDefault())
53-
.replace("][", "-").replace("]", "").replace("[", "").split("-");
54-
for (String value : values) {
55-
try {
56-
results.add(Security.valueOf(value));
57-
} catch (Exception e) {
58-
// skip getCapabilities that are not getSecurity
59-
}
60-
}
59+
public static Set<Security> findAll(String capabilities) {
60+
if (capabilities == null) {
61+
return new TreeSet<>();
6162
}
62-
return new ArrayList<>(results);
63+
return new TreeSet<>(
64+
CollectionUtils.select(
65+
CollectionUtils.collect(parseCapabilities(capabilities), new SecurityTransformer()),
66+
PredicateUtils.notNullPredicate()
67+
)
68+
);
69+
}
70+
71+
private static List<String> parseCapabilities(String capabilities) {
72+
return Arrays.asList(capabilities
73+
.toUpperCase(Locale.getDefault())
74+
.replace("][", "-")
75+
.replace("]", "")
76+
.replace("[", "")
77+
.split("-")
78+
);
6379
}
6480

6581
@NonNull
@@ -73,9 +89,9 @@ public int getImageResource() {
7389
}
7490

7591
private static class SecurityPredicate implements Predicate<Security> {
76-
private final List<Security> securities;
92+
private final Set<Security> securities;
7793

78-
private SecurityPredicate(@NonNull List<Security> securities) {
94+
private SecurityPredicate(@NonNull Set<Security> securities) {
7995
this.securities = securities;
8096
}
8197

@@ -85,4 +101,31 @@ public boolean evaluate(Security security) {
85101
}
86102
}
87103

104+
private static class SecurityAdditionalPredicate implements Predicate<Security> {
105+
private final String value;
106+
107+
private SecurityAdditionalPredicate(@NonNull String value) {
108+
this.value = value;
109+
}
110+
111+
@Override
112+
public boolean evaluate(Security security) {
113+
return value.equals(security.additional);
114+
}
115+
}
116+
117+
private static class SecurityTransformer implements Transformer<String, Security> {
118+
@Override
119+
public Security transform(String input) {
120+
try {
121+
return Security.valueOf(input);
122+
} catch (Exception e) {
123+
return IterableUtils.find(EnumUtils.values(Security.class), new SecurityAdditionalPredicate(input));
124+
}
125+
}
126+
}
127+
128+
private static class Constants {
129+
static final String RSN = "RSN";
130+
}
88131
}

app/src/main/res/layout/filter_security.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@
8989
android:textColor="@color/selected"
9090
android:textStyle="bold"/>
9191

92+
<TextView
93+
android:id="@+id/filterSecurityWPA3"
94+
android:layout_width="match_parent"
95+
android:layout_height="wrap_content"
96+
android:layout_weight="1"
97+
android:gravity="center"
98+
android:text="@string/security_wpa3"
99+
android:textColor="@color/selected"
100+
android:textStyle="bold" />
92101
</LinearLayout>
93102

94103
<include layout="@layout/separator_line"/>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@
202202
<string name="security_wep" translatable="false">"WEP"</string>
203203
<string name="security_wpa" translatable="false">"WPA"</string>
204204
<string name="security_wpa2" translatable="false">"WPA2"</string>
205+
<string name="security_wpa3" translatable="false">"WPA3"</string>
205206
<!-- security end -->
206207

207208
<!-- filter start -->

app/src/test/java/com/vrem/wifianalyzer/wifi/model/SecurityTest.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
import org.junit.Test;
2424

2525
import java.util.Arrays;
26-
import java.util.List;
26+
import java.util.Set;
27+
import java.util.TreeSet;
2728

2829
import static org.junit.Assert.assertArrayEquals;
2930
import static org.junit.Assert.assertEquals;
@@ -32,7 +33,7 @@ public class SecurityTest {
3233

3334
@Test
3435
public void testSecurity() {
35-
assertEquals(5, Security.values().length);
36+
assertEquals(6, Security.values().length);
3637
}
3738

3839
@Test
@@ -42,12 +43,29 @@ public void testGetImageResource() {
4243
assertEquals(R.drawable.ic_lock_outline, Security.WEP.getImageResource());
4344
assertEquals(R.drawable.ic_lock, Security.WPA.getImageResource());
4445
assertEquals(R.drawable.ic_lock, Security.WPA2.getImageResource());
46+
assertEquals(R.drawable.ic_lock, Security.WPA3.getImageResource());
4547
}
4648

4749
@Test
4850
public void testFindAll() {
49-
List<Security> expected = Arrays.asList(Security.WPS, Security.WEP, Security.WPA, Security.WPA2);
50-
assertEquals(expected, Security.findAll("WPA-WPA2-WPA-WEP-WPS-WPA2"));
51+
// setup
52+
String capabilities = "WPA-WPA2-WPA-WEP-YZX-WPA3-WPS-WPA2";
53+
Set<Security> expected = new TreeSet<>(Arrays.asList(Security.WPS, Security.WEP, Security.WPA, Security.WPA2, Security.WPA3));
54+
// execute
55+
Set<Security> actual = Security.findAll(capabilities);
56+
// validate
57+
assertEquals(expected, actual);
58+
}
59+
60+
@Test
61+
public void testFindAllWithAdditional() {
62+
// setup
63+
String capabilities = "WPA-WPA2-WPA-WEP-RSN-KPG-WPS-WPA2";
64+
Set<Security> expected = new TreeSet<>(Arrays.asList(Security.WPS, Security.WEP, Security.WPA, Security.WPA2, Security.WPA3));
65+
// execute
66+
Set<Security> actual = Security.findAll(capabilities);
67+
// validate
68+
assertEquals(expected, actual);
5169
}
5270

5371
@Test
@@ -58,11 +76,13 @@ public void testFindOne() {
5876
assertEquals(Security.WEP, Security.findOne(Security.WEP.name()));
5977
assertEquals(Security.WPA, Security.findOne(Security.WPA.name()));
6078
assertEquals(Security.WPA2, Security.findOne(Security.WPA2.name()));
79+
assertEquals(Security.WPA3, Security.findOne(Security.WPA3.name()));
80+
assertEquals(Security.WPA3, Security.findOne("RSN"));
6181
}
6282

6383
@Test
6484
public void testOrder() {
65-
Security[] expected = {Security.NONE, Security.WPS, Security.WEP, Security.WPA, Security.WPA2};
85+
Security[] expected = {Security.NONE, Security.WPS, Security.WEP, Security.WPA, Security.WPA2, Security.WPA3};
6686
assertArrayEquals(expected, Security.values());
6787
}
6888
}

0 commit comments

Comments
 (0)