• R/O
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revision244 (tree)
Time2016-04-24 21:04:14
Authort_nakayama1971

Log Message

(empty log message)

Change Summary

Incremental Difference

--- trunk/framework/pjWeb/WEB-INF/src/project/web/DownloadBase.java (revision 243)
+++ trunk/framework/pjWeb/WEB-INF/src/project/web/DownloadBase.java (revision 244)
@@ -1,15 +1,20 @@
11 package project.web;
22
33 import java.nio.charset.StandardCharsets;
4+import java.util.ArrayList;
5+import java.util.List;
46 import java.util.Objects;
7+import java.util.Optional;
8+import java.util.function.Function;
59
610 import javax.servlet.http.HttpServletRequest;
711 import javax.servlet.http.HttpServletResponse;
812
13+import core.util.MojiUtil;
14+import core.util.bean.Pair;
915 import online.model.UniModel;
1016 import online.struts.action.RestAction;
1117 import online.view.ViewUtil;
12-import core.util.MojiUtil;
1318
1419 /**
1520 * ダウンロードアクション親
@@ -73,19 +78,26 @@
7378 * @return ダウンロード名
7479 */
7580 protected final String toDownloadName(final String name, final HttpServletRequest request) {
76- if (request.getHeader("User-Agent").contains("Safari")) {
77- return "";
78- }
7981
80- if (request.getHeader("User-Agent").contains("MSIE")
81- || request.getHeader("User-Agent").contains("Trident")
82- || request.getHeader("User-Agent").contains("Chrome")) {
83- String nm = MojiUtil.correctGarbled(name, MojiUtil.CHARSET_W31J);
82+ final Function<String, String> sjis = s -> {
83+ String nm = MojiUtil.correctGarbled(s, MojiUtil.CHARSET_W31J);
8484 return "filename="
8585 + new String(nm.getBytes(MojiUtil.CHARSET_W31J), StandardCharsets.ISO_8859_1);
86- }
86+ };
8787
88- return "filename*=" + StandardCharsets.UTF_8.name() + "''"
89- + ViewUtil.encode(name, StandardCharsets.UTF_8.name());
88+ final Function<String, String> utf8 = s -> {
89+ return "filename*=" + StandardCharsets.UTF_8.name() + "''"
90+ + ViewUtil.encode(s, StandardCharsets.UTF_8.name());
91+ };
92+
93+ List<Pair<String, Function<String, String>>> list = new ArrayList<>();
94+ list.add(new Pair<>(".*Safari.*", (String s) -> ""));
95+ list.add(new Pair<>(".*[MSIE|Trident|Chrome].*", sjis));
96+
97+ final String agent = request.getHeader("User-Agent");
98+ Optional<Pair<String, Function<String, String>>> opt =
99+ list.stream().filter(p -> agent.matches(p.left())).findFirst();
100+ opt.orElse(new Pair<>(".*", utf8));
101+ return opt.get().right().apply(name);
90102 }
91103 }
--- trunk/framework/pjWeb2/WEB-INF/src/project/web/DownloadBase.java (revision 243)
+++ trunk/framework/pjWeb2/WEB-INF/src/project/web/DownloadBase.java (revision 244)
@@ -1,15 +1,20 @@
11 package project.web;
22
33 import java.nio.charset.StandardCharsets;
4+import java.util.ArrayList;
5+import java.util.List;
46 import java.util.Objects;
7+import java.util.Optional;
8+import java.util.function.Function;
59
610 import javax.servlet.http.HttpServletRequest;
711 import javax.servlet.http.HttpServletResponse;
812
13+import core.util.MojiUtil;
14+import core.util.bean.Pair;
915 import online.model.UniModel;
1016 import online.struts.action.RestAction;
1117 import online.view.ViewUtil;
12-import core.util.MojiUtil;
1318
1419 /**
1520 * ダウンロードアクション親
@@ -73,19 +78,26 @@
7378 * @return ダウンロード名
7479 */
7580 protected final String toDownloadName(final String name, final HttpServletRequest request) {
76- if (request.getHeader("User-Agent").contains("Safari")) {
77- return "";
78- }
7981
80- if (request.getHeader("User-Agent").contains("MSIE")
81- || request.getHeader("User-Agent").contains("Trident")
82- || request.getHeader("User-Agent").contains("Chrome")) {
83- String nm = MojiUtil.correctGarbled(name, MojiUtil.CHARSET_W31J);
82+ final Function<String, String> sjis = s -> {
83+ String nm = MojiUtil.correctGarbled(s, MojiUtil.CHARSET_W31J);
8484 return "filename="
8585 + new String(nm.getBytes(MojiUtil.CHARSET_W31J), StandardCharsets.ISO_8859_1);
86- }
86+ };
8787
88- return "filename*=" + StandardCharsets.UTF_8.name() + "''"
89- + ViewUtil.encode(name, StandardCharsets.UTF_8.name());
88+ final Function<String, String> utf8 = s -> {
89+ return "filename*=" + StandardCharsets.UTF_8.name() + "''"
90+ + ViewUtil.encode(s, StandardCharsets.UTF_8.name());
91+ };
92+
93+ List<Pair<String, Function<String, String>>> list = new ArrayList<>();
94+ list.add(new Pair<>(".*Safari.*", (String s) -> ""));
95+ list.add(new Pair<>(".*[MSIE|Trident|Chrome].*", sjis));
96+
97+ final String agent = request.getHeader("User-Agent");
98+ Optional<Pair<String, Function<String, String>>> opt =
99+ list.stream().filter(p -> agent.matches(p.left())).findFirst();
100+ opt.orElse(new Pair<>(".*", utf8));
101+ return opt.get().right().apply(name);
90102 }
91103 }