package com.cxy.redisclient.domain;
import com.cxy.redisclient.dto.Order;
import com.cxy.redisclient.dto.OrderBy;
public class DataNode extends Node {
@Override
public int compareTo(Node o) {
int result = 0;
DataNode dataNode = (DataNode) o;
Integer id1 = new Integer(id);
Integer id2 = new Integer(o.getId());
result = id1.compareTo(id2);
if(result == 0){
Integer db1 = new Integer(db);
Integer db2 = new Integer(o.getDb());
result = db1.compareTo(db2);
if(result == 0) {
switch (orderBy) {
case NAME:
result = this.getKey().compareTo(dataNode.getKey());
break;
case TYPE:
result = this.getType().compareTo(dataNode.getType());
if (result == 0)
result = this.getKey().compareTo(dataNode.getKey());
break;
case SIZE:
Long l1 = this.getSize();
Long l2 = dataNode.getSize();
result = l1.compareTo(l2);
if (result == 0)
result = this.getKey().compareTo(dataNode.getKey());
break;
default:
break;
}
}
}
if (order == Order.Ascend)
return result;
else
return result * -1;
}
private long size;
private boolean persist;
private OrderBy orderBy;
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public boolean isPersist() {
return persist;
}
public void setPersist(boolean persist) {
this.persist = persist;
}
public DataNode(int id, int db, String key, NodeType type, long size, boolean persist,
Order order, OrderBy orderBy) {
super(id, db, key, type, order);
this.size = size;
this.persist = persist;
this.orderBy = orderBy;
}
}