Print

Print


Commit in GeomConverter/src/org/lcsim/geometry/compact/converter/html on MAIN
HtmlConverter.java+152-71.1 -> 1.2
add some more features to html converter

GeomConverter/src/org/lcsim/geometry/compact/converter/html
HtmlConverter.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HtmlConverter.java	4 Jan 2011 21:59:13 -0000	1.1
+++ HtmlConverter.java	10 Jan 2011 20:51:16 -0000	1.2
@@ -1,6 +1,9 @@
 package org.lcsim.geometry.compact.converter.html;
 
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
 
@@ -10,6 +13,7 @@
 import org.lcsim.geometry.compact.Detector;
 import org.lcsim.geometry.compact.Field;
 import org.lcsim.geometry.compact.Header;
+import org.lcsim.geometry.compact.Readout;
 import org.lcsim.geometry.compact.Segmentation;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.field.Solenoid;
@@ -19,9 +23,12 @@
  * Convert a compact description to an html information page.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: HtmlConverter.java,v 1.1 2011/01/04 21:59:13 jeremy Exp $
+ * @version $Id: HtmlConverter.java,v 1.2 2011/01/10 20:51:16 jeremy Exp $
  */
 // TODO add css
+// TODO add timestamp at bottom including generation date, user name, and compact file
+// used;
+// maybe some of this info should be at top summary
 public class HtmlConverter
 {
     private HtmlConverter()
@@ -81,7 +88,25 @@
         // Add subdetector index.
         subdetectorIndex( td, detector, subdets );
 
-        // Header.
+        // Layout row.
+        td = addLayoutRow( tbl );
+
+        // Add system ID index.
+        sysIdIndex( td, detector );
+
+        // Layout row.
+        td = addLayoutRow( tbl );
+
+        // Add readout index.
+        readoutIndex( td, detector );
+
+        // Layout row.
+        td = addLayoutRow( tbl );
+
+        // Radiation and interaction lengths table.
+        lengthTable( td, detector, subdets );
+
+        // Header for subdetector details section.
         addHeader2( td, "Subdetector Details" );
 
         // Add subdetectors.
@@ -106,13 +131,90 @@
         // Fields.
         fields( td, detector );
 
+        // Layout row.
+        td = addLayoutRow( tbl );
+
+        // Timestamp footer.
+        timestamp( td );
+
         return root;
     }
 
+    private static void timestamp( Element parent )
+    {
+        Calendar cal = Calendar.getInstance();
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
+        String ts = new String( "Generated by GeomConverter at " + sdf.format( cal.getTime() ) + " by user " + System.getProperty( "user.name" ) + "." );
+
+        parent.addContent( new Element( "p" ).setText( ts ) );
+    }
+
+    private static void lengthTable( Element parent, Detector detector, List<String> subdets )
+    {
+        // Header.
+        addHeader2( parent, "Radiation and Interaction Lengths Table" );
+
+        Element tbl = new Element( "table" );
+        parent.addContent( tbl );
+        tbl.setAttribute( "border", "1" );
+        tbl.setAttribute( "cellpadding", "2" );
+
+        // Table header row.
+        addRow( tbl, new Element( "b" ).setText( "Subdetector" ), new Element( "b" ).setText( "Radiation Lengths" ), new Element( "b" ).setText( "Interaction Lengths" ) );
+
+        DecimalFormat dec = new DecimalFormat( "#.######" );
+
+        for ( String subdetName : subdets )
+        {
+            Subdetector subdet = detector.getSubdetector( subdetName );
+            AbstractLayeredSubdetector layers;
+            if ( subdet instanceof AbstractLayeredSubdetector )
+            {
+                layers = ( AbstractLayeredSubdetector ) subdet;
+                addRow( tbl, new Link( subdetName, "#" + subdetName ), dec.format( layers.getRadiationLengths() ), dec.format( layers.getInteractionLengths() ) );
+            }
+        }
+    }
+
+    private static void sysIdIndex( Element parent, Detector detector )
+    {
+        // Header.
+        addHeader2( parent, "SysId Index" );
+
+        // Table
+        Element tbl = new Element( "table" );
+        tbl.setAttribute( "border", "1" );
+        tbl.setAttribute( "cellpadding", "2" );
+        parent.addContent( tbl );
+
+        // Table header row.
+        addRow( tbl, new Element( "b" ).setText( "Sys Id" ), new Element( "b" ).setText( "Subdetector" ) );
+
+        // Make system ID list, only including non-zero values.
+        List<Integer> systemIds = new ArrayList<Integer>();
+        for ( Subdetector subdet : detector.getSubdetectors().values() )
+        {
+            if ( subdet.getSystemID() != 0 )
+            {
+                systemIds.add( subdet.getSystemID() );
+            }
+        }
+
+        // Sort system ID list.
+        java.util.Collections.sort( systemIds );
+
+        for ( Integer sysId : systemIds )
+        {
+            Subdetector subdet = detector.getSubdetector( sysId );
+            String subdetName = subdet.getName();
+            addRow( tbl, subdet.getSystemID(), new Link( subdetName, "#" + subdetName ) );
+        }
+    }
+
     private static void subdetectorIndex( Element parent, Detector detector, List<String> names )
     {
         // Header.
-        addHeader2( parent, "Subdetector Table" );
+        addHeader2( parent, "Subdetector Index" );
 
         // Table.
         Element tbl = new Element( "table" );
@@ -121,7 +223,7 @@
         parent.addContent( tbl );
 
         // todo: addHeaderRow method
-        addRow( tbl, new Element( "b" ).setText( "Subdetector" ), new Element( "b" ).setText( "Readout" ), new Element( "b" ).setText( "System ID" ) );
+        addRow( tbl, new Element( "b" ).setText( "Subdetector" ) );
 
         for ( String subdetName : names )
         {
@@ -132,7 +234,51 @@
                 readoutName = subdet.getReadout().getName();
             }
 
-            addRow( tbl, new Link( subdetName, "#" + subdetName ), readoutName, subdet.getSystemID() );
+            addRow( tbl, new Link( subdetName, "#" + subdetName ) );
+        }
+    }
+
+    private static void readoutIndex( Element parent, Detector detector )
+    {
+        // Header.
+        addHeader2( parent, "Readout Index" );
+
+        // Table
+        Element tbl = new Element( "table" );
+        tbl.setAttribute( "border", "1" );
+        tbl.setAttribute( "cellpadding", "2" );
+        parent.addContent( tbl );
+
+        // Table header row.
+        addRow( tbl, new Element( "b" ).setText( "Readout" ), new Element( "b" ).setText( "Subdetectors" ) );
+
+        // Alpha sort on readout name.
+        List<String> readoutNames = new ArrayList<String>( detector.getReadouts().keySet() );
+        java.util.Collections.sort( readoutNames );
+
+        // Process Readouts by name.
+        for ( String readoutName : readoutNames )
+        {
+            // Get the Readout.
+            Readout readout = detector.getReadout( readoutName );
+
+            // Get the list of Subdetectors.
+            List<Subdetector> subdets = new ArrayList<Subdetector>();
+
+            // Make list of associated Subdetectors.
+            Element span = new Element( "span" );
+            for ( Subdetector subdet : detector.getSubdetectors().values() )
+            {
+                // Check if Readout matches.
+                if ( subdet.getReadout() == readout )
+                {
+                    String subdetName = subdet.getName();
+                    span.addContent( new Link( subdetName, "#" + subdetName ) );
+                }
+            }
+
+            // Add row for this Readout.
+            addRow( tbl, readout.getName(), span );
         }
     }
 
@@ -209,7 +355,7 @@
             addLabeledRow( tbl, "Cell Size V", subdet.getReadout() != null ? cal.getCellSizeV() + " mm" : "NA" );
         }
     }
-    
+
     private static void defines( Element parent, Detector detector )
     {
         bookmark( parent, "defines" );
@@ -276,7 +422,6 @@
         return td;
     }
 
-    
     private static void addRow( Element table, Object... values )
     {
         if ( !table.getName().equals( "table" ) )
CVSspam 0.2.8