001 // Copyright 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 /* 016 * Created on Jul 6, 2005 017 */ 018 package org.apache.tapestry.contrib.table.model.simple; 019 020 import java.util.StringTokenizer; 021 022 import org.apache.hivemind.ApplicationRuntimeException; 023 import org.apache.tapestry.contrib.table.components.TableMessages; 024 import org.apache.tapestry.services.DataSqueezer; 025 import org.apache.tapestry.util.io.SqueezeAdaptor; 026 027 /** 028 * 029 * @author mb 030 */ 031 public class SimpleTableStateAdaptor implements SqueezeAdaptor 032 { 033 034 private static final String PREFIX = "t"; 035 036 /** 037 * @see SqueezeAdaptor#getPrefix() 038 */ 039 public String getPrefix() 040 { 041 return PREFIX; 042 } 043 044 /** 045 * @see SqueezeAdaptor#getDataClass() 046 */ 047 public Class getDataClass() 048 { 049 return SimpleTableState.class; 050 } 051 052 public String squeeze(DataSqueezer squeezer, Object data) 053 { 054 SimpleTableState objState = (SimpleTableState) data; 055 056 StringBuffer buf = new StringBuffer(); 057 buf.append(objState.getPagingState().getPageSize()); 058 buf.append(":"); 059 buf.append(objState.getPagingState().getCurrentPage()); 060 buf.append(":"); 061 String strSortColumn = objState.getSortingState().getSortColumn(); 062 if (strSortColumn == null) 063 strSortColumn = ""; 064 buf.append(strSortColumn); 065 buf.append(":"); 066 buf.append(objState.getSortingState().getSortOrder() ? 'T' : 'F'); 067 068 return buf.toString(); 069 } 070 071 public Object unsqueeze(DataSqueezer squeezer, String string) 072 { 073 StringTokenizer strTok = new StringTokenizer(string, ":"); 074 if (strTok.countTokens() != 4) 075 throw new ApplicationRuntimeException(TableMessages.invalidTableStateFormat(string)); 076 int nPageSize = Integer.parseInt(strTok.nextToken()); 077 int nCurrentPage = Integer.parseInt(strTok.nextToken()); 078 String strSortColumn = strTok.nextToken(); 079 if (strSortColumn.equals("")) 080 strSortColumn = null; 081 boolean bSortOrder = strTok.nextToken().equals("T"); 082 083 return new SimpleTableState(nPageSize, nCurrentPage, strSortColumn, bSortOrder); 084 } 085 086 }