package com.google.gwt.gwtpages.client.page.parameters; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import com.google.gwt.gwtpages.client.Pages; import com.google.gwt.http.client.URL; /** * Simple implementation of the {@link PageParameters} * * @author Joe Hudson */ public class SimplePageParameters implements PageParameters { private Pages pages; public SimplePageParameters (Pages pages) { this.pages = pages; } private String pageToken; private String historyToken; private Serializable[] parameters; private HashMap<String, Serializable> parametersMap; public SimplePageParameters(String pageToken, String historyToken, Serializable[] parameters, HashMap<String, Serializable> parametersMap) { this.pageToken = pageToken; this.historyToken = historyToken; this.parameters = parameters; this.parametersMap = parametersMap; } public String getPageToken() { return pageToken; } public String getHistoryToken() { return historyToken; } public Serializable[] getParameters() { return parameters; } public HashMap<String, Serializable> getParameterMap() { return parametersMap; } public Integer asInteger(int index) { return pages.getSettings().getTokenizer().toInteger(get(index)); } public Long asLong(int index) { return pages.getSettings().getTokenizer().toLong(get(index)); } public Float asFloat(int index) { return pages.getSettings().getTokenizer().toFloat(get(index)); } public Double asDouble(int index) { return pages.getSettings().getTokenizer().toDouble(get(index)); } public String asString(int index) { Serializable rtn = get(index); return (null == rtn) ? null : rtn.toString(); } public Boolean asBoolean(int index) { return pages.getSettings().getTokenizer().toBoolean(get(index)); } public Date asDate(int index) { return pages.getSettings().getTokenizer().toDate(get(index)); } public Date asDateTime(int index) { return pages.getSettings().getTokenizer().toDateTime(get(index)); } public Integer asInteger(String parameterName) { return pages.getSettings().getTokenizer().toInteger(get(parameterName)); } public Long asLong(String parameterName) { return pages.getSettings().getTokenizer().toLong(get(parameterName)); } public Float asFloat(String parameterName) { return pages.getSettings().getTokenizer().toFloat(get(parameterName)); } public Double asDouble(String parameterName) { return pages.getSettings().getTokenizer().toDouble(get(parameterName)); } public String asString(String parameterName) { Serializable rtn = get(parameterName); return (null == rtn) ? null : rtn.toString(); } public Boolean asBoolean(String parameterName) { return pages.getSettings().getTokenizer().toBoolean(get(parameterName)); } public Date asDate(String parameterName) { return pages.getSettings().getTokenizer().toDate(get(parameterName)); } public Date asDateTime(String parameterName) { return pages.getSettings().getTokenizer().toDateTime(get(parameterName)); } private Serializable get(int index) { if (null == parameters || parameters.length <= index) return null; else return parameters[index]; } private Serializable get(String key) { if (null == parametersMap) return null; else return parametersMap.get(key); } public int listSize() { if (null != parameters) return parameters.length; else return 0; } public int mapSize() { if (null != parametersMap) return parametersMap.size(); else return 0; } protected String encode(String s) { return URL.encode(s); } protected String decode(String s) { return URL.decode(s); } }