package name.abuchen.portfolio.ui.views.settings; import java.time.LocalDate; import java.util.ResourceBundle; import name.abuchen.portfolio.model.AttributeType; import name.abuchen.portfolio.model.AttributeType.AmountConverter; import name.abuchen.portfolio.model.AttributeType.AmountPlainConverter; import name.abuchen.portfolio.model.AttributeType.Converter; import name.abuchen.portfolio.model.AttributeType.DateConverter; import name.abuchen.portfolio.model.AttributeType.PercentPlainConverter; import name.abuchen.portfolio.model.AttributeType.QuoteConverter; import name.abuchen.portfolio.model.AttributeType.ShareConverter; import name.abuchen.portfolio.model.AttributeType.StringConverter; public enum AttributeFieldType { STRING(String.class, StringConverter.class), // AMOUNT(Long.class, AmountConverter.class), // AMOUNTPLAIN(Long.class, AmountPlainConverter.class), // PERCENTPLAIN(Double.class, PercentPlainConverter.class), // QUOTE(Long.class, QuoteConverter.class), // SHARE(Long.class, ShareConverter.class), // DATE(LocalDate.class, DateConverter.class); private static final ResourceBundle RESOURCES = ResourceBundle .getBundle("name.abuchen.portfolio.ui.views.settings.labels"); //$NON-NLS-1$ private final Class<?> type; private final Class<? extends Converter> converterClass; private AttributeFieldType(Class<?> type, Class<? extends Converter> converterClass) { this.type = type; this.converterClass = converterClass; } public Class<?> getFieldClass() { return type; } public Class<? extends Converter> getConverterClass() { return converterClass; } private boolean isFieldType(AttributeType attribute) { return converterClass.isAssignableFrom(attribute.getConverter().getClass()) && type.isAssignableFrom(attribute.getType()); } public String toString() { return RESOURCES.getString(name() + ".name"); //$NON-NLS-1$ } public static AttributeFieldType of(AttributeType attribute) { for (AttributeFieldType t : values()) if (t.isFieldType(attribute)) return t; return null; } }