Changeset 386fb91 in tol


Ignore:
Timestamp:
Jul 2, 2009, 6:57:17 PM (17 years ago)
Author:
Javier Portugal <javipor@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
6a081c4
Parents:
cdb9682
Message:

Changed implementation of method Activate for objects created by DBConnect

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@1136 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/stdlib/data/db/_db_connect.tol

    rcdb9682 r386fb91  
    33// PURPOSE: Data base connections
    44//////////////////////////////////////////////////////////////////////////////
    5 
    65
    76//////////////////////////////////////////////////////////////////////////////
    … …  
    1312  "User just needs to cretae all connections  at the begin of a project:\n"
    1413  "\n"
    15   "  DBHandler MyDbc_1 = DBConnect::Create(...);\n"
    16   "  DBHandler MyDbc_2 = DBConnect::Create(...);\n"
     14  "  NameBlock MyDbc_1 = DBConnect::Create(...);\n"
     15  "  NameBlock MyDbc_2 = DBConnect::Create(...);\n"
    1716  "\n"
    1817  "Afterwords user can call MyDbc_n::Open(0) or better MyDbc_n::Activate(0) "
    … …  
    2221  "recommended to avoid server overhead.";
    2322
    24   //////////////////////////////////////////////////////////////////////////////
    25   Class DBHandler 
    26   //////////////////////////////////////////////////////////////////////////////
    27   {
    28     Text _.autodoc.description;
    29     Text _.alias;
    30     Text _.user;
    31     Text _.password;
    32     Text _.server;
    33     Text _.driver;
    34     Text _.defaultDB;
    35     Real _.isOpen;
    36 
    37     Real Open(Real unused)
    38     {
    39       If(_.isOpen, 1,
    40       {
    41       //VBR: Esto es un parche para salvar el ticket #697 pero lo adecuado
    42       //sería poder usar los argumentos adicionales con el driver ODBC sin
    43       //necesidad de crear el alias en la configuración de herramientas del
    44       //sistema
    45         Real ok = If(_.driver=="odbc",
    46           DBOpen(_.alias, _.user, _.password),
    47           DBOpen(_.alias, _.user, _.password,
    48                  [[_.driver, _.defaultDB, _.server]]));
    49         Real _.isOpen := ok;
    50         WriteLn("[DBConnect::"+_.alias+"::Open] "+
    51          I2("Connection is ", "La conexión ")+
    52          If(ok,I2("is OK","tuvo exito"),I2("has failed","ha fallado")));
    53         ok
    54       })
    55     };
    56     Real Activate(Real unused)
    57     {
    58       If(!_.isOpen, Open(0), DBActivate(_.alias) )
    59     };
    60     Real Close(Real unused)
    61     {
    62       If(!_.isOpen, 0,
    63       {
    64         Real _.isOpen := false;
    65         DBClose(_.alias);
    66         Text DBConnect::currentAlias := "";
    67         Real True
    68       })
    69     };
    70     Real Check(Real unused)
    71     {
    72       WriteLn("[DBConnect::Create] "+
    73         I2("Checking connection to ",
    74            "Chequeando la conexión a ")+_.alias);
    75       Real ok.open = Open(0);
    76       If(!ok.open, false, Close(0))
    77     }
    78   };
    79 
    8023  //Stores all available connections
    8124  Set _.allConnections = Copy(Empty);
     25
     26  Text currentAlias = "";
    8227
    8328  ////////////////////////////////////////////////////////////////////////////
    … …  
    8833  ////////////////////////////////////////////////////////////////////////////
    8934  {
    90     DBHandler dbc =
     35    NameBlock dbc =
    9136    [[
    9237      Text _.autodoc.description =
    … …  
    9944      Text _.password  = password;
    10045      Text _.server    = server;
     46      Real _.isOpen    = false;
    10147      Text _.driver    =
    10248      {
    … …  
    11965      //Text _.defaultDB = If(_.driver=="odbc", alias, defaultDataBase);
    12066      Text _.defaultDB = defaultDataBase;
    121  
    122       Real _.isOpen    = false
     67
     68      Real Open(Real unused)
     69      {
     70        If(_.isOpen, 1,
     71        {
     72        //VBR: Esto es un parche para salvar el ticket #697 pero lo adecuado
     73        //sería poder usar los argumentos adicionales con el driver ODBC sin
     74        //necesidad de crear el alias en la configuración de herramientas del
     75        //sistema
     76          Real ok = If(_.driver=="odbc",
     77            DBOpen(_.alias, _.user, _.password),
     78            DBOpen(_.alias, _.user, _.password,
     79                   [[_.driver, _.defaultDB, _.server]]));
     80          Real _.isOpen := ok;
     81          If(ok,
     82          {
     83            Text DBConnect::currentAlias := _.alias;
     84            WriteLn("[DBConnect::"+_.alias+"::Open] "+
     85             I2("Connection is ", "La conexión ")+
     86             I2("is OK","tuvo exito"))
     87          },
     88          {
     89            WriteLn("[DBConnect::"+_.alias+"::Open] "+
     90             I2("Connection is ", "La conexión ")+
     91             I2("has failed","ha fallado"))
     92          });
     93          ok
     94        })
     95      };
     96      Real _IsActive(Real unused)
     97      {
     98         Set setAll = DBGetOpened("");
     99         Set setAct = Select(setAll, Real (Set reg) {
     100           Eq(reg["status"],1)
     101         });
     102         Text active = If(IsEmpty(setAct), "", setAct[1]["alias"]);
     103         Real (active==_.alias)
     104      };
     105      Real Activate(Real unused)
     106      {
     107        If(_IsActive(unused), True,
     108        {
     109          If(!_.isOpen, Open(0) );
     110          Real ok = DBActivate(_.alias);
     111          If(ok,
     112          {
     113            Text DBConnect::currentAlias := _.alias;
     114            WriteLn("[DBConnect::"+_.alias+"::Open] "+
     115             I2("Connection is ", "La conexión ")+
     116             I2("is now active","está ahora activa"))
     117          },
     118          {
     119            WriteLn("[DBConnect::"+_.alias+"::Open] "+
     120             I2("Connection is ", "La conexión ")+
     121             I2("cannot be activated","no se pudo activar"))
     122          });
     123          ok
     124        })
     125      };
     126      Real Close(Real unused)
     127      {
     128        If(!_.isOpen, 0,
     129        {
     130          Real _.isOpen := false;
     131          DBClose(_.alias)
     132        })
     133      };
     134      Real Check(Real unused)
     135      {
     136        WriteLn("[DBConnect::Create] "+
     137          I2("Checking connection to ",
     138             "Chequeando la conexión a ")+_.alias);
     139        Real ok.open = Open(0);
     140        If(!ok.open, false, Close(0))
     141      }
    123142    ]];
    124143    Real If(!ObjectExist("NameBlock","_.allConnections::"+alias),
    … …  
    132151  Real OpenAll(Real unused)
    133152  {
    134     SetMin(EvalSet(_.allConnections, Real(DBHandler dbc) { dbc::Open(0) }))
     153    SetMin(EvalSet(_.allConnections, Real(NameBlock dbc) { dbc::Open(0) }))
    135154  };
    136155  Real CheckAll(Real unused)
    137156  {
    138     SetMin(EvalSet(_.allConnections, Real(DBHandler dbc) { dbc::Check(0) }))
     157    SetMin(EvalSet(_.allConnections, Real(NameBlock dbc) { dbc::Check(0) }))
    139158  };
    140159  Real CloseAll(Real unused)
    141160  {
    142     SetMin(EvalSet(_.allConnections, Real(DBHandler dbc) { dbc::Close(0) }))
     161    SetMin(EvalSet(_.allConnections, Real(NameBlock dbc) { dbc::Close(0) }))
    143162  }
    144163]];
Note: See TracChangeset for help on using the changeset viewer.