make source field in nuget trigger optional. Use default feed if blank
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / trigger / NuGetSimpleTrigger.java
1 package jetbrains.buildServer.nuget.server.trigger;\r
2 \r
3 import jetbrains.buildServer.buildTriggers.BuildTriggerDescriptor;\r
4 import jetbrains.buildServer.buildTriggers.BuildTriggerService;\r
5 import jetbrains.buildServer.buildTriggers.BuildTriggeringPolicy;\r
6 import jetbrains.buildServer.serverSide.InvalidProperty;\r
7 import jetbrains.buildServer.serverSide.PropertiesProcessor;\r
8 import jetbrains.buildServer.util.StringUtil;\r
9 import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
10 import org.jetbrains.annotations.NotNull;\r
11 \r
12 import java.util.ArrayList;\r
13 import java.util.Collection;\r
14 import java.util.Map;\r
15 \r
16 /**\r
17  * @author Eugene Petrenko (eugene.petrenko@gmail.com)\r
18  *         Date: 03.05.11 15:25\r
19  */\r
20 public class NuGetSimpleTrigger extends BuildTriggerService {\r
21   private final PluginDescriptor myDescriptor;\r
22   private BuildTriggeringPolicy myPolicy;\r
23 \r
24   public NuGetSimpleTrigger(@NotNull final PluginDescriptor descriptor,\r
25                             @NotNull final ThreadedBuildTriggetFactory factory,\r
26                             @NotNull final NamedPackagesUpdateChecker checker) {\r
27     myDescriptor = descriptor;\r
28     myPolicy = factory.createTrigger(checker);\r
29   }\r
30 \r
31   @NotNull\r
32   @Override\r
33   public String getName() {\r
34     return TriggerConstants.TRIGGER_ID;\r
35   }\r
36 \r
37   @NotNull\r
38   @Override\r
39   public String getDisplayName() {\r
40     return "NuGet Dependency Trigger";\r
41   }\r
42 \r
43   @NotNull\r
44   @Override\r
45   public String describeTrigger(@NotNull final BuildTriggerDescriptor trigger) {\r
46     Map<String, String> props = trigger.getProperties();\r
47     StringBuilder sb = new StringBuilder();\r
48     sb.append("Package Id: ").append(props.get(TriggerConstants.PACKAGE)).append("\n");\r
49     sb.append("Source: ").append(props.get(TriggerConstants.PACKAGE));\r
50 \r
51     String version = props.get(TriggerConstants.VERSION);\r
52     if (!StringUtil.isEmptyOrSpaces(version)) {\r
53       sb.append("\n");\r
54       sb.append("Version: ").append(version);\r
55     }\r
56 \r
57     return sb.toString();\r
58   }\r
59 \r
60   @NotNull\r
61   @Override\r
62   public BuildTriggeringPolicy getBuildTriggeringPolicy() {\r
63     return myPolicy;\r
64   }\r
65 \r
66   @Override\r
67   public boolean isMultipleTriggersPerBuildTypeAllowed() {\r
68     return true;\r
69   }\r
70 \r
71   @Override\r
72   public PropertiesProcessor getTriggerPropertiesProcessor() {\r
73     return new PropertiesProcessor() {\r
74       public Collection<InvalidProperty> process(Map<String, String> properties) {\r
75         Collection<InvalidProperty> err = new ArrayList<InvalidProperty>();\r
76 \r
77         if (StringUtil.isEmptyOrSpaces(properties.get(TriggerConstants.NUGET_EXE))) {\r
78           err.add(new InvalidProperty(TriggerConstants.NUGET_EXE, "NuGet.exe path must be specified"));\r
79         }\r
80 \r
81         if (StringUtil.isEmptyOrSpaces(properties.get(TriggerConstants.PACKAGE))) {\r
82           err.add(new InvalidProperty(TriggerConstants.PACKAGE, "Package Id must be specified"));\r
83         }\r
84 \r
85         return err;\r
86       }\r
87     };\r
88   }\r
89 \r
90   @Override\r
91   public String getEditParametersUrl() {\r
92     return myDescriptor.getPluginResourcesPath("trigger/editSimpleTrigger.jsp");\r
93   }\r
94 }\r