1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.web.admin.systeminfo;
17
18 import java.util.ArrayList;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22
23 import javax.annotation.Resource;
24
25 import org.codelibs.core.lang.StringUtil;
26 import org.codelibs.core.misc.DynamicProperties;
27 import org.codelibs.fess.Constants;
28 import org.codelibs.fess.app.web.base.FessAdminAction;
29 import org.codelibs.fess.util.ComponentUtil;
30 import org.codelibs.fess.util.RenderDataUtil;
31 import org.lastaflute.web.Execute;
32 import org.lastaflute.web.response.HtmlResponse;
33 import org.lastaflute.web.response.render.RenderData;
34 import org.lastaflute.web.ruts.process.ActionRuntime;
35
36
37
38
39 public class AdminSysteminfoAction extends FessAdminAction {
40
41
42
43
44 @Resource
45 protected DynamicProperties systemProperties;
46
47 private static final String[] bugReportLabels = { "file.separator", "file.encoding", "java.runtime.version", "java.vm.info",
48 "java.vm.name", "java.vm.vendor", "java.vm.version", "os.arch", "os.name", "os.version", "user.country", "user.language",
49 "user.timezone" };
50
51
52
53
54 @Override
55 protected void setupHtmlData(final ActionRuntime runtime) {
56 super.setupHtmlData(runtime);
57 runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameSysteminfo()));
58 }
59
60
61
62
63 @Execute
64 public HtmlResponse index() {
65 return asHtml(path_AdminSysteminfo_AdminSysteminfoJsp).renderWith(data -> {
66 registerEnvItems(data);
67 registerPropItems(data);
68 registerFessPropItems(data);
69 registerBugReportItems(data);
70 });
71 }
72
73
74
75
76
77 protected void registerEnvItems(final RenderData data) {
78 RenderDataUtil.register(data, "envItems", getEnvItems());
79 }
80
81 protected void registerPropItems(final RenderData data) {
82 RenderDataUtil.register(data, "propItems", getPropItems());
83 }
84
85 protected void registerFessPropItems(final RenderData data) {
86 RenderDataUtil.register(data, "fessPropItems", getFessPropItems());
87 }
88
89 protected void registerBugReportItems(final RenderData data) {
90 RenderDataUtil.register(data, "bugReportItems", getBugReportItems());
91 }
92
93 public static List<Map<String, String>> getEnvItems() {
94 final List<Map<String, String>> itemList = new ArrayList<>();
95 for (final Map.Entry<String, String> entry : System.getenv().entrySet()) {
96 itemList.add(createItem(entry.getKey(), entry.getValue()));
97 }
98 return itemList;
99 }
100
101 public static List<Map<String, String>> getPropItems() {
102 final List<Map<String, String>> itemList = new ArrayList<>();
103 for (final Map.Entry<Object, Object> entry : System.getProperties().entrySet()) {
104 itemList.add(createItem(entry.getKey(), entry.getValue()));
105 }
106 return itemList;
107 }
108
109 public static List<Map<String, String>> getFessPropItems() {
110 final List<Map<String, String>> itemList = new ArrayList<>();
111 final DynamicProperties systemProperties = ComponentUtil.getSystemProperties();
112 for (final Map.Entry<Object, Object> entry : systemProperties.entrySet()) {
113 itemList.add(createItem(entry.getKey(), entry.getValue()));
114 }
115 return itemList;
116 }
117
118 public static List<Map<String, String>> getBugReportItems() {
119 final List<Map<String, String>> itemList = new ArrayList<>();
120 for (final String label : bugReportLabels) {
121 itemList.add(createPropItem(label));
122 }
123
124 final DynamicProperties systemProperties = ComponentUtil.getSystemProperties();
125 for (final Map.Entry<Object, Object> entry : systemProperties.entrySet()) {
126 if (isBugReportTarget(entry.getKey())) {
127 itemList.add(createItem(entry.getKey(), entry.getValue()));
128 }
129 }
130
131 return itemList;
132 }
133
134 private static boolean isBugReportTarget(final Object key) {
135 if ("snapshot.path".equals(key) || "label.value".equals(key)) {
136 return false;
137 }
138 return true;
139 }
140
141 protected static Map<String, String> createPropItem(final String key) {
142 return createItem(key, System.getProperty(key));
143 }
144
145 protected static Map<String, String> createItem(final Object label, final Object value) {
146 final Map<String, String> map = new HashMap<>(2);
147 map.put(Constants.ITEM_LABEL, label != null ? label.toString() : StringUtil.EMPTY);
148 map.put(Constants.ITEM_VALUE, value != null ? value.toString() : StringUtil.EMPTY);
149 return map;
150 }
151
152 }