package com.abewy.android.apps.klyph.core.graph.serializer;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import com.abewy.android.apps.klyph.core.graph.Tag;
import com.abewy.android.apps.klyph.core.graph.GraphObject;

public class TagDeserializer extends Deserializer
{
	@Override
	public GraphObject deserializeObject(JSONObject data)
	{
		Tag tag = new Tag();

		deserializePrimitives(tag, data);

		return tag;
	}

	public Map<String, List<Tag>> deserializeMap(JSONObject data)
	{
		Map<String, List<Tag>> map = new Hashtable<String, List<Tag>>();

		if (data != null)
		{
			for (Iterator iterator = data.keys(); iterator.hasNext();)
			{
				String key = (String) iterator.next();

				JSONArray tags = data.optJSONArray(key);
				map.put(key, deserializeArray(tags, Tag.class));
			}
		}

		return map;
	}

	public Map<String, List<Tag>> deserializeMap(JSONArray data)
	{
		Map<String, List<Tag>> map = new Hashtable<String, List<Tag>>();

		if (data != null)
		{
			int n = data.length();
			for (int i = 0; i < n; i++)
			{
				JSONArray tags = data.optJSONArray(i);
				map.put(String.valueOf(i), deserializeArray(tags, Tag.class));

			}
		}

		return map;
	}
}