1 package fr.ifremer.quadrige3.synchro.server.pages.install;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import com.google.common.base.Function;
28 import com.google.common.collect.Lists;
29 import com.google.common.collect.Ordering;
30 import fr.ifremer.quadrige3.synchro.server.application.WebSession;
31 import fr.ifremer.quadrige3.synchro.server.config.SynchroServerConfiguration;
32 import fr.ifremer.quadrige3.synchro.server.pages.BasePage;
33 import org.apache.commons.lang3.ArrayUtils;
34 import org.apache.wicket.AttributeModifier;
35 import org.apache.wicket.markup.html.WebMarkupContainer;
36 import org.apache.wicket.markup.html.basic.Label;
37 import org.apache.wicket.markup.html.list.ListItem;
38 import org.apache.wicket.markup.html.list.ListView;
39 import org.apache.wicket.model.IModel;
40 import org.apache.wicket.model.LoadableDetachableModel;
41 import org.apache.wicket.model.PropertyModel;
42 import org.apache.wicket.model.StringResourceModel;
43 import org.apache.wicket.request.mapper.parameter.PageParameters;
44
45 import java.io.File;
46 import java.util.List;
47
48 public class InstallPage extends BasePage {
49 private static final long serialVersionUID = 1L;
50
51 public InstallPage(final PageParameters parameters) {
52 super(parameters);
53
54
55 LoadableDetachableModel<List<File>> fileListModel = new LoadableDetachableModel<List<File>>() {
56 private static final long serialVersionUID = 1L;
57
58 @Override
59 protected List<File> load() {
60 return getInstallFiles();
61 }
62 };
63
64
65 ListView<File> fileListView = new ListView<File>("fileList", fileListModel) {
66 private static final long serialVersionUID = 1L;
67
68 @Override
69 protected void populateItem(ListItem<File> item) {
70
71 WebMarkupContainer link = new WebMarkupContainer("fileLink");
72 item.add(link);
73
74 link.add(new AttributeModifier("href", new PropertyModel<String>(item.getModel(), "path")));
75
76
77 link.add(new Label("fileName", new PropertyModel<String>(item.getModel(), "name")));
78 }
79 };
80 add(fileListView);
81 }
82
83
84
85 protected IModel<String> getPageTitleModel() {
86 return new StringResourceModel("install.title", this, null);
87 }
88
89 protected WebSession getWebSession() {
90 return (WebSession)getSession();
91 }
92
93
94
95 protected List<File> getInstallFiles() {
96 List<File> result = Lists.newArrayList();
97
98 SynchroServerConfiguration config = SynchroServerConfiguration.getInstance();
99 File synchroDirectory = config.getSynchroDirectory();
100 if (synchroDirectory.exists()) {
101 String baseUrl = "./download/install";
102
103 File[] files = synchroDirectory.listFiles();
104 if (ArrayUtils.isNotEmpty(files)) {
105 for (File file: files) {
106
107 if (!file.isDirectory()) {
108 File urlFile = new File(baseUrl, file.getName());
109 result.add(urlFile);
110 }
111 }
112 }
113 }
114
115
116 Ordering<File> fileOrdering = Ordering.natural().onResultOf(new Function<File, Comparable>() {
117 public String apply(File file) {
118 return file.getName();
119 }
120 });
121
122 return fileOrdering.sortedCopy(result);
123 }
124 }