ReportPlace: Actually use the report name.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / place / ReportPlace.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 ReportPlace extends HasRecordsPlace {
30
31         private final String reportName;
32
33         public ReportPlace(final String documentID, final String tableName, final String reportName, final String quickFind) {
34                 super(documentID, tableName, quickFind);
35                 this.reportName = reportName;
36         }
37
38         public String getReportName() {
39                 return reportName;
40         }
41
42         @Prefix("report")
43         public static class Tokenizer extends HasRecordsPlace.Tokenizer implements PlaceTokenizer<ReportPlace> {
44                 protected final String reportKey = "report";
45
46                 @Override
47                 public String getToken(final ReportPlace 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(reportKey, place.getReportName());
52                         params.put(quickFindKey, place.getQuickFind());
53                         return buildParamsToken(params);
54                 }
55
56                 @Override
57                 public ReportPlace getPlace(final String token) {
58                         // default empty values
59                         String documentID = "";
60                         String tableName = ""; // an empty value represents the default table
61                         String reportName = "";
62                         String quickFind = "";
63
64                         final HashMap<String, String> params = getTokenParams(token);
65
66                         if (params == null) {
67                                 return new ReportPlace("", "", "", "");
68                         }
69
70                         if (params.get(documentKey) != null) {
71                                 documentID = params.get(documentKey);
72                         }
73
74                         if (params.get(tableKey) != null) {
75                                 tableName = params.get(tableKey);
76                         }
77
78                         if (params.get(quickFindKey) != null) {
79                                 quickFind = params.get(quickFindKey);
80                         }
81
82                         if (params.get(reportKey) != null) {
83                                 reportName = params.get(reportKey);
84                         }
85
86                         if (StringUtils.isEmpty(documentID)) {
87                                 // The documentID was not retrieved from the URL. Use empty values for the list place.
88                                 return new ReportPlace("", "", "", "");
89                         }
90
91                         return new ReportPlace(documentID, tableName, reportName, quickFind);
92                 }
93         }
94
95 }