CommaSeparatedIntegersConverter.java
package sk.iway.iwcm.system.jpa;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
/**
* Konverter pre databazovy zaznam kde su ciarkou oddelene cisla na objekt Integer[]
* Pouziva sa napr. na perex_group v documents tabulke a podobne
* POZOR: ak je zoznam neprazdny dava na zaciatok a koniec znak , pre lepsie hladanie ID podla like %,ID,%
*/
@Converter
public class CommaSeparatedIntegersConverter implements AttributeConverter<Integer[], String>{
@Override
public String convertToDatabaseColumn(Integer[] integers) {
if (integers == null || integers.length<1) return null;
StringBuilder str = new StringBuilder();
for (Integer i : integers) {
if (i != null) {
str.append(",").append(String.valueOf(i));
}
}
if (str.length()<1) return null;
//pridaj koncovu ciarku
str.append(",");
return str.toString();
}
@Override
public Integer[] convertToEntityAttribute(String ids) {
if (ids == null) return new Integer[0];
List<Integer> integersList = new ArrayList<>();
String[] idsArray = ids.split(",");
for (String id : idsArray) {
try {
Integer i = Integer.parseInt(id.trim());
if (i != null) integersList.add(i);
} catch (Exception ex) {
//nie je cislo
}
}
return integersList.toArray(new Integer[0]);
}
}