Utils.java revision 71a988c8e9859244b83cd55bb6b6ee913fcaf95c
1package com.android.server.wifi.hotspot2;
2
3import com.android.server.wifi.anqp.Constants;
4
5import java.util.Calendar;
6import java.util.Collection;
7import java.util.LinkedList;
8import java.util.List;
9import java.util.TimeZone;
10
11public abstract class Utils {
12    public static List<String> splitDomain(String domain) {
13
14        if (domain.endsWith("."))
15            domain = domain.substring(0, domain.length() - 1);
16        int at = domain.indexOf('@');
17        if (at >= 0)
18            domain = domain.substring(at + 1);
19
20        String[] labels = domain.toLowerCase().split("\\.");
21        LinkedList<String> labelList = new LinkedList<String>();
22        for (String label : labels) {
23            labelList.addFirst(label);
24        }
25
26        return labelList;
27    }
28
29    public static String roamingConsortiumsToString(Collection<Long> ois) {
30        StringBuilder sb = new StringBuilder();
31        boolean first = true;
32        for (long oi : ois) {
33            if (first) {
34                first = false;
35            } else {
36                sb.append(", ");
37            }
38            if (Long.numberOfLeadingZeros(oi) > 40) {
39                sb.append(String.format("%09x", oi));
40            } else {
41                sb.append(String.format("%06x", oi));
42            }
43        }
44        return sb.toString();
45    }
46
47    public static String toHexString(byte[] data) {
48        if (data == null) {
49            return "null";
50        }
51        StringBuilder sb = new StringBuilder(data.length * 3);
52
53        boolean first = true;
54        for (byte b : data) {
55            if (first) {
56                first = false;
57            } else {
58                sb.append(' ');
59            }
60            sb.append(String.format("%02x", b & Constants.BYTE_MASK));
61        }
62        return sb.toString();
63    }
64
65    public static String toUTCString(long ms) {
66        if (ms < 0) {
67            return "unset";
68        }
69        Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
70        c.setTimeInMillis(ms);
71        return String.format("%4d/%02d/%02d %2d:%02d:%02dZ",
72                c.get(Calendar.YEAR),
73                c.get(Calendar.MONTH) + 1,
74                c.get(Calendar.DAY_OF_MONTH),
75                c.get(Calendar.HOUR_OF_DAY),
76                c.get(Calendar.MINUTE),
77                c.get(Calendar.SECOND));
78    }
79}
80