package ru.hflabs.rcd.web.model.document; import com.google.common.base.Function; import ru.hflabs.rcd.model.Permissioned; import ru.hflabs.rcd.model.document.MetaField; import ru.hflabs.rcd.model.document.MetaFieldType; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; import java.io.Serializable; import static ru.hflabs.rcd.accessor.Accessors.GROUP_TO_META_FIELD_INJECTOR; import static ru.hflabs.rcd.model.ModelUtils.hasPermission; /** * Класс <class>MetaFieldBean</class> реализует декоратор МЕТА-поля справочника * * @see MetaField */ @XmlAccessorType(XmlAccessType.PROPERTY) public class MetaFieldBean implements Serializable { private static final long serialVersionUID = -1646979087852208227L; /** Функция создания декоратора */ public static final Function<MetaField, MetaFieldBean> CONVERT = new Function<MetaField, MetaFieldBean>() { @Override public MetaFieldBean apply(MetaField input) { return new MetaFieldBean(input); } }; /** МЕТА-поле справочника */ private MetaField delegate; public MetaFieldBean() { this(new MetaField()); } public MetaFieldBean(MetaField delegate) { this.delegate = delegate; } @XmlTransient public MetaField getDelegate() { return delegate; } public String getId() { return delegate.getId(); } public void setId(String id) { delegate.setId(id); } public String getHistoryId() { return delegate.getHistoryId(); } public void setHistoryId(String historyId) { delegate.setHistoryId(historyId); } public String getDictionaryId() { return delegate.getDictionaryId(); } public void setDictionaryId(String dictionaryId) { delegate.setDictionaryId(dictionaryId); } public String getName() { return delegate.getName(); } public void setName(String name) { delegate.setName(name); } public String getDescription() { return delegate.getDescription(); } public void setDescription(String description) { delegate.setDescription(description); } public void setType(MetaFieldType type) { delegate.setType(type); } public MetaFieldType getType() { return delegate.getType(); } public boolean isPrimary() { return delegate.isFlagEstablished(MetaField.FLAG_PRIMARY); } public void setPrimary(boolean primary) { delegate.changeFlag(primary, MetaField.FLAG_PRIMARY); } public boolean isUnique() { return delegate.isFlagEstablished(MetaField.FLAG_UNIQUE); } public void setUnique(boolean unique) { delegate.changeFlag(unique, MetaField.FLAG_UNIQUE); } public boolean isHidden() { return delegate.isFlagEstablished(MetaField.FLAG_HIDDEN); } public void setHidden(boolean hidden) { delegate.changeFlag(hidden, MetaField.FLAG_HIDDEN); } public boolean isWritable() { return hasPermission(GROUP_TO_META_FIELD_INJECTOR.apply(delegate), Permissioned.PERMISSION_WRITE); } }