Removed code duplication among editions in sorting algorithms.

This commit is contained in:
Virgil Dupras 2012-03-16 14:57:21 -04:00
parent 80ff5f64f7
commit 771f22f208
4 changed files with 25 additions and 61 deletions

View File

@ -126,12 +126,6 @@ class DupeGuru(RegistrableApplication, Broadcaster):
def _get_display_info(self, dupe, group, delta):
raise NotImplementedError()
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
raise NotImplementedError()
def _get_group_sort_key(self, group, key):
raise NotImplementedError()
def _prioritization_categories(self):
raise NotImplementedError()
@ -139,6 +133,24 @@ class DupeGuru(RegistrableApplication, Broadcaster):
raise NotImplementedError()
#--- Private
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
if key == 'percentage':
m = get_group().get_match_of(dupe)
return m.percentage
if key == 'dupe_count':
return 0
r = cmp_value(dupe, key)
if delta and (key in self.result_table.DELTA_COLUMNS):
r -= cmp_value(get_group().ref, key)
return r
def _get_group_sort_key(self, group, key):
if key == 'percentage':
return group.percentage
if key == 'dupe_count':
return len(group)
return cmp_value(group.ref, key)
def _do_delete(self, j, replace_with_hardlinks):
def op(dupe):
j.add_progress()

View File

@ -8,7 +8,7 @@
from hscommon.util import format_size, format_time
from core.app import (DupeGuru as DupeGuruBase, format_timestamp,
format_perc, format_words, format_dupe_count, cmp_value)
format_perc, format_words, format_dupe_count)
from . import prioritize
from . import __appname__
from . import scanner, fs
@ -66,24 +66,6 @@ class DupeGuru(DupeGuruBase):
'dupe_count': format_dupe_count(dupe_count),
}
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
if key == 'percentage':
m = get_group().get_match_of(dupe)
return m.percentage
if key == 'dupe_count':
return 0
r = cmp_value(dupe, key)
if delta and (key in self.result_table.DELTA_COLUMNS):
r -= cmp_value(get_group().ref, key)
return r
def _get_group_sort_key(self, group, key):
if key == 'percentage':
return group.percentage
if key == 'dupe_count':
return len(group)
return cmp_value(group.ref, key)
def _prioritization_categories(self):
return prioritize.all_categories()

View File

@ -60,32 +60,20 @@ class DupeGuru(DupeGuruBase):
}
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
if key == 'percentage':
m = get_group().get_match_of(dupe)
return m.percentage
if key == 'dupe_count':
return 0
if key == 'folder_path':
dupe_folder_path = getattr(dupe, 'display_folder_path', dupe.folder_path)
return str(dupe_folder_path).lower()
r = cmp_value(dupe, key)
if delta and (key in self.result_table.DELTA_COLUMNS):
if delta and key == 'dimensions':
r = cmp_value(dupe, key)
ref_value = cmp_value(get_group().ref, key)
if key == 'dimensions':
r = get_delta_dimensions(r, ref_value)
else:
r -= ref_value
return r
return get_delta_dimensions(r, ref_value)
return DupeGuruBase._get_dupe_sort_key(self, dupe, get_group, key, delta)
def _get_group_sort_key(self, group, key):
if key == 'percentage':
return group.percentage
if key == 'dupe_count':
return len(group)
if key == 'folder_path':
dupe_folder_path = getattr(group.ref, 'display_folder_path', group.ref.folder_path)
return str(dupe_folder_path).lower()
return cmp_value(group.ref, key)
return DupeGuruBase._get_group_sort_key(self, group, key)
def _prioritization_categories(self):
return prioritize.all_categories()

View File

@ -8,7 +8,7 @@
from hscommon.util import format_size
from core.app import (DupeGuru as DupeGuruBase, format_timestamp, format_perc,
format_words, format_dupe_count, cmp_value)
format_words, format_dupe_count)
from core import prioritize
from . import __appname__
from .result_table import ResultTable
@ -42,24 +42,6 @@ class DupeGuru(DupeGuruBase):
'dupe_count': format_dupe_count(dupe_count),
}
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
if key == 'percentage':
m = get_group().get_match_of(dupe)
return m.percentage
if key == 'dupe_count':
return 0
r = cmp_value(dupe, key)
if delta and (key in self.result_table.DELTA_COLUMNS):
r -= cmp_value(get_group().ref, key)
return r
def _get_group_sort_key(self, group, key):
if key == 'percentage':
return group.percentage
if key == 'dupe_count':
return len(group)
return cmp_value(group.ref, key)
def _prioritization_categories(self):
return prioritize.all_categories()