home *** CD-ROM | disk | FTP | other *** search
/ Java 1.2 How-To / JavaHowTo.iso / 3rdParty / jbuilder / TRIAL / JBUILDER / JVISBRKR.Z / CreditApprovalImpl.java < prev    next >
Encoding:
Java Source  |  1998-05-08  |  5.9 KB  |  155 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. //--------------------------------------------------------------------------------------------------
  21. // CORBA Reference Application
  22. // Copyright (c) 1997 by Borland International, All Rights Reserved
  23. //
  24. // Conatins Main Server class for the Server portion of the CORBA
  25. // Reference Application
  26. //--------------------------------------------------------------------------------------------------
  27.  
  28. package borland.reference.creditapproval.server;
  29.  
  30. import java.util.*;
  31. import borland.reference.creditapproval.CORBAInterface.*;
  32.  
  33. /**
  34. * CreditApprovalImpl implements the IDL-defined CreditApproval
  35. * interface. This class is instantiated by the CreditApprovalDispenserImpl class.
  36. *
  37. * Requests to approve credit are made by the client to this object.
  38. */
  39. public class CreditApprovalImpl extends _sk_CreditApproval {
  40.  
  41.   private boolean connectOnDemmand;
  42.  
  43.   // Do not use the singleton instance ( getDataModule() )
  44.   CreditHistoryReviewer creditReviewer;
  45.   CreditCardIssuer issueCreditCard;
  46.   ResourceBundle res = Res.getBundle("borland.reference.creditapproval.server.Res");
  47.  
  48.   /**
  49.   * Construct a persistently named object.
  50.   */
  51.   public CreditApprovalImpl(java.lang.String name, boolean onDemmand, boolean randomData )
  52.     throws Exception {
  53.  
  54.     super(name);
  55.  
  56.     connectOnDemmand   = onDemmand;
  57.  
  58.     // Instantiate Data Modules
  59.     creditReviewer  = new CreditHistoryReviewer( randomData );
  60.     issueCreditCard = new CreditCardIssuer();
  61.  
  62.     // If not connecting on demand, have the datamodules establish a DB connection
  63.     // now.
  64.     if (!connectOnDemmand) {
  65.       creditReviewer.connect( true );
  66.       issueCreditCard.connect( true );
  67.     }
  68.   }
  69.  
  70.   /**
  71.   * Construct a transient object.
  72.   */
  73.   public CreditApprovalImpl() {
  74.     super();
  75.   }
  76.  
  77.   /**
  78.   * Called by the client to approve and applicant for a credit card.  If the
  79.   * applicant is approved, a credit card is also issued.
  80.   */
  81.   public creditApprovalStruct getCreditApproval(
  82.     applicantInfoStruct appInfo,
  83.     ClientCallback callback )
  84.     throws CreditApprovalException,
  85.            CreditDeniedException {
  86.  
  87.     creditApprovalStruct creditApproval;
  88.  
  89.     // First Approve the applicant.
  90.     try{
  91.       callback.updateStatusText(res.getString("Processing_Credit") + "...");
  92.       // Make sure the applicant data is valid!
  93.       validateData( appInfo );
  94.  
  95.       if (connectOnDemmand) creditReviewer.connect( true );
  96.       creditApproval = creditReviewer.approveCredit( appInfo );
  97.  
  98.       // Disconnect to free up a connection for the issueCreditCard DataModule.
  99.       if (connectOnDemmand) creditReviewer.connect( false );
  100.  
  101.       // If the applicant was approved, issue a credit card!
  102.       if (creditApproval.approved) {
  103.         callback.updateStatusText(res.getString("Applicant_Approved") + "...");
  104.         if (connectOnDemmand) issueCreditCard.connect( true );
  105.         issueCreditCard.issueCreditCard( appInfo, creditApproval);
  106.       }
  107.     } catch( CreditApprovalException e) {
  108.       throw(e);
  109.     } catch (CreditDeniedException e ) {
  110.       throw(e);
  111.     } catch (Exception e) {
  112.       throw new CreditApprovalException(
  113.                                            e.getMessage() );
  114.     } finally {
  115.       // Make sure both objects are disconnected
  116.       if (connectOnDemmand) {
  117.         try {
  118.           creditReviewer.connect( false );
  119.           issueCreditCard.connect( false );
  120.         } catch (Exception e) {
  121.           System.err.println( e );
  122.         }
  123.       }
  124.     }
  125.  
  126.     // Return approval information.
  127.     return creditApproval;
  128.   }
  129.  
  130.   /**
  131.   *  Check the applicant information for validity
  132.   */
  133.   protected void validateData( applicantInfoStruct appInfo )
  134.     throws CreditApprovalException {
  135.  
  136.     // Make sure all REQUIRED fields contain data
  137.     if (appInfo.firstName.compareTo("") == 0) throw new CreditApprovalException("First name is required.");
  138.     if (appInfo.lastName.compareTo("") == 0) throw new CreditApprovalException("Last name is required.");
  139.     if (appInfo.address1.compareTo("") == 0) throw new CreditApprovalException("Address Line 1 is required.");
  140.     if (appInfo.city.compareTo("") == 0) throw new CreditApprovalException("City is required.");
  141.     if (appInfo.state.compareTo("") == 0) throw new CreditApprovalException("State is required.");
  142.     if (appInfo.postalCode.compareTo("") == 0) throw new CreditApprovalException("Postal Code is required.");
  143.     if (appInfo.country.compareTo("") == 0) throw new CreditApprovalException("Country is required.");
  144.     if (appInfo.phone.compareTo("") == 0) throw new CreditApprovalException("Phone is required.");
  145.     if (appInfo.DOB.compareTo("") == 0) throw new CreditApprovalException("DOB is required.");
  146.  
  147.     // Set non-required empty strings to SPACES to satisfy the Visigenic ODBC/JDBC driver.
  148.     // These should really be set to a database NULL.
  149.     if (appInfo.MI.compareTo("") == 0) appInfo.MI = " ";
  150.     if (appInfo.address2.compareTo("") == 0) appInfo.address2 = " ";
  151.     if (appInfo.PID.compareTo("") == 0) appInfo.PID = " ";
  152.   }
  153. }
  154.  
  155.