package hu.sch.ejb; import hu.sch.domain.EntrantExportItem; import java.text.Collator; import java.util.ArrayList; import java.util.List; import java.util.Locale; import org.apache.commons.lang3.StringUtils; /** * This class represents a line in the the entrant export csv. * * @author tomi * @since 2.6.3 */ public class EntrantExportLine implements Comparable<EntrantExportLine> { private static final String PLACEHOLDER = "-"; /** * User id */ private Long id; /** * User's full name */ private String fullName; /** * Items for the line */ private List<EntrantExportItem> items; public EntrantExportLine(EntrantExportItem item) { id = item.getUserId(); fullName = item.getFullName(); items = new ArrayList<>(); items.add(item); } public void addItem(EntrantExportItem item) { assert item.getUserId().equals(id); assert item.getFullName().equals(fullName); items.add(item); } @Override public int compareTo(EntrantExportLine o) { Collator collator = Collator.getInstance(new Locale("hu")); return collator.compare(this.fullName, o.fullName); } public int getEntrantNumber() { return items.size(); } public String[] getFields() { EntrantExportItem first = items.get(0); String[] fields = new String[] { fullName, valueOfPlaceholder(first.getNeptun()), first.getEmail(), valueOfPlaceholder(first.getPrimaryGroup()), String.valueOf(getEntrantNumber()), getValuationText() }; return fields; } private String getValuationText() { List<String> list = new ArrayList<>(); for (EntrantExportItem item : items) { StringBuilder builder = new StringBuilder("*"); builder.append(item.getValuationGroupName()); builder.append("*: "); builder.append(item.getValuationText()); list.add(builder.toString()); } return StringUtils.join(list, " || "); } private String valueOfPlaceholder(String value) { return StringUtils.isBlank(value) ? PLACEHOLDER : value; } }