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