package com.feedly.cassandra.entity.enhance;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.feedly.cassandra.anno.Column;
import com.feedly.cassandra.anno.ColumnFamily;
import com.feedly.cassandra.anno.RowKey;
import com.feedly.cassandra.anno.UnmappedColumnHandler;
import com.feedly.cassandra.entity.EntityUtils;
@ColumnFamily(name="sample2", compressed=false, forceCompositeColumns=true)
public class SampleBean2 implements Cloneable, Comparable<SampleBean2>
{
@RowKey
private Long rowKey;
@Column(name="s")
private String strVal;
@Column
private int intVal;
@Column(ttl=2)
private int ttlVal;
@Column(name="l")
private long longVal;
@Column
private float floatVal;
@Column(name="d")
private double doubleVal;
@Column
private char charVal;
@Column(hashIndexed=true)
private boolean boolVal;
@Column
private Date dateVal;
@Column
private ESampleEnum sampleEnum;
private int notSaved; //transient
@UnmappedColumnHandler
Map<String, Object> unmapped;
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 float getFloatVal()
{
return floatVal;
}
public void setFloatVal(float floatVal)
{
this.floatVal = floatVal;
}
public double getDoubleVal()
{
return doubleVal;
}
public void setDoubleVal(double doubleVal)
{
this.doubleVal = doubleVal;
}
public boolean getBoolVal()
{
return boolVal;
}
public void setBoolVal(boolean boolVal)
{
this.boolVal = boolVal;
}
public Date getDateVal()
{
return dateVal;
}
public void setDateVal(Date dateVal)
{
this.dateVal = dateVal;
}
public int getNotSaved()
{
return notSaved;
}
public void setNotSaved(int notSaved)
{
this.notSaved = notSaved;
}
public char getCharVal()
{
return charVal;
}
public void setCharVal(char charVal)
{
this.charVal = charVal;
}
@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 SampleBean2)
return EntityUtils.beanFieldsEqual(this, obj);
return false;
}
@Override
public int compareTo(SampleBean2 o)
{
return rowKey.compareTo(o.rowKey);
}
public Map<String, Object> getUnmapped()
{
return unmapped;
}
public void setUnmapped(Map<String, Object> unmapped)
{
this.unmapped = unmapped;
}
@Override
public Object clone() throws CloneNotSupportedException
{
SampleBean2 clone = (SampleBean2) super.clone();
clone.unmapped = new HashMap<String, Object>(unmapped);
clone.dateVal = (Date) dateVal.clone();
return clone;
}
public ESampleEnum getSampleEnum()
{
return sampleEnum;
}
public void setSampleEnum(ESampleEnum sampleEnum)
{
this.sampleEnum = sampleEnum;
}
public int getTtlVal()
{
return ttlVal;
}
public void setTtlVal(int ttlVal)
{
this.ttlVal = ttlVal;
}
}