com.enonic.cms.core.content.contentdata.custom.GroupDataEntry.java Source code

Java tutorial

Introduction

Here is the source code for com.enonic.cms.core.content.contentdata.custom.GroupDataEntry.java

Source

/*
 * Copyright 2000-2013 Enonic AS
 * http://www.enonic.com/license
 */
package com.enonic.cms.core.content.contentdata.custom;

import org.apache.commons.lang.builder.ToStringBuilder;

import com.enonic.cms.core.content.contentdata.MissingRequiredContentDataException;
import com.enonic.cms.core.content.contenttype.dataentryconfig.DataEntryConfig;

public class GroupDataEntry extends AbstractDataEntrySet implements DataEntrySet {
    private int groupIndex;

    public GroupDataEntry(GroupDataEntry other, int newGroupIndex) {
        super(other);
        this.groupIndex = newGroupIndex;
    }

    public GroupDataEntry(String name, String xpath) {
        super(resolveName(name, xpath), DataEntryType.GROUP, xpath);
    }

    public GroupDataEntry(String name, String xpath, int groupIndex) {
        super(resolveName(name, xpath), DataEntryType.GROUP, xpath);
        this.groupIndex = groupIndex;
    }

    public void validate() {
        // validate required data
        doValidateRequiredDataEntries();

        // Validate each data entry
        for (DataEntry dataEntry : entries) {
            dataEntry.validate();
        }
    }

    private void doValidateRequiredDataEntries() {
        for (DataEntryConfig dataEntryConfig : getConfig().getInputConfigs()) {
            DataEntry dataEntry = getEntry(dataEntryConfig.getName());

            if (dataEntryConfig.isRequired()) {
                validateRequiredDataEntry(dataEntryConfig, dataEntry);
            }
        }
    }

    @Override
    protected void validateRequiredDataEntry(final DataEntryConfig dataEntryConfig, final DataEntry dataEntry) {
        if (dataEntry == null) {
            throw MissingRequiredContentDataException.missingDataEntryInGroup(dataEntryConfig, this);
        } else if (!dataEntry.hasValue()) {
            throw MissingRequiredContentDataException.missingDataEntryValueInGroup(dataEntryConfig, this);
        } else if (dataEntry.breaksRequiredContract()) {
            throw MissingRequiredContentDataException.missingDataEntryValueInGroup(dataEntryConfig, this);
        }
    }

    public boolean hasAllDataEntries() {
        for (DataEntryConfig dataEntryConfig : getConfig().getInputConfigs()) {
            if (!entryMap.containsKey(dataEntryConfig.getName())) {
                return false;
            }
        }
        return true;
    }

    private static String resolveName(String name, String xpath) {
        if (name == null || name.trim().length() == 0) {
            return xpath;
        }

        return name;
    }

    public int getGroupIndex() {
        return groupIndex;
    }

    public void setGroupIndex(int groupIndex) {
        this.groupIndex = groupIndex;
    }

    @Override
    public String toString() {
        ToStringBuilder b = new ToStringBuilder(this);
        b.append("name", getName());
        b.append("groupIndex", groupIndex);
        return b.toString();
    }
}