All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.clickntap.tool.bean.Bean Maven / Gradle / Ivy

There is a newer version: 1.30
Show newest version
package com.clickntap.tool.bean;

import org.springframework.web.multipart.MultipartFile;

import java.beans.PropertyDescriptor;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

public class Bean extends BeanId {
    transient private BeanManager beanManager;

    public Bean() {
    }

    public Bean(BeanId id) {
        setId(id.getId());
    }

    public Bean(Number id) {
        setId(id);
    }

    public BeanManager getBeanManager() throws Exception {
        return beanManager;
    }

    public void setBeanManager(BeanManager beanManager) {
        this.beanManager = beanManager;
    }

    public void copyTo(OutputStream out) throws Exception {
        getBeanManager().copyTo(this, out);
    }

    public void copyFrom(MultipartFile in) throws Exception {
        getBeanManager().copyFrom(this, in);
    }

    public InputStream stream() throws Exception {
        return getBeanManager().stream(this);
    }

    synchronized public void read() throws Exception {
        Object source = null;
        if (getId() != null && getBeanManager() != null)
            source = getBeanManager().read(this.getId(), this.getClass());
        if (source == this)
            return;
        clear();
        if (source != null)
            BeanUtils.copyProperties(source, this);
    }

    synchronized public void read(String filter) throws Exception {
        Object source = null;
        if (filter != null && getBeanManager() != null)
            source = getBeanManager().readByFilter(this, filter, this.getClass());
        if (source == this)
            return;
        clear();
        if (source != null)
            BeanUtils.copyProperties(source, this);
    }

    synchronized public Bean clone() {
        Bean bean = null;
        try {
            bean = this.getClass().newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        BeanUtils.copyProperties(this, bean);
        return bean;
    }

    public Number create() throws Exception {
        setId(getBeanManager().create(this));
        return getId();
    }

    public void createOrUpdate() throws Exception {
        Bean bean = getBeanManager().readByFilter(this, "exists", this.getClass());
        if (bean == null) {
            setId(create());
        } else {
            setId(bean.getId());
            update();
        }
    }

    public Number update() throws Exception {
        return getBeanManager().update(this);
    }

    public Number delete() throws Exception {
        return getBeanManager().delete(this);
    }

    public Number execute(String what) throws Exception {
        return getBeanManager().execute(this, what);
    }

    synchronized public void clear() throws Exception {
        BeanManager beanManager = getBeanManager();
        PropertyDescriptor[] pds = BeanUtils.getPropertyDescriptors(this.getClass());
        for (PropertyDescriptor pd : pds) {
            if (pd.getWriteMethod() != null)
                BeanUtils.setValue(this, pd.getName(), null);
        }
        setBeanManager(beanManager);
    }

    public Object get(String propertyName) {
        return BeanUtils.getValue(this, propertyName);
    }

    public Map toMap(String[] allowedFields, String[] disallowedFields) {
        Map map = new HashMap();
        PropertyDescriptor[] pds = BeanUtils.getPropertyDescriptors(this.getClass());
        for (PropertyDescriptor pd : pds)
            try {
                String name = pd.getName();
                if (isAllowed(name, allowedFields) && !isDisallowed(name, disallowedFields)) {
                    Object value = BeanUtils.getValue(this, name);
                    if (value != null)
                        map.put(name, value);
                }
            } catch (Exception e) {
            }
        return map;
    }

    private boolean isAllowed(String name, String[] allowedFields) {
        if (allowedFields == null)
            return true;
        for (String field : allowedFields) {
            if (field.equals(name))
                return true;
        }
        return false;
    }

    private boolean isDisallowed(String name, String[] disallowedFields) {
        return isAllowed(name, disallowedFields);
    }

    public Map toMap() {
        return toMap(null, new String[]{"class", "beanManager"});
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy