crate::ix!();
impl<TxCat:TransactionCategory + 'static> AccountAnalysisInterface<TxCat> for Account {
fn analyze(&self, analysis: &AccountAnalysis<TxCat>)
-> Result<(),AccountError>
{
let flags = analysis.flags();
let category_map = analysis.category_map();
let histogram_display_strategy = analysis.histogram_display_strategy();
info!("will analyze account {:#?}", self.kind());
print_thick_header("[ACCOUNT_ANALYSIS]");
println!("performing account analysis for year={}, account={}", self.year(), self.kind());
println!(" ");
if flags.contains(AccountAnalysisFlags::SHOW_ACCOUNT_SUMMARY) {
self.show_account_summary();
}
if flags.contains(AccountAnalysisFlags::SHOW_HISTOGRAM) {
self.show_histogram(histogram_display_strategy);
}
if flags.contains(AccountAnalysisFlags::SHOW_BURSTS) {
self.show_account_bursts();
}
if flags.contains(AccountAnalysisFlags::SHOW_MONTHLY_SUMMARY) {
self.show_monthly_summary();
}
if flags.contains(AccountAnalysisFlags::SHOW_BUSINESS_TRANSACTIONS) {
self.show_business_transactions(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_MEDICAL_AND_INSURANCE_TRANSACTIONS) {
self.show_medical_and_insurance_expenditures(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_TREASURY_TRANSACTIONS_AND_CHECKS) {
self.show_treasury_transactions_and_checks(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_CATEGORY_MAP) {
self.show_category_map(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_CATEGORIZED_FULL) {
self.show_categorized_debug(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_CATEGORIZED_SHORT) {
self.show_categorized_short(category_map);
}
if flags.contains(AccountAnalysisFlags::SHOW_QUARTERLY_SUMMARY) {
self.show_quarterly_summary();
}
Ok(())
}
}