3627b16a4d2e23c337c671903f9920bfab0b01b7
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / toolRegistry / ui / ToolSelectorController.java
1 /*\r
2  * Copyright 2000-2011 JetBrains s.r.o.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package jetbrains.buildServer.nuget.server.toolRegistry.ui;\r
18 \r
19 import jetbrains.buildServer.controllers.BaseController;\r
20 import jetbrains.buildServer.controllers.BasePropertiesBean;\r
21 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetInstalledTool;\r
22 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetToolManager;\r
23 import jetbrains.buildServer.nuget.server.toolRegistry.tab.ServerSettingsTab;\r
24 import jetbrains.buildServer.util.StringUtil;\r
25 import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
26 import jetbrains.buildServer.web.openapi.WebControllerManager;\r
27 import org.jetbrains.annotations.NotNull;\r
28 import org.jetbrains.annotations.Nullable;\r
29 import org.springframework.web.servlet.ModelAndView;\r
30 \r
31 import javax.servlet.http.HttpServletRequest;\r
32 import javax.servlet.http.HttpServletResponse;\r
33 import java.util.ArrayList;\r
34 import java.util.Collection;\r
35 \r
36 /**\r
37  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
38  * Date: 16.08.11 10:21\r
39  */\r
40 public class ToolSelectorController extends BaseController {\r
41   private final NuGetToolManager myToolManager;\r
42   private final PluginDescriptor myDescriptor;\r
43   private final String myPath;\r
44 \r
45   public ToolSelectorController(@NotNull final NuGetToolManager toolManager,\r
46                                 @NotNull final PluginDescriptor descriptor,\r
47                                 @NotNull final WebControllerManager web) {\r
48     myToolManager = toolManager;\r
49     myDescriptor = descriptor;\r
50     myPath = descriptor.getPluginResourcesPath("tool/runnerSettings.html");\r
51     web.registerController(myPath, this);\r
52   }\r
53 \r
54   @NotNull\r
55   public String getPath() {\r
56     return myPath;\r
57   }\r
58 \r
59   @Override\r
60   protected ModelAndView doHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {\r
61     final String name = safe(request.getParameter("name"));\r
62     String value = parseValue(request, name);\r
63     final Collection<ToolInfo> tools = getTools();\r
64     ensureVersion(value, tools);\r
65 \r
66 \r
67     ModelAndView mv = new ModelAndView(myDescriptor.getPluginResourcesPath("tool/runnerSettings.jsp"));\r
68     mv.getModel().put("name", name);\r
69     mv.getModel().put("value", value);\r
70     mv.getModel().put("clazz", safe(request.getParameter("class")));\r
71     mv.getModel().put("style", safe(request.getParameter("style")));\r
72     mv.getModel().put("items", tools);\r
73     mv.getModel().put("settingsUrl", "/admin/serverConfig.html?init=1&tab=" + ServerSettingsTab.TAB_ID);\r
74     return mv;\r
75   }\r
76 \r
77   private void ensureVersion(@NotNull final String version, @NotNull Collection<ToolInfo> actionInfos) {\r
78     if (!version.startsWith("?")) return;\r
79     for (ToolInfo actionInfo : actionInfos) {\r
80       if (actionInfo.getId().equals(version)) return;\r
81     }\r
82     actionInfos.add(new ToolInfo(version, "Not Installed: " + version.substring(1)));\r
83   }\r
84 \r
85   @NotNull\r
86   private Collection<ToolInfo> getTools() {\r
87     final ArrayList<ToolInfo> result = new ArrayList<ToolInfo>();\r
88     for (NuGetInstalledTool nuGetInstalledTool : myToolManager.getInstalledTools()) {\r
89       result.add(new ToolInfo(nuGetInstalledTool));\r
90     }\r
91     return result;\r
92   }\r
93 \r
94   private static String safe(@Nullable String s) {\r
95     if (StringUtil.isEmptyOrSpaces(s)) return "";\r
96     return s;\r
97   }\r
98 \r
99   @NotNull\r
100   private String parseValue(HttpServletRequest request, String name) {\r
101     String value = null;\r
102 \r
103     final BasePropertiesBean bean = (BasePropertiesBean)request.getAttribute("propertiesBean");\r
104     if (bean != null) {\r
105       value = bean.getProperties().get(name);\r
106     }\r
107     if (value == null) {\r
108       value = request.getParameter("value");\r
109     }\r
110     if (value == null) {\r
111       value = "";\r
112     }\r
113     return value;\r
114   }\r
115 }\r