James Moger
2011-05-11 dfb88962fdbd29f59abe92178bb042738d57c3e1
commit | author | age
608ece 1 package com.gitblit.wicket.pages;
JM 2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.apache.wicket.Component;
7 import org.apache.wicket.PageParameters;
8 import org.apache.wicket.markup.html.WebPage;
9 import org.apache.wicket.markup.html.basic.Label;
10 import org.eclipse.jgit.lib.Repository;
11 import org.eclipse.jgit.revwalk.RevCommit;
12
fc948c 13 import com.gitblit.GitBlit;
155bf7 14 import com.gitblit.Keys;
608ece 15 import com.gitblit.utils.JGitUtils;
JM 16 import com.gitblit.wicket.WicketUtils;
17
18 public class RawPage extends WebPage {
19
20     public RawPage(PageParameters params) {
21         super(params);
22
23         if (!params.containsKey("r")) {
24             error("Repository not specified!");
25             redirectToInterceptPage(new RepositoriesPage());
26         }
27         final String repositoryName = WicketUtils.getRepositoryName(params);
155bf7 28         final String objectId = WicketUtils.getObject(params);
608ece 29         final String blobPath = WicketUtils.getPath(params);
JM 30
f5d0ad 31         Repository r = GitBlit.self().getRepository(repositoryName);
608ece 32         if (r == null) {
JM 33             error("Can not load repository " + repositoryName);
34             redirectToInterceptPage(new RepositoriesPage());
35             return;
36         }
37
38         RevCommit commit = JGitUtils.getCommit(r, objectId);
39
40         String extension = null;
41         if (blobPath.lastIndexOf('.') > -1) {
42             extension = blobPath.substring(blobPath.lastIndexOf('.') + 1);
43         }
44
45         // Map the extensions to types
46         Map<String, Integer> map = new HashMap<String, Integer>();
87cc1e 47         for (String ext : GitBlit.self().settings().getStrings(Keys.web.imageExtensions)) {
608ece 48             map.put(ext.toLowerCase(), 2);
JM 49         }
87cc1e 50         for (String ext : GitBlit.self().settings().getStrings(Keys.web.binaryExtensions)) {
608ece 51             map.put(ext.toLowerCase(), 3);
JM 52         }
53
54         if (extension != null) {
55             int type = 0;
56             if (map.containsKey(extension)) {
57                 type = map.get(extension);
58             }
59             Component c = null;
60             switch (type) {
61             case 2:
62                 // TODO image blobs
63                 c = new Label("rawText", "Image File");
64                 break;
65             case 3:
66                 // TODO binary blobs
67                 c = new Label("rawText", "Binary File");
68                 break;
69             default:
70                 // plain text
71                 c = new Label("rawText", JGitUtils.getRawContentAsString(r, commit, blobPath));
72                 WicketUtils.setCssClass(c, "plainprint");
73             }
74             add(c);
75         } else {
76             // plain text
77             Label blobLabel = new Label("rawText", JGitUtils.getRawContentAsString(r, commit, blobPath));
78             WicketUtils.setCssClass(blobLabel, "plainprint");
79             add(blobLabel);
80         }
81         r.close();
155bf7 82     }
608ece 83 }