All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.archinnov.achilles.logger.ThriftLoggerHelper Maven / Gradle / Ivy

package info.archinnov.achilles.logger;

import info.archinnov.achilles.helper.LoggerHelper;
import info.archinnov.achilles.serializer.ThriftSerializerUtils;

import java.util.ArrayList;
import java.util.List;

import me.prettyprint.hector.api.Serializer;
import me.prettyprint.hector.api.beans.AbstractComposite.Component;
import me.prettyprint.hector.api.beans.Composite;

import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.commons.lang.StringUtils;

import com.google.common.base.Function;

/**
 * ThriftLoggerHelper
 * 
 * @author DuyHai DOAN
 * 
 */
public class ThriftLoggerHelper extends LoggerHelper
{
	public static Function, String> srzToStringFn = new Function, String>()
	{
		public String apply(Serializer srz)
		{
			return srz.getComparatorType().getTypeName();
		}
	};

	public static String format(Composite comp)
	{
		String formatted = "null";
		if (comp != null)
		{
			formatted = format(comp.getComponents());
		}
		return formatted;
	}

	public static String format(List> components)
	{
		String formatted = "[]";
		if (components != null && components.size() > 0)
		{
			List componentsText = new ArrayList();
			int componentNb = components.size();
			for (int i = 0; i < componentNb; i++)
			{
				Component component = components.get(i);
				String componentValue;
				if (component.getSerializer() == ThriftSerializerUtils.BYTE_SRZ)
				{
					componentValue = ByteBufferUtil.getArray(component.getBytes())[0] + "";
				}
				else
				{
					componentValue = component.getValue(component.getSerializer()).toString();
				}

				if (i == componentNb - 1)
				{
					componentsText.add(componentValue + "(" + component.getEquality().name() + ")");
				}
				else
				{
					componentsText.add(componentValue);
				}
			}
			formatted = '[' + StringUtils.join(componentsText, ':') + ']';;
		}
		return formatted;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy