package org.eclipse.core.internal.content;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import org.eclipse.core.runtime.content.IContentDescription;
public class Util {
public static String[] parseItems(String string) {
return parseItems(string, ",");
}
public static String[] parseItems(String string, String separator) {
if (string == null)
return new String[0];
StringTokenizer tokenizer = new StringTokenizer(string, separator, true);
if (!tokenizer.hasMoreTokens())
return new String[] {string.trim()};
String first = tokenizer.nextToken().trim();
boolean wasSeparator = false;
if (first.equals(separator)) {
first = "";
wasSeparator = true;
}
if (!tokenizer.hasMoreTokens())
return wasSeparator ? new String[] {first, first} : new String[] {first};
ArrayList<String> items = new ArrayList<>();
items.add(first);
String current;
do {
current = tokenizer.nextToken().trim();
boolean isSeparator = current.equals(separator);
if (isSeparator) {
if (wasSeparator)
items.add("");
} else
items.add(current);
wasSeparator = isSeparator;
} while (tokenizer.hasMoreTokens());
if (wasSeparator)
items.add("");
return items.toArray(new String[items.size()]);
}
public static List<String> parseItemsIntoList(String string) {
return parseItemsIntoList(string, ",");
}
public static List<String> parseItemsIntoList(String string, String separator) {
List<String> items = new ArrayList<>(5);
if (string == null)
return items;
StringTokenizer tokenizer = new StringTokenizer(string, separator, true);
if (!tokenizer.hasMoreTokens()) {
items.add(string.trim());
return items;
}
String first = tokenizer.nextToken().trim();
boolean wasSeparator = false;
if (first.equals(separator)) {
first = "";
wasSeparator = true;
}
items.add(first);
if (!tokenizer.hasMoreTokens())
return items;
String current;
do {
current = tokenizer.nextToken().trim();
boolean isSeparator = current.equals(separator);
if (isSeparator) {
if (wasSeparator)
items.add("");
} else
items.add(current);
wasSeparator = isSeparator;
} while (tokenizer.hasMoreTokens());
if (wasSeparator)
items.add("");
return items;
}
public static String toListString(Object[] list) {
return toListString(list, ",");
}
public static String toListString(Object[] list, String separator) {
if (list == null || list.length == 0)
return null;
StringBuilder result = new StringBuilder();
for (Object element : list) {
result.append(element);
result.append(separator);
}
return result.substring(0, result.length() - 1);
}
public static byte[] getByteOrderMark(InputStream input) throws IOException {
int first = input.read();
switch (first) {
case 0xEF:
int second = input.read();
int third = input.read();
if (second == 0xBB && third == 0xBF)
return IContentDescription.BOM_UTF_8;
break;
case 0xFE:
if (input.read() == 0xFF)
return IContentDescription.BOM_UTF_16BE;
break;
case 0xFF:
if (input.read() == 0xFE)
return IContentDescription.BOM_UTF_16LE;
break;
default:
break;
}
return null;
}
}