00001 //############################################################################## 00002 //# # 00003 //# fichier : ClientCom.cpp version : V1.0 # 00004 //# projet : GestionAsso date : 07/12/2004 # 00005 //# par : aerith # 00006 //# # 00007 //# Methodes de la classe ClientCom # 00008 //# # 00009 //############################################################################## 00010 00011 #include "ClientCom.h" 00012 #include "../src/Tools.h" 00013 00014 ClientCom::ClientCom() 00015 { 00016 Data = NULL; 00017 NbData = 0; 00018 Table = 0; 00019 Id = 0; 00020 Last = 0; 00021 Running = 0; 00022 } 00023 00024 ClientCom::~ClientCom() 00025 { 00026 if(Running == 1) 00027 Stop(); 00028 } 00029 00030 int ClientCom::Start(char *NomFichier) 00031 { 00032 int ErrorCode = 0; 00033 00034 if(Running == 0) 00035 { 00036 Running = 1; 00037 00038 ErrorCode = Connexion.Start(NomFichier); 00039 } 00040 else 00041 ErrorCode = 15; 00042 00043 if(ErrorCode) 00044 Stop(); 00045 00046 return ErrorCode; 00047 } 00048 00049 int ClientCom::Stop() 00050 { 00051 int ErrorCode = 0; 00052 00053 if(Running == 1) 00054 { 00055 Running = 0; 00056 00057 ErrorCode = Connexion.Stop(); 00058 00059 for(int i = 0; i < NbData; i++) 00060 delete [] Data[i]; 00061 00062 delete [] Data; 00063 00064 NbData = 0; 00065 Table = 0; 00066 Id = 0; 00067 Last = 0; 00068 } 00069 else 00070 ErrorCode = 16; 00071 00072 return ErrorCode; 00073 } 00074 /* 00075 int ClientCom::Insert(int Table, char *pData, int Id = 0) 00076 { 00077 int ErrorCode = 0; 00078 00079 if(Running == 1) 00080 { 00081 ErrorCode = SetTable(Buffer); 00082 00083 if(Table == 0) 00084 { 00085 delete [] DataOut; 00086 00087 DataOut = new char[8]; 00088 sprintf(DataOut, "%i", ERR_TABLE); 00089 } 00090 else 00091 { 00092 if(!ErrorCode) 00093 ErrorCode = SetId(Buffer); 00094 00095 if(!ErrorCode) 00096 ErrorCode = SetData(Buffer); 00097 00098 if(!ErrorCode) 00099 ErrorCode = Base.SetData(Data); 00100 00101 if(!ErrorCode) 00102 ErrorCode = Base.Write(Table, Id); 00103 00104 if(!ErrorCode) 00105 ErrorCode = Base.Read(Table, Id); 00106 00107 if(!ErrorCode) 00108 { 00109 delete [] DataOut; 00110 00111 DataOut = new char[strlen(Base.GetData()) + 16]; 00112 sprintf(DataOut, "%i %i %s", DATA, Table, Base.GetData()); 00113 } 00114 } 00115 } 00116 else 00117 ErrorCode = 16; 00118 00119 return ErrorCode; 00120 } 00121 00122 int ClientCom::Delet(char *Buffer) 00123 { 00124 int ErrorCode = 0; 00125 00126 if(Running == 1) 00127 { 00128 ErrorCode = SetTable(Buffer); 00129 00130 if(Table == 0) 00131 { 00132 delete [] DataOut; 00133 00134 DataOut = new char[8]; 00135 sprintf(DataOut, "%i", ERR_TABLE); 00136 } 00137 else 00138 { 00139 if(!ErrorCode) 00140 ErrorCode = SetId(Buffer); 00141 00142 if(Id == 0) 00143 { 00144 delete [] DataOut; 00145 00146 DataOut = new char[8]; 00147 sprintf(DataOut, "%i", ERR_ID); 00148 } 00149 else 00150 { 00151 if(!ErrorCode) 00152 ErrorCode = Base.Remove(Table, Id); 00153 00154 if(!ErrorCode) 00155 ErrorCode = Base.Read(Table); 00156 00157 if(!ErrorCode) 00158 { 00159 delete [] DataOut; 00160 00161 DataOut = new char[32]; 00162 sprintf(DataOut, "%i %i %i", NBENTRY, Table, Base.GetNbData()); 00163 } 00164 } 00165 } 00166 } 00167 else 00168 ErrorCode = 16; 00169 00170 return ErrorCode; 00171 } 00172 00173 int ClientCom::NbEntry(char *Buffer) 00174 { 00175 int ErrorCode = 0; 00176 00177 if(Running == 1) 00178 { 00179 ErrorCode = SetTable(Buffer); 00180 00181 if(Table == 0) 00182 { 00183 delete [] DataOut; 00184 00185 DataOut = new char[8]; 00186 sprintf(DataOut, "%i", ERR_TABLE); 00187 } 00188 else 00189 { 00190 if(!ErrorCode) 00191 ErrorCode = Base.Read(Table); 00192 00193 if(!ErrorCode) 00194 { 00195 delete [] DataOut; 00196 00197 DataOut = new char[32]; 00198 sprintf(DataOut, "%i %i %i", NBENTRY, Table, Base.GetNbData()); 00199 } 00200 } 00201 } 00202 else 00203 ErrorCode = 16; 00204 00205 return ErrorCode; 00206 } 00207 00208 int ClientCom::Select(char *Buffer) 00209 { 00210 int ErrorCode = 0; 00211 00212 if(Running == 1) 00213 { 00214 ErrorCode = SetTable(Buffer); 00215 00216 if(Table == 0) 00217 { 00218 delete [] DataOut; 00219 00220 DataOut = new char[8]; 00221 sprintf(DataOut, "%i", ERR_TABLE); 00222 } 00223 else 00224 { 00225 if(!ErrorCode) 00226 ErrorCode = SetId(Buffer); 00227 00228 if(!ErrorCode) 00229 ErrorCode = Base.Read(Table); 00230 00231 if(!ErrorCode) 00232 { 00233 delete [] DataOut; 00234 00235 if(Last == 0) 00236 { 00237 DataOut = new char[32]; 00238 sprintf(DataOut, "%i %i %i", NBENTRY, Table, Base.GetNbData()); 00239 00240 Last = 1; 00241 } 00242 else if(Last <= Base.GetNbData()) 00243 { 00244 DataOut = new char[strlen(Base.GetData(Last - 1)) + 16]; 00245 sprintf(DataOut, "%i %i %s", DATA, Table, Base.GetData(Last - 1)); 00246 00247 Last++; 00248 } 00249 else if(Last > Base.GetNbData()) 00250 { 00251 DataOut = new char[8]; 00252 sprintf(DataOut, "%i", OK); 00253 00254 Last = 0; 00255 } 00256 else 00257 ErrorCode = 13; 00258 } 00259 } 00260 } 00261 else 00262 ErrorCode = 16; 00263 00264 return ErrorCode; 00265 } 00266 00267 int ClientCom::WorkWithSql() 00268 { 00269 int ErrorCode = 0; 00270 00271 if(Running == 1) 00272 { 00273 delete [] DataOut; 00274 00275 DataOut = new char[8]; 00276 00277 if(Base.SetMode(MODE_SQL) == MODE_SQL) 00278 sprintf(DataOut, "%i", WORKWITHSQL); 00279 else 00280 sprintf(DataOut, "%i", WORKWITHFILE); 00281 } 00282 else 00283 ErrorCode = 16; 00284 00285 return ErrorCode; 00286 } 00287 00288 int ClientCom::WorkWithFile() 00289 { 00290 int ErrorCode = 0; 00291 00292 if(Running == 1) 00293 { 00294 delete [] DataOut; 00295 00296 DataOut = new char[8]; 00297 00298 if(Base.SetMode(MODE_FILE) == MODE_FILE) 00299 sprintf(DataOut, "%i", WORKWITHFILE); 00300 else 00301 sprintf(DataOut, "%i", WORKWITHSQL); 00302 } 00303 else 00304 ErrorCode = 16; 00305 00306 return ErrorCode; 00307 } 00308 00309 int ClientCom::FileToSql() 00310 { 00311 int ErrorCode = 0; 00312 00313 if(Running == 1) 00314 { 00315 ErrorCode = FileToSql(); 00316 00317 if(!ErrorCode) 00318 { 00319 delete [] DataOut; 00320 00321 DataOut = new char[32]; 00322 sprintf(DataOut, "%i %i", CONVERTED, Base.GetNbData()); 00323 } 00324 } 00325 else 00326 ErrorCode = 16; 00327 00328 return ErrorCode; 00329 } 00330 00331 int ClientCom::SqlToFile() 00332 { 00333 int ErrorCode = 0; 00334 00335 if(Running == 1) 00336 { 00337 ErrorCode = SqlToFile(); 00338 00339 if(!ErrorCode) 00340 { 00341 delete [] DataOut; 00342 00343 DataOut = new char[32]; 00344 sprintf(DataOut, "%i %i", CONVERTED, Base.GetNbData()); 00345 } 00346 } 00347 else 00348 ErrorCode = 16; 00349 00350 return ErrorCode; 00351 } 00352 00353 char *ClientCom::GetData() 00354 { 00355 return DataOut; 00356 } 00357 00358 int ClientCom::SetTable(char *Buffer) 00359 { 00360 int ErrorCode = 0; 00361 00362 if(Running == 1) 00363 { 00364 Table = 0; 00365 00366 if(isnumber(gettok2(Buffer, 1, " \n"))) 00367 Table = atod(gettok2(Buffer, 1, " \n")); 00368 else 00369 ErrorCode = 13; 00370 } 00371 else 00372 ErrorCode = 16; 00373 00374 return ErrorCode; 00375 } 00376 00377 int ClientCom::SetId(char *Buffer) 00378 { 00379 int ErrorCode = 0; 00380 00381 if(Running == 1) 00382 { 00383 Id = 0; 00384 00385 if(isnumber(gettok2(Buffer, 2, " \n"))) 00386 Id = atod(gettok2(Buffer, 2, " \n")); 00387 } 00388 else 00389 ErrorCode = 16; 00390 00391 return ErrorCode; 00392 } 00393 00394 int ClientCom::SetData(char *Buffer) 00395 { 00396 int ErrorCode = 0; 00397 00398 if(Running == 1) 00399 { 00400 if(gettok2(Buffer, 1, ":\n")) 00401 { 00402 delete [] Data; 00403 00404 Data = new char[strlen(gettok2(Buffer, 1, ":\n"))]; 00405 strcpy(Data, gettok2(Buffer, 1, ":\n")); 00406 } 00407 else 00408 ErrorCode = 13; 00409 } 00410 else 00411 ErrorCode = 16; 00412 00413 return ErrorCode; 00414 } 00415 */