Pass primary key value to DetailsView.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / place / DetailsPlace.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 com.google.gwt.place.shared.PlaceTokenizer;
23 import com.google.gwt.place.shared.Prefix;
24
25 public class DetailsPlace extends HasSelectableTablePlace {
26         private String primaryKey;
27
28         public DetailsPlace(String documentTitle, String primarykey) {
29                 super(documentTitle);
30                 this.primaryKey = primarykey;
31         }
32
33         public String getPrimaryKey() {
34                 return primaryKey;
35         }
36
37         @Prefix("details")
38         public static class Tokenizer implements PlaceTokenizer<DetailsPlace> {
39
40                 final String title = "title=";
41                 private final String key = "key=";
42                 protected final String seperator = "&";
43
44                 @Override
45                 public String getToken(DetailsPlace place) {
46                         return title + place.getDocumentTitle() + seperator + key + place.getPrimaryKey();
47                 }
48
49                 @Override
50                 public DetailsPlace getPlace(String token) {
51                         String[] tokenArray = token.split(seperator);
52                         String documentTitle = "", primaryKey = "";
53                         if (tokenArray.length != 2)
54                                 return new DetailsPlace(documentTitle, primaryKey);
55
56                         if (title.equals(tokenArray[0].substring(0, title.length()))) {
57                                 documentTitle = tokenArray[0].substring(title.length());
58                         }
59
60                         if (key.equals(tokenArray[1].substring(0, key.length()))) {
61                                 primaryKey = tokenArray[1].substring(key.length());
62                         }
63
64                         return new DetailsPlace(documentTitle, primaryKey);
65                 }
66         }
67
68 }