/**
*
*/
package com.grendelscan.commons.http.dataHandling.data;
import com.grendelscan.commons.http.dataHandling.containers.DataContainer;
import com.grendelscan.commons.http.dataHandling.containers.DataContainerUtils;
import com.grendelscan.commons.http.dataHandling.references.DataReference;
import com.grendelscan.commons.http.dataHandling.references.DataReferenceChain;
/**
* @author david
*
*/
public abstract class AbstractData implements Data
{
/**
*
*/
private static final long serialVersionUID = 1L;
private DataContainer<?> parent;
private int transactionId;
public AbstractData(final DataContainer<?> parent, final int transactionId)
{
this.parent = parent;
this.transactionId = transactionId;
}
public String abstractDataDebugString()
{
StringBuilder sb = new StringBuilder();
// sb.append("Parent:\n");
// if (parent == null)
// {
// sb.append("\t<null>\n");
// }
// else
// {
// sb.append(StringUtils.indentLines(parent.debugString(), 1));
// }
sb.append("Reference: ");
sb.append(getReference().debugString());
sb.append("\nTransaction ID: ");
sb.append(transactionId);
return sb.toString();
}
/*
* (non-Javadoc)
*
* @see com.grendelscan.commons.http.dataContainers.Data#getParent()
*/
@Override
public DataContainer<?> getParent()
{
return parent;
}
@Override
public DataReference getReference()
{
return parent.getChildsReference(this);
}
@Override
public DataReferenceChain getReferenceChain()
{
return DataContainerUtils.getReferenceChain(this);
}
@Override
public final int getTransactionId()
{
return transactionId;
}
// @Override
// public DataReference getReference()
// {
// return reference;
// }
// public final void setReference(DataReference reference)
// {
// this.reference = reference;
// }
@Override
public boolean isDataAncestor(final DataContainer<?> container)
{
DataContainer<?> ancestor = parent;
while (ancestor != null)
{
if (ancestor == container)
{
return true;
}
ancestor = ancestor.getParent();
}
return false;
}
@Override
public void removeFromCollection()
{
parent.removeChild(this);
}
protected void setParent(final DataContainer<?> parent)
{
this.parent = parent;
}
@Override
public void setTransactionId(final int transactionId)
{
this.transactionId = transactionId;
}
}