com.esofthead.mycollab.vaadin.mvp.BeanItemCustomExt.java Source code

Java tutorial

Introduction

Here is the source code for com.esofthead.mycollab.vaadin.mvp.BeanItemCustomExt.java

Source

/**
 * This file is part of mycollab-ui.
 *
 * mycollab-ui is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * mycollab-ui is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with mycollab-ui.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.esofthead.mycollab.vaadin.mvp;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.beanutils.PropertyUtils;

import com.esofthead.mycollab.core.MyCollabException;
import com.esofthead.mycollab.form.domain.FormCustomFieldValueWithBLOBs;
import com.vaadin.data.util.BeanItem;
import com.vaadin.data.util.NestedMethodProperty;

/**
 * 
 * @author MyCollab Ltd
 * @since 3.0
 *
 * @param <T>
 */
public class BeanItemCustomExt<T> extends BeanItem<T> {
    private static final long serialVersionUID = 1L;

    private static List<String> excludeFields = Arrays.asList("id", "module", "typeid", "SerialVersionUID",
            "serialVersionUID");
    private static Set<String> customFieldNames;

    static {
        customFieldNames = new HashSet<>();
        Class<FormCustomFieldValueWithBLOBs> customFormCls = FormCustomFieldValueWithBLOBs.class;
        for (Class cls = customFormCls; cls != null; cls = cls.getSuperclass()) {
            Field[] declaredFields = cls.getDeclaredFields();
            for (Field field : declaredFields) {
                if (!excludeFields.contains(field.getName())) {
                    customFieldNames.add(field.getName());
                }
            }
        }
    }

    public static void init() {
    }

    public BeanItemCustomExt(T bean) {
        super(bean);

        try {
            for (String customFieldName : customFieldNames) {
                String propName = "customfield." + customFieldName;
                this.addItemProperty(propName,
                        new NestedMethodProperty(PropertyUtils.getProperty(bean, "customfield"), customFieldName));
            }

        } catch (Exception e) {
            throw new MyCollabException(e);
        }

    }

}