/*
* Copyright 2016 Gleb Godonoga.
*
* 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.andrada.sitracker.contracts;
import android.net.Uri;
import java.util.List;
public class AppUriContract {
public static class Authors {
public static final String CONTENT_TYPE =
"vnd.android.cursor.dir/vnd.sitracker.author";
public static final String CONTENT_ITEM_TYPE =
"vnd.android.cursor.item/vnd.sitracker.author";
}
public static class Publications {
public static final String CONTENT_TYPE =
"vnd.android.cursor.dir/vnd.sitracker.publication";
public static final String CONTENT_ITEM_TYPE =
"vnd.android.cursor.item/vnd.sitracker.publication";
}
private static final String PATH_SEARCH_SAMLIB = "search";
private static final String PATH_AUTHORS = "authors";
private static final String PATH_PUBLICATIONS = "publications";
public static final String CONTENT_AUTHORITY = "com.andrada.sitracker";
public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);
public static final Uri AUTHOR_CONTENT_URI = BASE_CONTENT_URI.buildUpon().appendPath(PATH_AUTHORS).build();
public static final Uri PUBLICATION_CONTENT_URI = BASE_CONTENT_URI.buildUpon().appendPath(PATH_PUBLICATIONS).build();
public static Uri buildSamlibSearchUri(String query, int searchType) {
if (query == null) {
query = "";
}
// convert "lorem ipsum dolor sit" to "lorem* ipsum* dolor* sit*"
query = query.replaceAll(" +", " *") + "*";
return AUTHOR_CONTENT_URI.buildUpon()
.appendPath(PATH_SEARCH_SAMLIB).appendPath(query)
.appendQueryParameter("type", String.valueOf(searchType)).build();
}
public static Uri buildAuthorUri(long authorId, String authorName) {
return AUTHOR_CONTENT_URI.buildUpon().appendPath(String.valueOf(authorId)).appendPath(authorName).build();
}
public static Uri buildPublicationUri(long publicationId) {
return PUBLICATION_CONTENT_URI.buildUpon().appendPath(String.valueOf(publicationId)).build();
}
public static long getAuthorId(Uri uri) {
return Long.valueOf(uri.getPathSegments().get(1));
}
public static String getAuthorName(Uri uri) {
return uri.getPathSegments().get(2);
}
public static long getPublicationId(Uri uri) {
return Long.valueOf(uri.getPathSegments().get(1));
}
public static String getSearchQuery(Uri uri) {
List<String> segments = uri.getPathSegments();
if (2 < segments.size()) {
return segments.get(2);
}
return null;
}
public static int getSearchTypeParam(Uri uri) {
return Integer.valueOf(uri.getQueryParameter("type"));
}
public static String getSanitizedSearchQuery(Uri uri) {
String query = getSearchQuery(uri);
if (query != null) {
query = query.replaceAll("\\*", "");
}
return query;
}
public static boolean isSearchUri(Uri uri) {
List<String> pathSegments = uri.getPathSegments();
return pathSegments.size() >= 2 && PATH_SEARCH_SAMLIB.equals(pathSegments.get(1));
}
}