home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / Lookup_Frame.java < prev    next >
Text File  |  1998-05-08  |  5KB  |  103 lines

  1. /*
  2.  * Copyright (c) 1997-1998 Borland International, Inc. All Rights Reserved.
  3.  * 
  4.  * This SOURCE CODE FILE, which has been provided by Borland as part
  5.  * of a Borland product for use ONLY by licensed users of the product,
  6.  * includes CONFIDENTIAL and PROPRIETARY information of Borland.  
  7.  *
  8.  * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
  9.  * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
  10.  * THE PRODUCT.
  11.  *
  12.  * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD BORLAND, ITS RELATED
  13.  * COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY CLAIMS
  14.  * OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR DISTRIBUTION
  15.  * OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES ARISING OUT OF
  16.  * OR RESULTING FROM THE USE, MODIFICATION, OR DISTRIBUTION OF PROGRAMS
  17.  * OR FILES CREATED FROM, BASED ON, AND/OR DERIVED FROM THIS SOURCE
  18.  * CODE FILE.
  19.  */
  20. package  borland.samples.tutorial.dataset.lookup;
  21.  
  22. import java.awt.*;
  23. import java.awt.event.*;
  24. import borland.jbcl.control.*;
  25. import borland.jbcl.layout.*;
  26. import borland.sql.dataset.*;
  27. import borland.jbcl.dataset.*;
  28.  
  29. public class Lookup_Frame extends DecoratedFrame {
  30.   BorderLayout borderLayout1 = new BorderLayout();
  31.   BevelPanel bevelPanel1 = new BevelPanel();
  32.   Database database1 = new Database();
  33.   QueryDataSet queryDataSet1 = new QueryDataSet();
  34.   QueryDataSet queryDataSet2 = new QueryDataSet();
  35.   GridControl gridControl1 = new GridControl();
  36.   Column column1 = new Column();
  37.   GridBagLayout gridBagLayout1 = new GridBagLayout();
  38.  
  39.    //Construct the frame
  40.   public Lookup_Frame() {
  41.     try {
  42.       jbInit();
  43.     }
  44.     catch (Exception e) {
  45.       borland.jbcl.util.Diagnostic.printStackTrace(e);
  46.     }
  47.   }
  48.   //Component initialization
  49.   private void jbInit() throws Exception{
  50.     this.setLayout(borderLayout1);
  51.     this.setTitle("Using Calculated Field for Lookup");
  52.     bevelPanel1.setLayout(gridBagLayout1);
  53.     database1.setConnection(new borland.sql.dataset.ConnectionDescriptor("jdbc:odbc:dataset tutorial", "sysdba", "masterkey", false, "sun.jdbc.odbc.JdbcOdbcDriver;borland.interclient.Driver"));
  54.     queryDataSet1.setQuery(new borland.sql.dataset.QueryDescriptor(database1, "select * from EMPLOYEE_PROJECT", null, true, Load.ALL));
  55.     queryDataSet1.addCalcFieldsListener(new Lookup_Frame_queryDataSet1_calcFieldsAdapter(this));
  56.     queryDataSet2.setQuery(new borland.sql.dataset.QueryDescriptor(database1, "select EMP_NO, FIRST_NAME, LAST_NAME from EMPLOYEE", null, true, Load.ALL));
  57.  
  58.     // No UI controls are bound to queryDataSet2, so it's not opened implicitly
  59.     // when the frame opens.  We have to open it here - otherwise, its column
  60.     // are unknown when the code in the calcFields method is executed.  
  61.     queryDataSet2.open();
  62.  
  63.     gridControl1.setDataSet(queryDataSet1);
  64.     column1.setCalcType(borland.jbcl.dataset.CalcType.CALC);
  65.     column1.setCaption("EMPLOYEE_NAME");
  66.     column1.setColumnName("EMPLOYEE_NAME");
  67.     column1.setDataType(borland.jbcl.util.Variant.STRING);
  68.     this.add(bevelPanel1, BorderLayout.CENTER);
  69.     bevelPanel1.add(gridControl1, new GridBagConstraints2(0, 0, 1, 1, 1.0, 1.0
  70.             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 8, 10, 8), 74, -327));
  71.     queryDataSet1.setColumns(new Column[] {column1});
  72.   }
  73.  
  74.   void queryDataSet1_calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  75.     // Define a DataRow to hold the employee number to look for in
  76.     // queryDataSet2, and another to hold the row of employee data that we find.
  77.     DataRow lookupRow = new DataRow(queryDataSet2, "EMP_NO");
  78.     DataRow resultRow = new DataRow(queryDataSet2);
  79.  
  80.     // The EMP_NO from the current row of queryDataSet1 is our lookup criterion.
  81.     // We look for the first match, since EMP_NO is unique.  If the lookup
  82.     // succeeds, concatenate the name fields from the employee data, and put
  83.     // the result in dataRow; otherwise, let the column remain blank.
  84.     lookupRow.setShort("EMP_NO", readRow.getShort("EMP_NO"));
  85.     if (queryDataSet2.lookup(lookupRow, resultRow, Locate.FIRST))
  86.       dataRow.setString("EMPLOYEE_NAME", resultRow.getString("FIRST_NAME") +
  87.         " " + resultRow.getString("LAST_NAME"));
  88.   }
  89. }
  90.  
  91. class Lookup_Frame_queryDataSet1_calcFieldsAdapter implements borland.jbcl.dataset.CalcFieldsListener {
  92.   Lookup_Frame adaptee;
  93.  
  94.   Lookup_Frame_queryDataSet1_calcFieldsAdapter(Lookup_Frame adaptee) {
  95.     this.adaptee = adaptee;
  96.   }
  97.  
  98.   public void calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  99.     adaptee.queryDataSet1_calcFields(readRow, dataRow, boolean1);
  100.   }
  101. }
  102.  
  103.