/** * */ package com.grendelscan.commons.http.dataHandling.containers; import java.util.*; import com.grendelscan.commons.http.dataHandling.data.*; import com.grendelscan.commons.http.dataHandling.references.DataReference; import com.grendelscan.commons.StringUtils; /** * @author david * */ public abstract class AbstractDataContainer<ReferenceType extends DataReference> extends AbstractData implements DataContainer<ReferenceType> { private static final long serialVersionUID = 1L; protected final List<Data> children; public AbstractDataContainer(DataContainer<?> parent, int transactionId) { super(parent, transactionId); children = new ArrayList<Data>(1); } @Override public synchronized Data[] getDataChildren() { return children.toArray(new Data[children.size()]); } @Override public void removeChild(Data child) { children.remove(child); } @Override public void setTransactionId(int transactionId) { super.setTransactionId(transactionId); for(Data child: getDataChildren()) { child.setTransactionId(transactionId); } } @Override public String childrenDebugString() { StringBuilder sb = new StringBuilder(); sb.append("Children:"); for(Data child: children) { sb.append("\n"); sb.append(StringUtils.indentLines(child.debugString(), 1)); } return sb.toString(); } }