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