package com.horstmann.violet.framework.util; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; /** * TODO javadoc * This ... * * @author Adrian Bobrowski <adrian071993@gmail.com> * @date 21.02.2016 */ public abstract class BeanInfo extends SimpleBeanInfo { protected BeanInfo(Class<?> beanClass, ResourceBundle resourceBundle) { this(beanClass); addResourceBundle(resourceBundle); } protected BeanInfo(Class<?> beanClass) { this.beanClass = beanClass; resourceManager = new ResourceManager(); } protected List<PropertyDescriptor> createPropertyDescriptorList() { return new ArrayList<PropertyDescriptor>(); } protected final void addResourceBundle(ResourceBundle resourceBundle) { this.resourceManager.addResource(resourceBundle); } protected final void addResourceBundle(String baseName) { this.resourceManager.addResource(baseName); } /** * (non-Javadoc) * * @see java.beans.BeanInfo#getPropertyDescriptors() */ public final PropertyDescriptor[] getPropertyDescriptors() { List<PropertyDescriptor> propertyDescriptorList = createPropertyDescriptorList(); while(true) { if (!(propertyDescriptorList.remove(null))) { break; } } return propertyDescriptorList.toArray(new PropertyDescriptor[propertyDescriptorList.size()]); } protected final PropertyDescriptor createPropertyDescriptor(String valueName, int priority) { return createPropertyDescriptor(valueName,valueName,priority); } protected final PropertyDescriptor createPropertyDescriptor(String valueName, String resourceKey, int priority) { try { PropertyDescriptor propertyDescriptor = new PropertyDescriptor(valueName, beanClass); propertyDescriptor.setValue("label", resourceManager.getString(resourceKey)); propertyDescriptor.setValue("priority", new Integer(priority)); return propertyDescriptor; } catch (IntrospectionException e) { return null; } } private ResourceManager resourceManager; private final Class<?> beanClass; }