Merge branch 'reports'
[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 HasRecordsPlace {
30
31         public ListPlace(final String documentID, final String tableName, final String quickFind) {
32                 super(documentID, tableName, quickFind);
33         }
34
35         @Prefix("list")
36         public static class Tokenizer extends HasRecordsPlace.Tokenizer implements PlaceTokenizer<ListPlace> {
37
38                 @Override
39                 public String getToken(final ListPlace place) {
40                         final HashMap<String, String> params = new HashMap<String, String>();
41                         params.put(documentKey, place.getDocumentID());
42                         params.put(tableKey, place.getTableName());
43                         params.put(quickFindKey, place.getQuickFind());
44                         return buildParamsToken(params);
45                 }
46
47                 @Override
48                 public ListPlace getPlace(final String token) {
49                         // default empty values
50                         String documentID = "";
51                         String tableName = ""; // an empty value represents the default table
52                         String quickFind = "";
53
54                         final HashMap<String, String> params = getTokenParams(token);
55
56                         if (params == null) {
57                                 return new ListPlace("", "", "");
58                         }
59
60                         if (params.get(documentKey) != null) {
61                                 documentID = params.get(documentKey);
62                         }
63
64                         if (params.get(tableKey) != null) {
65                                 tableName = params.get(tableKey);
66                         }
67
68                         if (params.get(quickFindKey) != null) {
69                                 quickFind = params.get(quickFindKey);
70                         }
71
72                         if (StringUtils.isEmpty(documentID)) {
73                                 // The documentID was not retrieved from the URL. Use empty values for the list place.
74                                 return new ListPlace("", "", "");
75                         }
76
77                         return new ListPlace(documentID, tableName, quickFind);
78                 }
79         }
80
81 }