hai vivek,
hope this helps
// This is a set of five functions
//
// Function makeHashTable  :
//              Takes a database ResultSet and places the data into a
//  Hashtable array for later use.
//
// Function cleanHashTable :
//  Takes a Hashtable array and removes the unused portion
//              of a hashtable array. For example: You use makeHashTable
//              and since it allocates the hashtable array in chunks of 20,
//              its possible that it creates a hashtable of size 40, but
//              only the first 22 indexes are used. So makeHashTable calls
//              the cleanHashTable function which resizes the Hashtable
//              array to only 22 indexes.
//
//Function columnOrder:
//  Since a Hashtable does not guarantee to maintain the order
//  of the elements put into it. This function produces a
//  hashtable to store the column order of the ResultSet
//
//Function hastToTabFile
//  An example on how to take a hashtable produced by the
//  makeHashTable function and turn it into a tab delimited
//  output string (used to download a dataresult as a flatfile)
//  This function uses a the results from the columnOrder
//  function to navigate the hashtable. If this function can't
//              find this index hashtable, it then passes the hashtable
//  to the hashToTab Function to step through the hashtable using
//  enumeration methods.
//
//Function hashToTab
//  If no index hasharray was found then this function uses
//  Enumeration to step through the Hashtable and return a
//  result
//
//////////////////////////////////////////////////////////////////////////
//  IMPORTANT!
// Please note the following.
// -If you are using Java 1.2 or better, You should use an ArrayList!
//  An arraylist is much much faster than a Hashtable.
// -You should only use a Hashtable or Vector when you want java 1.1.x
compatibility
//  -If you are using large amounts of data, this will be a slow solution
//   and you should seriously consider upgrading to Java 1.3 and use an
ArrayList.
//
//////////////////////////////////////////////////////////////////////////

  public Hashtable[] makeHashTable(ResultSet ars_data)
    {
      int li_columns  = 0;
      int li_rowcount = 0;

      Hashtable[] lht_results = new Hashtable[20];


      try
      {     // 1)get the column count and store our column order information
     //   in our first index of our Hashtable array
            ResultSetMetaData lmeta_data = ars_data.getMetaData();

            li_columns = lmeta_data.getColumnCount();

            if (li_columns > 0)
            {      lht_results[li_rowcount] =
columnOrder(lmeta_data,li_columns);
                   li_rowcount++;
            }


            // 2)loop through the result set and add the data 1 row at a
time to
     //   the hashtable array
            while (ars_data.next())
            {
  // 3) If we are at the last index of our hashtable then expand it
  //    by another 20 indexes
  if (li_rowcount == lht_results.length)
  {
   Hashtable[] lht_temp = new Hashtable[lht_results.length + 20];
   for (int li_loop = 0; li_loop < lht_results.length ; li_loop++)
   {
    lht_temp[li_loop] = lht_results[li_loop];
   }
   lht_results = lht_temp;
  }

  // 4) loop through our column information and add it to our hash array
  Hashtable lht_row = new Hashtable(1);
  for ( int i = 1; i <= li_columns; i++)
  {
   Object luo_value = null;
   try
   {
    luo_value = ars_data.getObject(i);
   }
   catch(Exception e){}
   if (luo_value ==null) luo_value = new String("");
   lht_row.put(lmeta_data.getColumnLabel(i),luo_value);
  }

  lht_results[li_rowcount] = lht_row;
  li_rowcount++;


            }
      }
      catch(SQLException e)
      {
      }


      if (lht_results[0] == null)
      {
            return null;
      }


      return cleanHashTable(lht_results);
    }



   private Hashtable[] cleanHashTable(Hashtable[] aht_data)
    {
        Hashtable[] lht_temp = null;
 int      li_total_rows = aht_data.length;

 // 1) loop thru and determine where the first null row appears
 for (int i=0; i<aht_data.length; i++)
 {
     if (aht_data[i] == null)
  {
   li_total_rows = i;
   break;
     }
 }

 // 2) rebuild a new hashtable array of the right size
 //    and reload it with your data
 if (li_total_rows < aht_data.length)
 { lht_temp = new Hashtable[li_total_rows];

  for (int i=0; i<li_total_rows; i++)
  {
   lht_temp[i] = aht_data[i];
  }

  aht_data = lht_temp;
  lht_temp = null;
 }

    return aht_data;
    }


  private Hashtable columnOrder(ResultSetMetaData ameta_data, int
ai_columns)
  {
      // 1) Size the Hashtable to be slighly larger than column count
      //    and load factor to 1 so the hash table wont have to resize
itself.
      Hashtable lht_row = new Hashtable((ai_columns + 3),1);

      try
      {     // 2) Store how many columns we have.
            lht_row.put("Column_Count",String.valueOf(ai_columns));

            // 3) Loop thru and store each column label and use its position
            //    number as its key
            for ( int i = 1; i <= ai_columns; i++)
            {

lht_row.put(String.valueOf(i),ameta_data.getColumnLabel(i));
            }
      }
      catch (SQLException e)
      {     // 4  Return a null result if an error happens
            lht_row = null;
      }

      return lht_row;
   }


 public String hastToTabFile(Hashtable[] ahash_data, boolean ab_header)
    {   //*****************************************************************
 // ahash_data: array of hashtables to convert to tabfile
 // ab_header : True if you want the tab file to include the headers
 //*****************************************************************
 String ls_tabfile = "";

 if (ahash_data == null)
 {  // 1) if no data then return empty file
  ls_tabfile = "";
 }
 else
 {
           // 2) first get column headers
           int li_column_count = 0;
           String ls_column_count =
ahash_data[0].get("Column_Count").toString();
           try
           {
              li_column_count = Integer.parseInt(ls_column_count);
           }
           catch(NumberFormatException e)
           {
      // 3) since this hashtable doesnt have the the column data stashed
      //    treat it as a normal hashtable array
             return hashToTab(ahash_data,ab_header);
           }


          // 4) Gather up each columns label/key name also build up the
header column
          String[] ls_indexes = new String[li_column_count];

          for(int icol = 0; icol < li_column_count; icol++)
          {
            ls_indexes[icol] =
ahash_data[0].get(String.valueOf(icol+1)).toString();
            if(ab_header) ls_tabfile  = ls_tabfile  + ls_indexes[icol] +
"\t";
          }


          // 5) Include the headers in the file if user requested them
          if(ab_header) ls_tabfile = ls_tabfile + "\n";


          // 6) loop through and gather tha data to display
          for (int irow=1; irow < ahash_data.length; irow++)
          { if (ahash_data[irow] != null)
  {
   for(int icol = 0; icol < li_column_count; icol++)
   {
      ls_tabfile = ls_tabfile +
ahash_data[irow].get(ls_indexes[icol]).toString() + "\t";
   }
   ls_tabfile = ls_tabfile + "\n";
  }
          }
      }

      return ls_tabfile;
    }


private String hashToTab(Hashtable[] ahash_data, boolean ab_header)
{//*****************************************************************
 // ahash_data: array of hashtables to convert to tabfile
 // ab_header : True if you want the tab file to include the headers
 //*****************************************************************
 String ls_tabfile = "";

 if (ahash_data == null)
 {       // 1) if no data return empty file
  ls_tabfile = "";
 }
 else
 {
  // 2) IF requested print out the header files
  if (ab_header)
  {
     for(Enumeration lenum_header = ahash_data[0].keys();
lenum_header.hasMoreElements();)
     {
                 String ls_col  = lenum_header.nextElement().toString() +
"\t";
   ls_tabfile = ls_tabfile + ls_col;
     }
     ls_tabfile = ls_tabfile + "\n";
  }

  // 3) Loop through the rows and gather tha data to display
  for (int i=0; i < ahash_data.length; i++)
  { Hashtable lhash_row = ahash_data[i];
   if (lhash_row != null)
   { // 4) Loop thru each column and prints the columns data
    for(Enumeration l_enum = lhash_row.keys(); l_enum.hasMoreElements();)
    {
     String ls_col = l_enum.nextElement().toString() ;
     ls_tabfile = ls_tabfile +  lhash_row.get(ls_col).toString() + "\t";
    }
    ls_tabfile   = ls_tabfile + "\n";
   }
  }
 }

 return ls_tabfile;
}



Regards,
manu

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.html
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets

Reply via email to