Fix a crasher when refreshing the list view with the default table.
[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 com.google.gwt.place.shared.PlaceTokenizer;
25 import com.google.gwt.place.shared.Prefix;
26
27 public class ListPlace extends HasSelectableTablePlace {
28
29         public ListPlace(String documentID, String tableName) {
30                 super(documentID, tableName);
31         }
32
33         @Prefix("list")
34         public static class Tokenizer extends HasSelectableTablePlace.Tokenizer implements PlaceTokenizer<ListPlace> {
35
36                 @Override
37                 public String getToken(ListPlace place) {
38                         HashMap<String, String> params = new HashMap<String, String>();
39                         params.put(documentKey, place.getDocumentID());
40                         params.put(tableKey, place.getTableName());
41                         return buildParamsToken(params);
42                 }
43
44                 @Override
45                 public ListPlace getPlace(String token) {
46                         // default empty values
47                         String documentID = "";
48                         String tableName = ""; // an empty value represents the default table
49
50                         HashMap<String, String> params = getTokenParams(token);
51
52                         if (params == null) {
53                                 return new ListPlace("", "");
54                         }
55
56                         if (params.get(documentKey) != null) {
57                                 documentID = params.get(documentKey);
58                         }
59
60                         if (params.get(tableKey) != null) {
61                                 tableName = params.get(tableKey);
62                         }
63
64                         if ((documentID.isEmpty())) {
65                                 // The documentID was not retrieved from the URL. Use empty values for the list place.
66                                 return new ListPlace("", "");
67                         }
68
69                         return new ListPlace(documentID, tableName);
70                 }
71         }
72
73 }