1 package com.indexdata.mkjsf.utils;
\r
3 import java.util.ArrayList;
\r
4 import java.util.List;
\r
6 import javax.enterprise.context.ApplicationScoped;
\r
7 import javax.inject.Named;
\r
9 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
\r
13 public class UiUtils {
\r
16 * Concatenates a list of strings
\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
25 return concatenated.toString();
\r
28 public static String concatMaxLength(int maxTotalLength, String... strings) {
\r
29 String concatenated = concat(strings);
\r
30 return maxLength(concatenated,maxTotalLength);
\r
33 public static String maxLength (String string, int maxLength) {
\r
34 if (string == null || string.length()<=maxLength) {
\r
37 return string.substring(0,maxLength);
\r
41 public static String maxLengthMoreLabel (String string, int maxLength, String moreLabel) {
\r
42 if (string == null || string.length()<=maxLength) {
\r
45 String maxString = maxLength(string,maxLength);
\r
46 if (string.length()>maxString.length()) {
\r
47 maxString += moreLabel;
\r
54 * Encloses a string with quotation marks
\r
58 public static String quote(String string) {
\r
59 return "\"" + string + "\"";
\r
63 * Gets at most maxElements elements of the given elementName
\r
64 * @param container The parent element containing the elements to retrieve
\r
65 * @param elementName The name of the element(s) to retrieve
\r
66 * @param maxElements Maximum number of elements to retrieve
\r
67 * @return At most maxElements data objects of the given type
\r
69 public static List<ResponseDataObject> getMaxNumElements(ResponseDataObject container, String elementName, int maxElements) {
\r
70 if (container.getElements(elementName)!=null) {
\r
71 int elementCount = container.getElements(elementName).size();
\r
72 if (elementCount>0) {
\r
73 return ((ArrayList<ResponseDataObject>) container.getElements(elementName)).subList(0, Math.min(maxElements,elementCount));
\r
76 return container.getElements(elementName);
\r
80 * Gets at most maxElements data objects, up to a total string length of maxTotalValueLength
\r
81 * @param container The parent element containing the elements to retrieve
\r
82 * @param elementName The name of the element(s) to retrieve
\r
83 * @param maxElements Maximum number of elements to retrieve
\r
84 * @param maxTotalValueLength The maximum total string length of the values of the elements retrieved
\r
85 * @param hardLimit If set to true, the list will be cut of at or below the total string length, if false, the list
\r
86 * will contain the first element that exceeds the length limit - for instance thus guaranteeing
\r
87 * that at least one of the elements will be returned, no matter it's length.
\r
88 * @return Delimited list of elements
\r
90 public List<ResponseDataObject> getMaxElements(ResponseDataObject container, String elementName, int maxElements, int maxTotalValueLength, boolean hardLimit) {
\r
91 List<ResponseDataObject> maxNumList = getMaxNumElements(container,elementName,maxElements);
\r
92 if (maxNumList!=null) {
\r
93 int elementCount = maxNumList.size();
\r
94 if (elementCount>0) {
\r
96 int totalLength = 0;
\r
97 for (ResponseDataObject element : maxNumList) {
\r
98 totalLength += element.getValue().length();
\r
99 if (totalLength>maxTotalValueLength) {
\r
108 return maxNumList.subList(0, i);
\r
111 return maxNumList;
\r