001 package org.granite.tide.data.model;
002
003 import java.io.Externalizable;
004 import java.io.IOException;
005 import java.io.ObjectInput;
006 import java.io.ObjectOutput;
007
008
009 public class PageInfo implements Externalizable {
010
011 private int firstResult;
012 private int maxResults;
013 private SortInfo sortInfo;
014
015
016 public PageInfo() {
017 }
018
019 public PageInfo(int firstResult, int maxResults, String[] order, boolean[] desc) {
020 this.firstResult = firstResult;
021 this.maxResults = maxResults;
022 this.sortInfo = order != null && desc != null && order.length > 0 && desc.length > 0 ? new SortInfo(order, desc) : null;
023 }
024
025
026 public int getFirstResult() {
027 return firstResult;
028 }
029 public void setFirstResult(int firstResult) {
030 this.firstResult = firstResult;
031 }
032
033 public int getMaxResults() {
034 return maxResults;
035 }
036 public void setMaxResults(int maxResults) {
037 this.maxResults = maxResults;
038 }
039
040 public SortInfo getSortInfo() {
041 return sortInfo;
042 }
043 public void setSortInfo(SortInfo sortInfo) {
044 this.sortInfo = sortInfo;
045 }
046
047
048 public void writeExternal(ObjectOutput out) throws IOException {
049 out.writeObject(firstResult);
050 out.writeObject(maxResults);
051 out.writeObject(sortInfo != null ? sortInfo.getOrder() : null);
052 out.writeObject(sortInfo != null ? sortInfo.getDesc() : null);
053 }
054
055 public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
056 firstResult = (Integer)in.readObject();
057 maxResults = (Integer)in.readObject();
058 Object[] oorder = (Object[])in.readObject();
059 Object[] odesc = (Object[])in.readObject();
060 if (oorder == null || odesc == null) {
061 sortInfo = null;
062 return;
063 }
064 String[] order = new String[oorder.length];
065 boolean[] desc = new boolean[oorder.length];
066 int i = 0;
067 for (Object o : oorder)
068 order[i++] = (String)o;
069 i = 0;
070 for (Object d : odesc)
071 desc[i++] = (Boolean)d;
072 sortInfo = new SortInfo(order, desc);
073 }
074
075 }