+"""
+ Contain the class which handle statistics for the
+ import of special phrases.
+"""
+import logging
+LOG = logging.getLogger()
+
+class SpecialPhrasesImporterStatistics():
+ # pylint: disable-msg=too-many-instance-attributes
+ """
+ Class handling statistics of the import
+ process of special phrases.
+ """
+ def __init__(self):
+ self._set_lang_values_to_0()
+ self._set_global_values_to_0()
+
+ def _set_global_values_to_0(self):
+ """
+ Set all counts for the global
+ import to 0.
+ """
+ self.tables_created = 0
+ self.tables_deleted = 0
+ self.tables_ignored = 0
+ self.global_phrases_invalid = 0
+ self.global_phrases_added = 0
+ self.global_phrases_ignored = 0
+ self.global_phrases_deleted = 0
+
+ def _set_lang_values_to_0(self):
+ """
+ Set all counts for the current
+ lang to 0.
+ """
+ self.lang_phrases_invalid = 0
+ self.lang_phrases_added = 0
+ self.lang_phrases_ignored = 0
+
+ def notify_one_phrase_invalid(self):
+ """
+ Add +1 to the count of invalid entries
+ fetched from the wiki.
+ """
+ self.lang_phrases_invalid += 1
+ self.global_phrases_invalid += 1
+
+ def notify_one_phrase_added(self):
+ """
+ Add +1 to the count of entries
+ added to the db.
+ """
+ self.lang_phrases_added += 1
+ self.global_phrases_added += 1
+
+ def notify_one_phrase_ignored(self):
+ """
+ Add +1 to the count of ignored
+ entries as it was already in the db.
+ """
+ self.lang_phrases_ignored += 1
+ self.global_phrases_ignored += 1
+
+ def notify_one_phrase_deleted(self):
+ """
+ Add +1 to the count of phrases deleted
+ from the database.
+ """
+ self.global_phrases_deleted += 1
+
+ def notify_one_table_created(self):
+ """
+ Add +1 to the count of created tables.
+ """
+ self.tables_created += 1
+
+ def notify_one_table_deleted(self):
+ """
+ Add +1 to the count of deleted tables.
+ """
+ self.tables_deleted += 1
+
+ def notify_one_table_ignored(self):
+ """
+ Add +1 to the count of ignored tables.
+ """
+ self.tables_ignored += 1
+
+
+ def notify_import_done(self):
+ """
+ Print stats for the whole import process
+ and reset all values.
+ """
+ LOG.warning('====================================================================')
+ LOG.warning('Final statistics of the import:')
+ LOG.warning('- %s phrases were invalid.', self.global_phrases_invalid)
+ if self.global_phrases_invalid > 0:
+ LOG.warning(' Those invalid phrases have been skipped.')
+ LOG.warning('- %s phrases were ignored as they are already in the database',
+ self.global_phrases_ignored)
+ LOG.warning('- %s phrases were added to the database', self.global_phrases_added)
+ LOG.warning('- %s phrases were deleted from the database', self.global_phrases_deleted)
+ if self.global_phrases_deleted > 0:
+ LOG.warning(' They were deleted as they are not valid anymore.')
+ LOG.warning('- %s tables were ignored as they already exist on the database',
+ self.tables_ignored)
+ LOG.warning('- %s tables were created', self.tables_created)
+ LOG.warning('- %s tables were deleted from the database', self.tables_deleted)
+ if self.tables_deleted > 0:
+ LOG.warning(' They were deleted as they are not valid anymore.')
+
+ self._set_global_values_to_0()
+
+ def notify_current_lang_done(self, lang):
+ """
+ Print stats for the current lang
+ and then reset lang values.
+ """
+ LOG.warning('====================================================================')
+ LOG.warning('Statistics for the import of %s:', lang)
+ LOG.warning('- %s phrases were invalid.', self.lang_phrases_invalid)
+ if self.lang_phrases_invalid > 0:
+ LOG.warning(' Those invalid phrases have been skipped.')
+ LOG.warning('- %s phrases were ignored as they are already in the database',
+ self.lang_phrases_ignored)
+ LOG.warning('- %s phrases were added to the database', self.lang_phrases_added)
+ LOG.warning('====================================================================')
+
+ self._set_lang_values_to_0()