public class SimplePrint
{
public static void RecurseDataSet(File f, DataSet ds, String indent)
{
JavaDataSet cds = new JavaDataSet(ds);
while(!cds.IsAtEnd())
{
DataElement de = cds.GetCurrent();
VR vr = DataSetHelper.ComputeVR(f, ds, de.GetTag() );
if( vr.Compatible( new VR(VR.VRType.SQ) ) )
{
long uvl = de.GetVL().GetValueLength();
System.out.println( indent + de.GetTag().toString() + ":" + uvl );
SmartPtrSQ sq = de.GetValueAsSQ();
long n = sq.GetNumberOfItems();
for( long i = 1; i <= n; i++)
{
Item item = sq.GetItem( i );
DataSet nested = item.GetNestedDataSet();
RecurseDataSet( f, nested, indent + " " );
}
}
else
{
System.out.println( indent + de.toString() );
}
cds.Next();
}
}
public static void main(String[] args) throws Exception
{
String filename = args[0];
Reader reader = new Reader();
reader.SetFileName( filename );
boolean ret = reader.Read();
if( !ret )
{
throw new Exception("Could not read: " + filename );
}
File f = reader.GetFile();
DataSet ds = f.GetDataSet();
RecurseDataSet( f, ds, "" );
}
}