Turn the authenication popup into a real Place.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / place / DocumentLoginPlace.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 DocumentLoginPlace extends HasDocumentPlace {
30
31         public DocumentLoginPlace(final String documentID) {
32                 super(documentID);
33         }
34
35         @Prefix("documentlogin")
36         public static class Tokenizer extends HasDocumentPlace.Tokenizer implements PlaceTokenizer<DocumentLoginPlace> {
37
38                 @Override
39                 public String getToken(final DocumentLoginPlace place) {
40                         final HashMap<String, String> params = new HashMap<String, String>();
41                         params.put(documentKey, place.getDocumentID());
42                         return buildParamsToken(params);
43                 }
44
45                 @Override
46                 public DocumentLoginPlace getPlace(final String token) {
47                         // default empty values
48                         String documentID = "";
49
50                         final HashMap<String, String> params = getTokenParams(token);
51
52                         if (params == null) {
53                                 return new DocumentLoginPlace("");
54                         }
55
56                         if (params.get(documentKey) != null) {
57                                 documentID = params.get(documentKey);
58                         }
59
60                         if (StringUtils.isEmpty(documentID)) {
61                                 // The documentID was not retrieved from the URL. Use empty values for the place.
62                                 return new DocumentLoginPlace("");
63                         }
64
65                         return new DocumentLoginPlace(documentID);
66                 }
67         }
68
69 }