/**
* Copyright (C) Intersect 2012.
*
* This module contains Proprietary Information of Intersect,
* and should be treated as Confidential.
*/
package au.org.intersect.exsite9.domain.utils;
import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import au.org.intersect.exsite9.domain.ResearchFile;
/**
* Compares research files by their extension.
*/
public class ResearchFileExtensionComparator extends ResearchFileNameComparator implements Comparator<ResearchFile>
{
private static final Pattern FILE_EXTENSION_PATTERN = Pattern.compile("^.*\\.(.*)$");
public ResearchFileExtensionComparator(final boolean ascending)
{
super(ascending);
}
/**
* @{inheritDoc}
*/
@Override
public int compare(final ResearchFile rf1, final ResearchFile rf2)
{
final String extension1 = getExtension(rf1);
final String extension2 = getExtension(rf2);
final int compareIgnoreCase = extension1.compareToIgnoreCase(extension2);
if (compareIgnoreCase != 0)
{
return compareIgnoreCase * super.factor;
}
return super.compare(rf1, rf2);
}
private static String getExtension(final ResearchFile rf)
{
final Matcher matcher = FILE_EXTENSION_PATTERN.matcher(rf.getFile().getName());
if (matcher.matches())
{
return matcher.group(1);
}
return "";
}
}