base properties processor class
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / util / BasePropertiesProcessor.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.util;\r
18 \r
19 import jetbrains.buildServer.serverSide.InvalidProperty;\r
20 import jetbrains.buildServer.serverSide.PropertiesProcessor;\r
21 import jetbrains.buildServer.util.StringUtil;\r
22 import org.jetbrains.annotations.NotNull;\r
23 import org.jetbrains.annotations.Nullable;\r
24 \r
25 import java.util.ArrayList;\r
26 import java.util.Collection;\r
27 import java.util.Collections;\r
28 import java.util.Map;\r
29 \r
30 /**\r
31  * @author Eugene Petrenko (eugene.petrenko@gmail.com)\r
32  *         Date: 23.08.11 10:59\r
33  */\r
34 public abstract class BasePropertiesProcessor implements PropertiesProcessor {\r
35   @Nullable\r
36   protected static String notEmpty(@NotNull final String key,\r
37                                    @NotNull String errorMessage,\r
38                                    @NotNull final Map<String, String> params,\r
39                                    @NotNull final Collection<InvalidProperty> result) {\r
40     final String value = params.get(key);\r
41     if (StringUtil.isEmptyOrSpaces(value)) {\r
42       result.add(new InvalidProperty(key, errorMessage));\r
43       return null;\r
44     }\r
45     return value;\r
46   }\r
47 \r
48   @NotNull\r
49   public final Collection<InvalidProperty> process(final Map<String, String> properties) {\r
50     Collection<InvalidProperty> result =  new ArrayList<InvalidProperty>();\r
51 \r
52     if (properties == null) return result;\r
53     checkProperties(Collections.unmodifiableMap(properties), result);\r
54 \r
55     return result;\r
56   }\r
57 \r
58   protected abstract void checkProperties(@NotNull final Map<String, String> map, @NotNull Collection<InvalidProperty> result);\r
59 }\r