// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.tsp.ers;

import java.util.Iterator;
import org.bouncycastle.operator.DigestCalculator;
import java.util.Collections;
import java.util.Collection;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

public class ERSDataGroup extends ERSCachingData
{
    protected List<ERSData> dataObjects;
    
    public ERSDataGroup(final ERSData... a) {
        (this.dataObjects = new ArrayList<ERSData>(a.length)).addAll(Arrays.asList(a));
    }
    
    public ERSDataGroup(final List<ERSData> list) {
        (this.dataObjects = new ArrayList<ERSData>(list.size())).addAll(list);
    }
    
    public ERSDataGroup(final ERSData o) {
        this.dataObjects = Collections.singletonList(o);
    }
    
    public List<byte[]> getHashes(final DigestCalculator digestCalculator, final byte[] array) {
        return ERSUtil.buildHashList(digestCalculator, this.dataObjects, array);
    }
    
    @Override
    public byte[] getHash(final DigestCalculator digestCalculator, final byte[] array) {
        final List<byte[]> hashes = this.getHashes(digestCalculator, array);
        if (hashes.size() > 1) {
            return ERSUtil.calculateDigest(digestCalculator, hashes.iterator());
        }
        return hashes.get(0);
    }
    
    @Override
    protected byte[] calculateHash(final DigestCalculator digestCalculator, final byte[] array) {
        final List<byte[]> hashes = this.getHashes(digestCalculator, array);
        if (hashes.size() > 1) {
            final ArrayList list = new ArrayList(hashes.size());
            for (int i = 0; i != list.size(); ++i) {
                list.add((Object)hashes.get(i));
            }
            return ERSUtil.calculateDigest(digestCalculator, list.iterator());
        }
        return (byte[])hashes.get(0);
    }
    
    public int size() {
        return this.dataObjects.size();
    }
}
