/* * Copyright (c) 2016 Google Inc. * * 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.explore.data; import android.database.Cursor; import android.support.annotation.Nullable; import com.google.common.base.Strings; import com.google.samples.apps.iosched.provider.ScheduleContract; import java.util.HashSet; import java.util.Set; import static com.google.samples.apps.iosched.util.LogUtils.LOGD; import static com.google.samples.apps.iosched.util.LogUtils.makeLogTag; public class EventCard { public static final String ACTION_TYPE_LINK = "LINK"; public static final String ACTION_TYPE_MAP = "MAP"; public static final String ACTION_TYPE_SESSION = "SESSION"; public static final Set<String> VALID_ACTION_TYPES = new HashSet<>(); private static final String TAG = makeLogTag(EventCard.class); static { VALID_ACTION_TYPES.add(ACTION_TYPE_SESSION); VALID_ACTION_TYPES.add(ACTION_TYPE_MAP); VALID_ACTION_TYPES.add(ACTION_TYPE_LINK); } private String mActionExtra; private String mActionString; private String mActionType; private String mActionUrl; private String mDescription; private String mTitle; private EventCard(final String title, final String actionString, final String actionUrl, final String description, final String actionType, final String actionExtra) { mTitle = title; mActionString = actionString; mActionUrl = actionUrl; mDescription = description; mActionType = actionType; mActionExtra = actionExtra; } public String getActionExtra() { return mActionExtra; } public String getActionString() { return mActionString; } public String getActionType() { return mActionType; } public String getActionUrl() { return mActionUrl; } public String getDescription() { return mDescription; } public String getTitle() { return mTitle; } public boolean isValid() { return isValid(this); } @Override public String toString() { return "EventCard{" + "mTitle='" + mTitle + '\'' + ", mDescription='" + mDescription + '\'' + ", mActionUrl='" + mActionUrl + '\'' + ", mActionString='" + mActionString + '\'' + ", mActionType='" + mActionType + '\'' + ", mActionExtra='" + mActionExtra + '\'' + '}'; } @Nullable public static EventCard fromCursorRow(Cursor cursor) { // TODO: Validate parameters and return null. EventCard card = new EventCard( cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.TITLE)), cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.ACTION_TEXT)), cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.ACTION_URL)), cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.MESSAGE)), cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.ACTION_TYPE)), cursor.getString(cursor.getColumnIndex(ScheduleContract.Cards.ACTION_EXTRA))); if (!isValid(card)) { LOGD(TAG, "Invalid card loaded from database:" + card); return null; } return card; } public static boolean isValid(final EventCard card) { if (ACTION_TYPE_SESSION.equalsIgnoreCase(card.getActionType()) && Strings.isNullOrEmpty(card.getActionExtra())) { return false; } if (!VALID_ACTION_TYPES.contains(card.getActionType())) { return false; } return true; } }