#include #include #include #include "linklist.h" #include "databaseInit.h" /*-------------------------------------------------------------- * dbinit_InitDatabase() * * Description: Coordinates the creation and initionalization of * the database. Should be called by a public initialization * function. * * Module: db - Database simulator for ABM software * * Arguments: * char* filename: filename that contains database init file * * Return values: * 0 - Successful * 1 - Couldn't open input file * 2 - Other error *--------------------------------------------------------------*/ // Master database init function char dbinit_InitDatabase (char *filename, customerList *databaseHeadPointerPointer) { FILE *infile; char inLine[MAXIMUM_FILE_INPUT_LINE_LENGTH]; linklist_CreateCustomerList(databaseHeadPointerPointer); infile = fopen(filename, "r"); if (infile == NULL) return 1; while (fgets(inLine, MAXIMUM_FILE_INPUT_LINE_LENGTH, infile)) { db_init_ParseAndHandleInputLine(inLine, databaseHeadPointerPointer); // printf("Orig=%s", inLine); } //db_priv_StaticInit(databaseHeadPointerPointer); fclose(infile); linklist_debug_printDatabase(*databaseHeadPointerPointer); return 0; } void db_init_ParseAndHandleInputLine(char *inLine, customerList *databaseHeadPointerPointer) { char keyword[MAXIMUM_FILE_INPUT_LINE_LENGTH]; char param1[MAXIMUM_FILE_INPUT_LINE_LENGTH], param2[MAXIMUM_FILE_INPUT_LINE_LENGTH]; int paramInt1; double paramDouble1; customerList tempDatabaseHeadPointer; // printf("Passed in=%s", inLine); if (sscanf(inLine, "%s", keyword) > 0) { // Add Customer if(!strcmp(keyword, "AddCustomer")) { if(sscanf(inLine, "%s %s %s", keyword, param1, param2)) { tempDatabaseHeadPointer=linklist_AddCustomer(*databaseHeadPointerPointer, param1, param2); if(tempDatabaseHeadPointer != NULL) *databaseHeadPointerPointer=tempDatabaseHeadPointer; } else printf("Invalid database input line: %s\n", inLine); } // Comment line else if (!strcmp(keyword, "//")) {} // Add Account else if(!strcmp(keyword, "AddAccount")) { if(sscanf(inLine, "%s %s %i %s", keyword, param1, ¶mInt1, param2)) { tempDatabaseHeadPointer=linklist_AddAccount(*databaseHeadPointerPointer, param1, paramInt1, param2); if(tempDatabaseHeadPointer != NULL) *databaseHeadPointerPointer=tempDatabaseHeadPointer; } else printf("Invalid database input line: %s\n", inLine); } // Add Cheque else if(!strcmp(keyword, "AddCheque")) { if(sscanf(inLine, "%s %s %s %lf", keyword, param1, param2, ¶mDouble1)) { linklist_AddHeldCheque(*databaseHeadPointerPointer, param1, param2, paramDouble1); } else printf("Invalid database input line: %s\n", inLine); } // Add Cash else if(!strcmp(keyword, "AddCash")) { if(sscanf(inLine, "%s %s %s %lf", keyword, param1, param2, ¶mDouble1)) { linklist_AddCash(linklist_FindCustomer(*databaseHeadPointerPointer, param1), param2, paramDouble1); } else printf("Invalid database input line: %s\n", inLine); } else printf("Unknown keyword\n"); } } void db_priv_StaticInit (customerList *databaseHeadPointerPointer) { customerList tempDatabaseHeadPointer; char cardNumber[13]; char pinNumber[5]; strcpy(cardNumber, "12345678"); strcpy(pinNumber, "1234"); tempDatabaseHeadPointer=linklist_AddCustomer(*databaseHeadPointerPointer, cardNumber, pinNumber); if(tempDatabaseHeadPointer != NULL) *databaseHeadPointerPointer=tempDatabaseHeadPointer; linklist_AddAccount(*databaseHeadPointerPointer, cardNumber, ACCOUNT_TYPE_CHEQUING, "123456789012"); linklist_AddAccount(*databaseHeadPointerPointer, cardNumber, ACCOUNT_TYPE_SAVINGS, "234567890123"); linklist_AddAccount(*databaseHeadPointerPointer, cardNumber, ACCOUNT_TYPE_CREDIT_CARD, "345678901234"); linklist_AddAccount(*databaseHeadPointerPointer, cardNumber, ACCOUNT_TYPE_LINE_OF_CREDIT, "456789012345"); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 1364.2); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", .2); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 12); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 13); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 1364); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 112364.2); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 136234.2); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "234567890123", 1364.542); strcpy(cardNumber, "23456789"); strcpy(pinNumber, "2345"); tempDatabaseHeadPointer=linklist_AddCustomer(*databaseHeadPointerPointer, cardNumber, pinNumber); if(tempDatabaseHeadPointer != NULL) *databaseHeadPointerPointer=tempDatabaseHeadPointer; linklist_AddAccount(*databaseHeadPointerPointer, cardNumber, ACCOUNT_TYPE_CHEQUING, "567890123456"); linklist_AddHeldCheque(*databaseHeadPointerPointer, cardNumber, "567890123456", 332211); // linklist_debug_printDatabase(*databaseHeadPointerPointer); } // End StaticInit()