polish Publish RunType UI
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / publish / PublishRunType.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.publish;\r
18 \r
19 import jetbrains.buildServer.nuget.common.DotNetConstants;\r
20 import jetbrains.buildServer.nuget.common.PackagesConstants;\r
21 import jetbrains.buildServer.requirements.Requirement;\r
22 import jetbrains.buildServer.requirements.RequirementType;\r
23 import jetbrains.buildServer.serverSide.InvalidProperty;\r
24 import jetbrains.buildServer.serverSide.PropertiesProcessor;\r
25 import jetbrains.buildServer.serverSide.RunType;\r
26 import jetbrains.buildServer.util.StringUtil;\r
27 import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
28 import org.jetbrains.annotations.NotNull;\r
29 \r
30 import java.util.*;\r
31 \r
32 import static jetbrains.buildServer.nuget.common.PackagesConstants.*;\r
33 \r
34 /**\r
35  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
36  * Date: 21.07.11 14:15\r
37  */\r
38 public class PublishRunType extends RunType {\r
39   private final PluginDescriptor myDescriptor;\r
40 \r
41   public PublishRunType(@NotNull final PluginDescriptor descriptor) {\r
42     myDescriptor = descriptor;\r
43   }\r
44 \r
45   @NotNull\r
46   @Override\r
47   public String getType() {\r
48     return PackagesConstants.PUBLISH_RUN_TYPE;\r
49   }\r
50 \r
51   @Override\r
52   public String getDisplayName() {\r
53     return "NuGet Publish Packages";\r
54   }\r
55 \r
56   @Override\r
57   public String getDescription() {\r
58     return "Pushes and publishes NuGet package to a given feed";\r
59   }\r
60 \r
61   @Override\r
62   public PropertiesProcessor getRunnerPropertiesProcessor() {\r
63     return new PropertiesProcessor() {\r
64       public Collection<InvalidProperty> process(Map<String, String> properties) {\r
65         final List<InvalidProperty> checks = new ArrayList<InvalidProperty>();\r
66 \r
67         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_PATH))) {\r
68           checks.add(new InvalidProperty(NUGET_PATH, "Path to nuget.exe must be specified"));\r
69         }\r
70 \r
71         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_API_KEY))) {\r
72           checks.add(new InvalidProperty(NUGET_API_KEY, "API key must be specified"));\r
73         }\r
74 \r
75         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_PUBLISH_FILES))) {\r
76           checks.add(new InvalidProperty(NUGET_PUBLISH_FILES, "Specify at least one package to pusblish"));\r
77         }\r
78 \r
79         return checks;\r
80       }\r
81     };\r
82   }\r
83 \r
84   @Override\r
85   public String getEditRunnerParamsJspFilePath() {\r
86     return myDescriptor.getPluginResourcesPath("publish/editPublish.jsp");\r
87   }\r
88 \r
89   @Override\r
90   public String getViewRunnerParamsJspFilePath() {\r
91     return myDescriptor.getPluginResourcesPath("publish/viewPublish.jsp");\r
92   }\r
93 \r
94   @Override\r
95   public Map<String, String> getDefaultRunnerProperties() {\r
96     return Collections.emptyMap();\r
97   }\r
98 \r
99   @Override\r
100   public List<Requirement> getRunnerSpecificRequirements(@NotNull Map<String, String> runParameters) {\r
101     List<Requirement> list = new ArrayList<Requirement>(super.getRunnerSpecificRequirements(runParameters));\r
102     list.add(new Requirement(DotNetConstants.DOT_NET_FRAMEWORK_4_x86, null, RequirementType.EXISTS));\r
103     return list;\r
104   }\r
105 \r
106   @NotNull\r
107   @Override\r
108   public String describeParameters(@NotNull Map<String, String> parameters) {\r
109     StringBuilder sb = new StringBuilder();\r
110     final String source = parameters.get(NUGET_PUBLISH_SOURCE);\r
111     if (!StringUtil.isEmptyOrSpaces(source)) {\r
112       sb.append("Publish to:").append(source).append("\n");\r
113     }\r
114 \r
115     final String packages = parameters.get(NUGET_PUBLISH_FILES);\r
116     if (!StringUtil.isEmptyOrSpaces(packages)) {\r
117       sb.append("Packages: ");\r
118       boolean isFirst = true;\r
119       for (String split : packages.split("[\r\n]+")) {\r
120         if (!StringUtil.isEmptyOrSpaces(split)) {\r
121           if (!isFirst) {sb.append(", ");} else {isFirst = false; }\r
122           sb.append(StringUtil.truncateStringValueWithDotsAtCenter(split, 50));\r
123         }\r
124       }\r
125     }\r
126 \r
127     final String doNotPublish = parameters.get(NUGET_PUBLISH_CREATE_ONLY);\r
128     if (!StringUtil.isEmptyOrSpaces(doNotPublish)) {\r
129       sb.append("\nDo not pusblish uploaded package");\r
130     }\r
131 \r
132     return sb.toString();\r
133   }\r
134 }\r