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

Java tutorial

Introduction

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

Source

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

import java.util.LinkedHashMap;
import java.util.Map;

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

/**
 * Apr 21, 2010
 */
public class BlockGroupDataEntries {
    private String blockName;

    private Map<Integer, GroupDataEntry> entriesByIndex = new LinkedHashMap<Integer, GroupDataEntry>();

    private int lastIndex = 0;

    public BlockGroupDataEntries(String blockName) {
        this.blockName = blockName;
    }

    public String getBlockName() {
        return blockName;
    }

    public void add(GroupDataEntry groupDataEntry) {
        Integer index = groupDataEntry.getGroupIndex();
        if (entriesByIndex.containsKey(index)) {
            throw new IllegalArgumentException("GroupDataEntry at index " + index + " already exists.");
        }

        entriesByIndex.put(index, groupDataEntry);
        lastIndex = index;
    }

    public Iterable<GroupDataEntry> getGroupDataEntries() {
        return entriesByIndex.values();
    }

    public int numberOfEntries() {
        return entriesByIndex.size();
    }

    public int lasIndex() {
        return lastIndex;
    }

    public int expectedNextIndex() {
        return lastIndex + 1;
    }

    public GroupDataEntry getGroupDataEntry(int index) {
        return entriesByIndex.get(index);
    }

    public boolean hasEntryAtIndex(int index) {
        return entriesByIndex.containsKey(index);
    }

    public boolean hasEntry(GroupDataEntry groupDataEntry) {
        return entriesByIndex.containsKey(groupDataEntry.getGroupIndex());
    }

    public void reorganizeBySuccesiveIndexOrder() {
        Map<Integer, GroupDataEntry> reorganisedEntriesByIndex = new LinkedHashMap<Integer, GroupDataEntry>();

        int index = 0;
        for (Map.Entry<Integer, GroupDataEntry> entry : entriesByIndex.entrySet()) {
            int newIndex = ++index;
            reorganisedEntriesByIndex.put(index, new GroupDataEntry(entry.getValue(), newIndex));
        }

        entriesByIndex = reorganisedEntriesByIndex;
        lastIndex = index;
    }

    @Override
    public String toString() {
        ToStringBuilder b = new ToStringBuilder(this);
        b.append("blockName", blockName);
        b.append("size", entriesByIndex.size());
        return b.toString();
    }
}