package com.jspxcms.common.util;
import java.util.List;
import org.springframework.data.domain.Sort;
import org.springframework.util.CollectionUtils;
import com.jspxcms.common.orm.LimitRequest;
import com.jspxcms.common.orm.Limitable;
/**
* 上一条、下一条
*
* @author liufang
*
* @param <T>
*/
public class RowSide<T> {
private T prev;
private T next;
private T self;
public RowSide() {
}
public RowSide(T prev, T self, T next) {
this.prev = prev;
this.self = self;
this.next = next;
}
public static <T> RowSide<T> create(List<T> list, T bean) {
if (CollectionUtils.isEmpty(list) || bean == null) {
return new RowSide<T>();
}
int len = list.size();
if (len == 3 && list.get(1).equals(bean)) {
return new RowSide<T>(list.get(0), list.get(1), list.get(2));
} else if (len == 2) {
if (list.get(0).equals(bean)) {
return new RowSide<T>(null, list.get(0), list.get(1));
} else if (list.get(1).equals(bean)) {
return new RowSide<T>(list.get(0), list.get(0), null);
}
} else if (len == 1 && list.get(0).equals(bean)) {
return new RowSide<T>(null, list.get(0), null);
}
return new RowSide<T>();
}
public static Limitable limitable(int position, Sort sort) {
return new LimitRequest(position == 0 ? position : position - 1,
position == 0 ? 2 : 3, sort);
}
public T getSelf() {
return self;
}
public void setSelf(T self) {
this.self = self;
}
public T getPrev() {
return prev;
}
public void setPrev(T prev) {
this.prev = prev;
}
public T getNext() {
return next;
}
public void setNext(T next) {
this.next = next;
}
}