1 /** 2 * Copyright (c) 2015 The Android Open Source Project 3 * 4 * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * <p>http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * <p>Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 11 * express or implied. See the License for the specific language governing permissions and 12 * limitations under the License. 13 */ 14 package com.android.voicemail.impl.mail.utils; 15 16 import java.io.ByteArrayInputStream; 17 import java.nio.ByteBuffer; 18 import java.nio.CharBuffer; 19 import java.nio.charset.Charset; 20 21 /** Simple utility methods used in email functions. */ 22 public class Utility { 23 public static final Charset ASCII = Charset.forName("US-ASCII"); 24 25 public static final String[] EMPTY_STRINGS = new String[0]; 26 27 /** 28 * Returns a concatenated string containing the output of every Object's toString() method, each 29 * separated by the given separator character. 30 */ combine(Object[] parts, char separator)31 public static String combine(Object[] parts, char separator) { 32 if (parts == null) { 33 return null; 34 } 35 StringBuilder sb = new StringBuilder(); 36 for (int i = 0; i < parts.length; i++) { 37 sb.append(parts[i].toString()); 38 if (i < parts.length - 1) { 39 sb.append(separator); 40 } 41 } 42 return sb.toString(); 43 } 44 45 /** Converts a String to ASCII bytes */ toAscii(String s)46 public static byte[] toAscii(String s) { 47 return encode(ASCII, s); 48 } 49 50 /** Builds a String from ASCII bytes */ fromAscii(byte[] b)51 public static String fromAscii(byte[] b) { 52 return decode(ASCII, b); 53 } 54 encode(Charset charset, String s)55 private static byte[] encode(Charset charset, String s) { 56 if (s == null) { 57 return null; 58 } 59 final ByteBuffer buffer = charset.encode(CharBuffer.wrap(s)); 60 final byte[] bytes = new byte[buffer.limit()]; 61 buffer.get(bytes); 62 return bytes; 63 } 64 decode(Charset charset, byte[] b)65 private static String decode(Charset charset, byte[] b) { 66 if (b == null) { 67 return null; 68 } 69 final CharBuffer cb = charset.decode(ByteBuffer.wrap(b)); 70 return new String(cb.array(), 0, cb.length()); 71 } 72 streamFromAsciiString(String ascii)73 public static ByteArrayInputStream streamFromAsciiString(String ascii) { 74 return new ByteArrayInputStream(toAscii(ascii)); 75 } 76 } 77