package ru.orangesoftware.financisto2.utils;
import ru.orangesoftware.financisto2.model.Category;
import static ru.orangesoftware.financisto2.model.Category.isSplit;
import static ru.orangesoftware.financisto2.utils.Utils.isNotEmpty;
/**
* Created by IntelliJ IDEA.
* User: Denis Solonenko
* Date: 7/19/11 7:53 PM
*/
public class TransactionTitleUtils {
public static String generateTransactionTitle(StringBuilder sb, String payee, String note, long categoryId, String category) {
if (isSplit(categoryId)) {
return generateTransactionTitleForSplit(sb, payee, note, category);
} else {
return generateTransactionTitleForRegular(sb, payee, note, category);
}
}
private static String generateTransactionTitleForRegular(StringBuilder sb, String payee, String note, String category) {
String secondPart = joinAdditionalFields(sb, payee, note);
if (isNotEmpty(category)) {
if (isNotEmpty(secondPart)) {
sb.append(category).append(" (").append(secondPart).append(")");
return sb.toString();
} else {
return category;
}
} else {
return secondPart;
}
}
private static String joinAdditionalFields(StringBuilder sb, String payee, String note) {
sb.setLength(0);
append(sb, payee);
append(sb, note);
String secondPart = sb.toString();
sb.setLength(0);
return secondPart;
}
private static String generateTransactionTitleForSplit(StringBuilder sb, String payee, String note, String category) {
String secondPart = joinAdditionalFields(sb, note);
if (isNotEmpty(payee)) {
if (isNotEmpty(secondPart)) {
return sb.append("[").append(payee).append("...] ").append(secondPart).toString();
}
return sb.append("[").append(payee).append("...]").toString();
} else {
if (isNotEmpty(secondPart)) {
return sb.append("[...] ").append(secondPart).toString();
}
return category;
}
}
private static String joinAdditionalFields(StringBuilder sb, String note) {
sb.setLength(0);
append(sb, note);
String secondPart = sb.toString();
sb.setLength(0);
return secondPart;
}
private static void append(StringBuilder sb, String s) {
if (isNotEmpty(s)) {
if (sb.length() > 0) {
sb.append(": ");
}
sb.append(s);
}
}
}