home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 37 / IOPROG_37.ISO / SOFT / orient / Linux / demo / writeInvoice.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-15  |  2.4 KB  |  103 lines

  1. #ifdef COMP_BCB
  2. // BORLAND C++ BUILDER INCLUDES
  3. #include <condefs.h>
  4. #else
  5. #define USELIB( arg )
  6. #endif
  7.  
  8.  
  9. //---------------------------------------------------------------------------
  10. // CUSTOM DATABASE HEADER
  11. #include "business.h"
  12. //---------------------------------------------------------------------------
  13. #include <stdio.h>
  14. //---------------------------------------------------------------------------
  15. // BORLAND C++ BUILDER DIRECTIVES
  16. USELIB("..\..\..\lib\win32\bcb\ojust.lib");
  17.  
  18. //---------------------------------------------------------------------------
  19. int main(int argc, char* argv[])
  20. {
  21.   int     invoices = 1;
  22.   int     products = 0;
  23.  
  24.   if( argc > 1 )
  25.     // GET CUSTOMERS
  26.     invoices = atoi( argv[1] );
  27.  
  28.   if( argc > 2 )
  29.     // GET PRODUCTS
  30.     products = atoi( argv[2] );
  31.  
  32.   // START TRY/CATCH BLOCK FOR EXCEPTIONS CATCHING
  33.   try
  34.   {
  35.     d_Database    db;
  36.     d_Transaction tx;
  37.  
  38.     // OPEN DATABASE
  39.     db.open( "database/business" );
  40.  
  41.     // START TRANSACTION
  42.     tx.begin();
  43.  
  44.     d_Ref<Invoice>                                objInvoice;
  45.     d_Extent<Customer>                        customers( &db );
  46.     char                                                    query[100];
  47.     d_Ref<Product>                                objProduct;
  48.     int                                                        i, k;
  49.  
  50.     // CREATE <INVOICES> INVOICE OBJECTS
  51.     for( i = 0; i < invoices; ++i )
  52.     {
  53.       // CREATE NEW PERSISTENT OBJECT INTO DATABASE PREVOIUSLY OPEN
  54.       objInvoice = new( &db, "Invoice" ) Invoice;
  55.  
  56.       // FILL OBJECT
  57.       objInvoice->number = i;
  58.  
  59.       // SEARCH CUSTOMER WITH ID == INVOICE ID
  60.       sprintf( query, "Customer.code = %d", i );
  61.       objInvoice->ownCustomer = customers.select_element( query );
  62.  
  63.       if( objInvoice->ownCustomer.is_null() )
  64.       {
  65.         cout << endl << "Customer " << i << " not found!" << endl;
  66.         tx.abort();
  67.         break;
  68.       }
  69.  
  70.       // CREATE <PRODUCTS> PRODUCT OBJECTS
  71.       for( k = 0; k < products; ++k )
  72.       {
  73.         // CREATE NEW PERSISTENT OBJECT INTO DATABASE PREVOIUSLY OPEN
  74.         objProduct = new( &db, "Product" ) Product;
  75.  
  76.         // FILL OBJECT
  77.         objProduct->name  = "PC Completo serie A";
  78.         objProduct->price = k + 1400000;
  79.  
  80.         objInvoice->products.insert_element( objProduct );
  81.       }
  82.     }
  83.  
  84.     // COMMIT TRANSACTION
  85.     tx.commit();
  86.   }
  87.   catch( d_Error &e )
  88.   {
  89.     // DATABASE ERROR
  90.       cout << "d_Error " << e.what() << endl;
  91.   }
  92.   catch( ... )
  93.   {
  94.     // APPLICATION ERROR
  95.       cout << "ERRORE" << endl;
  96.   }
  97.  
  98.   return 0;
  99. }
  100.  
  101.  
  102.  
  103.