1 package jp.sourceforge.stigmata.birthmarks.comparators;
3 import java.lang.reflect.Constructor;
4 import java.lang.reflect.InvocationTargetException;
5 import java.util.Locale;
7 import jp.sourceforge.stigmata.BirthmarkComparator;
8 import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
9 import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi;
10 import jp.sourceforge.stigmata.spi.BirthmarkService;
11 import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
14 * Abstract service provider interface for comparing birthmarks.
16 * @author Haruaki TAMADA
18 abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{
20 * returns a type of the birthmark this service provides.
23 public abstract String getType();
26 * returns a localized description of the birthmark this service provides.
29 public String getDescription(Locale locale){
30 return LocalizedDescriptionManager.getInstance().getDescription(
31 locale, getType(), LocalizedDescriptionManager.ServiceCategory.comparator
36 * returns a localized description of the birthmark in default locale.
39 public String getDescription(){
40 return getDescription(Locale.getDefault());
44 public abstract String getComparatorClassName();
47 * returns a extractor for the birthmark of this service.
50 public BirthmarkComparator getComparator(BirthmarkService service){
52 Class<?> c = Class.forName(getComparatorClassName());
53 Class<? extends BirthmarkComparator> clazz = c.asSubclass(BirthmarkComparator.class);
54 Constructor<? extends BirthmarkComparator> constructor = clazz.getConstructor(BirthmarkService.class);
55 return constructor.newInstance(service);
56 } catch(NoSuchMethodException e){
57 } catch(InstantiationException e){
58 } catch(InvocationTargetException e){
59 } catch(ClassNotFoundException e){
60 } catch(IllegalAccessException e){