package co.smartreceipts.android.workers.reports.pdf.renderer.impl;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import com.google.common.base.Preconditions;
import com.tom_roush.pdfbox.pdmodel.PDDocument;
import com.tom_roush.pdfbox.util.awt.AWTColor;
import co.smartreceipts.android.model.Receipt;
import co.smartreceipts.android.settings.UserPreferenceManager;
import co.smartreceipts.android.settings.catalog.UserPreference;
import co.smartreceipts.android.workers.reports.pdf.fonts.PdfFontSpec;
import co.smartreceipts.android.workers.reports.pdf.renderer.text.TextRenderer;
public class ReceiptLabelTextRenderer extends TextRenderer {
public ReceiptLabelTextRenderer(@NonNull Receipt receipt, @NonNull Context context, @NonNull PDDocument pdDocument,
@NonNull UserPreferenceManager userPreferenceManager, @NonNull AWTColor color, @NonNull PdfFontSpec fontSpec) {
super(context, pdDocument, new TextFormatter(context, userPreferenceManager).buildLegendForImage(receipt), color, fontSpec);
}
@VisibleForTesting
static class TextFormatter {
private static final String SEP = " \u2022 ";
private final Context context;
private final UserPreferenceManager userPreferenceManager;
public TextFormatter(@NonNull Context context, @NonNull UserPreferenceManager userPreferenceManager) {
this.context = Preconditions.checkNotNull(context.getApplicationContext());
this.userPreferenceManager = Preconditions.checkNotNull(userPreferenceManager);
}
@NonNull
private String buildLegendForImage(@NonNull Receipt receipt) {
final int num = (userPreferenceManager.get(UserPreference.ReportOutput.PrintUserIdByPdfPhoto)) ?
receipt.getId() : receipt.getIndex();
final String extra = (userPreferenceManager.get(UserPreference.ReportOutput.PrintReceiptCommentByPdfPhoto)
&& !TextUtils.isEmpty(receipt.getComment()))
? SEP + receipt.getComment()
: "";
return num + SEP + receipt.getName() + SEP
+ receipt.getFormattedDate(context,
userPreferenceManager.get(UserPreference.General.DateSeparator)) + extra;
}
}
}