package com.abewy.android.apps.klyph.adapter;
import android.util.Log;
import com.abewy.android.adapter.TypeAdapter;
import com.abewy.android.apps.klyph.adapter.fql.AlbumAdapter;
import com.abewy.android.apps.klyph.adapter.fql.BirthdayAdapter;
import com.abewy.android.apps.klyph.adapter.fql.CommentAdapter;
import com.abewy.android.apps.klyph.adapter.fql.EducationAdapter;
import com.abewy.android.apps.klyph.adapter.fql.ElementTimelineAdapter;
import com.abewy.android.apps.klyph.adapter.fql.EventAdapter;
import com.abewy.android.apps.klyph.adapter.fql.EventAdapter2;
import com.abewy.android.apps.klyph.adapter.fql.EventAttendeesAdapter;
import com.abewy.android.apps.klyph.adapter.fql.EventDataAdapter;
import com.abewy.android.apps.klyph.adapter.fql.EventResponseAdapter;
import com.abewy.android.apps.klyph.adapter.fql.FriendAdapter;
import com.abewy.android.apps.klyph.adapter.fql.FriendListAdapter;
import com.abewy.android.apps.klyph.adapter.fql.FriendPickerAdapter;
import com.abewy.android.apps.klyph.adapter.fql.FriendPickerSingleAdapter;
import com.abewy.android.apps.klyph.adapter.fql.FriendRequestAdapter;
import com.abewy.android.apps.klyph.adapter.fql.GroupAdapter;
import com.abewy.android.apps.klyph.adapter.fql.GroupTimelineAdapter;
import com.abewy.android.apps.klyph.adapter.fql.MemberAdapter;
import com.abewy.android.apps.klyph.adapter.fql.MessageAdapter;
import com.abewy.android.apps.klyph.adapter.fql.MessageSessionUserAdapter;
import com.abewy.android.apps.klyph.adapter.fql.NotificationAdapter;
import com.abewy.android.apps.klyph.adapter.fql.PageAdapter;
import com.abewy.android.apps.klyph.adapter.fql.PhotoAdapter;
import com.abewy.android.apps.klyph.adapter.fql.PhotoListAdapter;
import com.abewy.android.apps.klyph.adapter.fql.RelativeAdapter;
import com.abewy.android.apps.klyph.adapter.fql.StreamAdapter;
import com.abewy.android.apps.klyph.adapter.fql.StreamAdapter2;
import com.abewy.android.apps.klyph.adapter.fql.StreamLikeAdapter;
import com.abewy.android.apps.klyph.adapter.fql.TagAdapter;
import com.abewy.android.apps.klyph.adapter.fql.ThreadAdapter;
import com.abewy.android.apps.klyph.adapter.fql.VideoAdapter;
import com.abewy.android.apps.klyph.adapter.fql.WorkAdapter;
import com.abewy.android.apps.klyph.adapter.items.FakeHeaderItemAdapter;
import com.abewy.android.apps.klyph.core.KlyphSession;
import com.abewy.android.apps.klyph.core.fql.Message;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
public class AdapterSelector
{
public static final int STREAM_LIKE_COUNT = 1000;
public static final int EVENT_DATA = 1001;
public static final int EVENT_RESPONSE = 1002;
public static final int EVENT_ATTENDEES = 1003;
public static final int MESSAGE_USER_SESSION = 1004;
public static final int FAKE_HEADER = 1005;
public AdapterSelector()
{
}
static TypeAdapter<GraphObject> getAdapter(GraphObject object, int layoutType, MultiObjectAdapter parentAdapter)
{
TypeAdapter<GraphObject> adapter = BaseAdapterSelector.getAdapter(object, layoutType);
if (adapter != null)
return adapter;
switch (getItemViewType(object))
{
case GraphObject.STREAM:
{
if (layoutType == SpecialLayout.STREAM_DETAIL)
return new StreamAdapter2(parentAdapter, layoutType);
return new StreamAdapter(parentAdapter, layoutType);
}
case GraphObject.NOTIFICATION:
{
return new NotificationAdapter();
}
case GraphObject.ALBUM:
{
return new AlbumAdapter();
}
case GraphObject.GRAPH_COMMENT:
{
return new com.abewy.android.apps.klyph.adapter.graph.CommentAdapter();
}
case GraphObject.COMMENT:
{
return new CommentAdapter();
}
case GraphObject.EDUCATION:
{
return new EducationAdapter();
}
case GraphObject.EVENT:
{
if (layoutType == SpecialLayout.EVENT_ABOUT)
return new EventAdapter2();
return new EventAdapter();
}
case GraphObject.EVENT_RESPONSE:
{
return new EventResponseAdapter();
}
case GraphObject.FRIEND:
{
if (layoutType == SpecialLayout.USER_BIRTHDAY)
return new BirthdayAdapter();
if (layoutType == SpecialLayout.FRIEND_PICKER)
return new FriendPickerAdapter();
if (layoutType == SpecialLayout.FRIEND_PICKER_SINGLE)
return new FriendPickerSingleAdapter();
if (layoutType == SpecialLayout.MEMBER)
return new MemberAdapter();
return new FriendAdapter();
}
case GraphObject.FRIEND_LIST:
{
return new FriendListAdapter();
}
case GraphObject.FRIEND_REQUEST:
{
return new FriendRequestAdapter();
}
case GraphObject.GROUP:
{
if (layoutType == SpecialLayout.ELEMENT_TIMELINE)
return new GroupTimelineAdapter();
return new GroupAdapter();
}
case GraphObject.PAGE:
{
if (layoutType == SpecialLayout.ELEMENT_TIMELINE)
return new ElementTimelineAdapter();
return new PageAdapter();
}
case GraphObject.PHOTO:
{
if (layoutType == SpecialLayout.PHOTO)
return new PhotoAdapter(parentAdapter);
return new PhotoListAdapter();
}
case GraphObject.RELATIVE:
{
return new RelativeAdapter();
}
case GraphObject.USER:
{
return new ElementTimelineAdapter();
}
case GraphObject.MESSAGE_THREAD:
{
return new ThreadAdapter();
}
case GraphObject.MESSAGE:
{
return new MessageAdapter();
}
case MESSAGE_USER_SESSION:
{
return new MessageSessionUserAdapter();
}
case GraphObject.TAG:
{
return new TagAdapter();
}
case GraphObject.VIDEO:
{
return new VideoAdapter();
}
case GraphObject.WORK:
{
return new WorkAdapter();
}
case STREAM_LIKE_COUNT:
{
return new StreamLikeAdapter();
}
case EVENT_DATA:
{
return new EventDataAdapter();
}
case EVENT_RESPONSE:
{
return new EventResponseAdapter();
}
case EVENT_ATTENDEES:
{
return new EventAttendeesAdapter();
}
case FAKE_HEADER:
{
return new FakeHeaderItemAdapter();
}
}
Log.e("AdapterSelector", "No adapter defined for type " + object);
return null;
}
static int getItemViewType(GraphObject object)
{
if (object.getItemViewType() == GraphObject.MESSAGE)
{
if (((Message) object).getAuthor_id().equals(KlyphSession.getSessionUserId()))
{
return MESSAGE_USER_SESSION;
}
return GraphObject.MESSAGE;
}
return object.getItemViewType();
}
}