d6ffe2cfedfb297a5acebc0c298803106521c776
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / utils / UiUtils.java
1 package com.indexdata.mkjsf.utils;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import javax.enterprise.context.ApplicationScoped;\r
7 import javax.inject.Named;\r
8 \r
9 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
10 \r
11 @Named("pzui")\r
12 @ApplicationScoped\r
13 public class UiUtils {\r
14 \r
15   /**\r
16    * Concatenates a list of strings\r
17    * @param strings\r
18    * @return\r
19    */\r
20   public static String concat(String... strings) {\r
21     StringBuilder concatenated = new StringBuilder("");\r
22     for (String string : strings) {\r
23       concatenated.append(string);\r
24     }\r
25     return concatenated.toString();\r
26   }\r
27   \r
28   public static String concatMaxLength(int maxTotalLength, String... strings) {\r
29     String concatenated = concat(strings);\r
30     return maxLength(concatenated,maxTotalLength);\r
31   }\r
32   \r
33   public static String maxLength (String string, int maxLength) {\r
34     if (string == null || string.length()<=maxLength) {\r
35       return string;\r
36     } else {\r
37       return string.substring(0,maxLength);\r
38     }\r
39   }\r
40   \r
41   public static String maxLengthMoreLabel (String string, int maxLength, String moreLabel) {\r
42     if (string == null || string.length()<=maxLength) {\r
43       return string;\r
44     } else {\r
45       String maxString = maxLength(string,maxLength);\r
46       if (string.length()>maxString.length()) {\r
47         maxString += moreLabel;\r
48       }\r
49       return maxString;\r
50     }\r
51   }\r
52     \r
53   /**\r
54    * Encloses a string with quotation marks\r
55    * @param string\r
56    * @return\r
57    */\r
58   public static String quotes(String string) {\r
59     return "\"" + string + "\"";\r
60   }\r
61   \r
62   public static List<ResponseDataObject> getMaxNumElements(ResponseDataObject container, String elementName, int maxElements) {\r
63     if (container.getElements(elementName)!=null) {\r
64       int elementCount = container.getElements(elementName).size();\r
65       if (elementCount>0) {\r
66         return ((ArrayList<ResponseDataObject>) container.getElements(elementName)).subList(0, Math.min(maxElements,elementCount));        \r
67       } \r
68     }   \r
69     return container.getElements(elementName);\r
70   }\r
71   \r
72   public List<ResponseDataObject> getMaxElements(ResponseDataObject container, String elementName, int maxElements, int maxTotalValueLength, boolean hardLimit) {\r
73     List<ResponseDataObject> maxNumList = getMaxNumElements(container,elementName,maxElements);\r
74     if (maxNumList!=null) {\r
75       int elementCount = maxNumList.size();\r
76       if (elementCount>0) {\r
77         int i = 0;\r
78         int totalLength = 0;\r
79         for (ResponseDataObject element : maxNumList) {\r
80           totalLength += element.getValue().length();           \r
81           if (totalLength>maxTotalValueLength) {\r
82             if (!hardLimit) {\r
83               i++;\r
84             }\r
85             break;\r
86           } else {\r
87             i++;\r
88           }\r
89         }\r
90         return maxNumList.subList(0, i);\r
91       }       \r
92     }  \r
93     return maxNumList;    \r
94   }\r
95 }\r