package com.feedly.cassandra.entity.enhance;
import java.lang.reflect.Field;
import com.feedly.cassandra.anno.Column;
import com.feedly.cassandra.anno.ColumnFamily;
import com.feedly.cassandra.anno.Index;
import com.feedly.cassandra.anno.Indexes;
import com.feedly.cassandra.anno.RowKey;
import com.feedly.cassandra.entity.EntityUtils;
@ColumnFamily(name="indexedbean")
@Indexes({@Index(props = {"strVal", "longVal"}), @Index(props = {"strVal2", "longVal"})})
public class IndexedBean implements Comparable<IndexedBean>
{
@RowKey
private Long rowKey;
@Column(name="c")
private Character charVal;
@Column(name="s", hashIndexed = true)
private String strVal;
@Column(name="s2")
private String strVal2;
@Column(hashIndexed=true)
private int intVal;
@Column
private int intVal2;
@Column(rangeIndexed=true)
private Long longVal;
public Long getRowKey()
{
return rowKey;
}
public void setRowKey(Long rowKey)
{
this.rowKey = rowKey;
}
public String getStrVal()
{
return strVal;
}
public void setStrVal(String strVal)
{
this.strVal = strVal;
}
public int getIntVal()
{
return intVal;
}
public void setIntVal(int intVal)
{
this.intVal = intVal;
}
public Long getLongVal()
{
return longVal;
}
public void setLongVal(Long longVal)
{
this.longVal = longVal;
}
public Character getCharVal()
{
return charVal;
}
public void setCharVal(Character cVal)
{
this.charVal = cVal;
}
public int getIntVal2()
{
return intVal2;
}
public void setIntVal2(int intVal2)
{
this.intVal2 = intVal2;
}
public String getStrVal2()
{
return strVal2;
}
public void setStrVal2(String strVal2)
{
this.strVal2 = strVal2;
}
@Override
public String toString()
{
StringBuilder b = new StringBuilder();
for(Field f : getClass().getDeclaredFields())
{
try
{
b.append(f.getName() + ":" + f.get(this)).append(" ");
}
catch(Exception e)
{
return "error";
}
}
return b.toString();
}
@Override
public boolean equals(Object obj)
{
if(obj instanceof IndexedBean)
return EntityUtils.beanFieldsEqual(this, obj);
return false;
}
@Override
public int compareTo(IndexedBean o)
{
return rowKey.compareTo(o.rowKey);
}
}