/* * Copyright 2014 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.samples.apps.iosched.util; import android.content.ContentProvider; import android.net.Uri; import android.text.format.Time; import java.util.ArrayList; import java.util.regex.Pattern; /** * Various utility methods used by {@link com.google.samples.apps.iosched.io.JSONHandler}. */ public class ParserUtils { /** Used to sanitize a string to be {@link Uri} safe. */ private static final Pattern sSanitizePattern = Pattern.compile("[^a-z0-9-_]"); private static final Time sTime = new Time(); /** * Sanitize the given string to be {@link Uri} safe for building * {@link ContentProvider} paths. */ public static String sanitizeId(String input) { if (input == null) { return null; } return sSanitizePattern.matcher(input.replace("+", "plus").toLowerCase()).replaceAll(""); } /** * Parse the given string as a RFC 3339 timestamp, returning the value as * milliseconds since the epoch. */ public static long parseTime(String time) { sTime.parse3339(time); return sTime.toMillis(false); } public static String joinStrings(String connector, ArrayList<String> strings, StringBuilder recycle) { if (strings.size() <= 0) { return ""; } if (recycle == null) { recycle = new StringBuilder(); } else { recycle.setLength(0); } recycle.append(strings.get(0)); for (int i = 1; i < strings.size(); i++) { recycle.append(connector); recycle.append(strings.get(i)); } return recycle.toString(); } }