package com.abewy.android.apps.klyph.messenger.adapter;
import android.util.Log;
import com.abewy.android.adapter.TypeAdapter;
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;
import com.abewy.android.apps.klyph.messenger.service.PRosterEntry;
public class AdapterSelector
{
private static final int MESSAGE_USER_SESSION = 1001;
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.MESSAGE_THREAD:
{
return new ThreadAdapter();
}
case GraphObject.MESSAGE:
{
return new ConversationAdapter();
}
case MESSAGE_USER_SESSION:
{
return new ConversationSessionUserAdapter();
}
case PRosterEntry.ROSTER_ENTRY_TYPE:
{
return new RosterEntryAdapter();
}
}
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();
}
}