1
/*
2
 * Copyright (C) 2011 Openismus GmbH
3
 *
4
 * This file is part of GWT-Glom.
5
 *
6
 * GWT-Glom is free software: you can redistribute it and/or modify it
7
 * under the terms of the GNU Lesser General Public License as published by the
8
 * Free Software Foundation, either version 3 of the License, or (at your
9
 * option) any later version.
10
 *
11
 * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14
 * for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public License
17
 * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
20
package org.glom.web.client.place;
21
22
import java.util.HashMap;
23
24
import org.glom.web.client.StringUtils;
25
26
import com.google.gwt.place.shared.PlaceTokenizer;
27
import com.google.gwt.place.shared.Prefix;
28
29
public class ListPlace extends HasSelectableTablePlace {
30
31
	private final String quickFind;
32
33
	public ListPlace(final String documentID, final String tableName, final String quickFind) {
34
		super(documentID, tableName);
35
		this.quickFind = quickFind;
36
	}
37
38
	public String getQuickFind() {
39
		return quickFind;
40
	}
41
42
	@Prefix("list")
43
	public static class Tokenizer extends HasSelectableTablePlace.Tokenizer implements PlaceTokenizer<ListPlace> {
44
		protected final String quickFindKey = "quickfind";
45
46
		@Override
47
		public String getToken(final ListPlace place) {
48
			final HashMap<String, String> params = new HashMap<String, String>();
49
			params.put(documentKey, place.getDocumentID());
50
			params.put(tableKey, place.getTableName());
51
			params.put(quickFindKey, place.getQuickFind());
52
			return buildParamsToken(params);
53
		}
54
55
		@Override
56
		public ListPlace getPlace(final String token) {
57
			// default empty values
58
			String documentID = "";
59
			String tableName = ""; // an empty value represents the default table
60
			String quickFind = "";
61
62
			final HashMap<String, String> params = getTokenParams(token);
63
64
			if (params == null) {
65
				return new ListPlace("", "", "");
66
			}
67
68
			if (params.get(documentKey) != null) {
69
				documentID = params.get(documentKey);
70
			}
71
72
			if (params.get(tableKey) != null) {
73
				tableName = params.get(tableKey);
74
			}
75
76
			if (params.get(quickFindKey) != null) {
77
				quickFind = params.get(quickFindKey);
78
			}
79
80
			if (StringUtils.isEmpty(documentID)) {
81
				// The documentID was not retrieved from the URL. Use empty values for the list place.
82
				return new ListPlace("", "", "");
83
			}
84
85
			return new ListPlace(documentID, tableName, quickFind);
86
		}
87
	}
88
89
}