Use the ?locale= query param instead of the &lang= token param.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / place / ListPlace.java
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 }