Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "tinder.h"
- #define CHECK_RESULT(res)\
- switch (res) {\
- case TINDER_OUT_OF_MEMORY:\
- mtmPrintErrorMessage(stderr, MTM_OUT_OF_MEMORY);\
- tinderDestroy(tinder);\
- return -1;\
- break;\
- case TINDER_HOBBY_ALREADY_EXISTS:\
- mtmPrintErrorMessage(stderr, MTM_HOBBY_ALREADY_EXISTS);\
- break;\
- case TINDER_HOBBY_DOES_NOT_EXIST:\
- mtmPrintErrorMessage(stderr, MTM_HOBBY_DOES_NOT_EXIST);\
- break;\
- case TINDER_NO_HOBBIES:\
- mtmPrintErrorMessage(stderr, MTM_NO_HOBBIES);\
- break;\
- case TINDER_USER_ALREADY_EXISTS:\
- mtmPrintErrorMessage(stderr, MTM_USER_ALREADY_EXISTS);\
- break;\
- case TINDER_USER_DOES_NOT_EXIST:\
- mtmPrintErrorMessage(stderr, MTM_USER_DOES_NOT_EXIST);\
- break;\
- case TINDER_NO_USERS:\
- mtmPrintErrorMessage(stderr, MTM_NO_USERS);\
- break;\
- case TINDER_USER_ALREADY_PARTICIPATES_HOBBY:\
- mtmPrintErrorMessage(stderr,\
- MTM_USER_ALREADY_PARTICIPATES_HOBBY);\
- break;\
- case TINDER_USER_DOESNT_PARTICIPATE_HOBBY:\
- mtmPrintErrorMessage(stderr,\
- MTM_USER_DOESNT_PARTICIPATE_HOBBY);\
- break;\
- case TINDER_USER_ALREADY_FRIEND:\
- mtmPrintErrorMessage(stderr,\
- MTM_USER_DOESNT_PARTICIPATE_HOBBY);\
- break;\
- case TINDER_NO_USER_REQUEST:\
- mtmPrintErrorMessage(stderr,\
- MTM_NO_USER_REQUEST);\
- break;\
- case TINDER_USER_NOT_FRIEND:\
- mtmPrintErrorMessage(stderr,\
- MTM_USER_NOT_FRIEND);\
- break;\
- case TINDER_INVALID_PARAMETERS:\
- mtmPrintErrorMessage(stderr,\
- MTM_INVALID_PARAMETERS);\
- break;\
- default: break;\
- }
- int handleCommandLine(FILE * input, FILE * output, int argc, char** argv);
- TinderResult handleCommand(FILE* input, FILE* output,Tinder tinder);
- TinderResult handleUserCommand(char* command, Tinder tinder);
- TinderResult handleHobbyCommand(char* command, Tinder tinder);
- TinderResult handleReport(char* command, Tinder tinder);
- int main(int argc, char** argv){
- FILE * input = stdin;
- FILE * output = stdout;
- int cmdLineRes = handleCommandLine(input,output,argc,argv);
- if(cmdLineRes == -1){
- mtmPrintErrorMessage(stderr, MTM_CANNOT_OPEN_FILE);
- return -1;
- }
- else if(cmdLineRes == -2){
- mtmPrintErrorMessage(stderr, MTM_INVALID_COMMAND_LINE_PARAMETERS);
- return -1;
- }
- Tinder tinder = createTinder();
- if(!tinder){
- mtmPrintErrorMessage(stderr, MTM_OUT_OF_MEMORY);
- return -1;
- }
- TinderResult res = handleCommand(input, output, tinder);
- CHECK_RESULT(res)
- tinderDestroy(tinder);
- if(argc>1){
- fclose(input);
- fclose(output);
- }
- return 0;
- }
- int handleCommandLine(FILE * input, FILE * output, int argc, char** argv){
- switch(argc){
- case 1: input=stdin;
- output=stdout;
- break;
- case 3: if(strcmp(argv[1],"-i") == 0){
- output=stdout;
- input=fopen(argv[2],"r");
- if(!input){
- return -1;
- }
- } else if(strcmp(argv[1],"-o") == 0){
- input=stdin;
- output=fopen(argv[2],"w");
- if(!output){
- return -1;
- }
- } else return -2;
- break;
- case 5: if(strcmp(argv[1],"-i") == 0 && strcmp(argv[3],"-o") == 0){
- input=fopen(argv[2],"r");
- if(!input){
- return -1;
- }
- output=fopen(argv[4],"w");
- if(!output){
- fclose(input);
- return -1;
- }
- } else if(strcmp(argv[1],"-o") == 0 &&
- strcmp(argv[3],"-i") == 0){
- input=fopen(argv[4],"r");
- if(!input){
- return -1;
- }
- output=fopen(argv[2],"w");
- if(!output){
- fclose(input);
- return -1;
- }
- } else return -2;
- break;
- default: return -2;
- }
- return 1;
- }
- TinderResult handleCommand(FILE* input, FILE* output,Tinder tinder){
- char line[MAX_LEN+1];
- TinderResult res;
- while(fgets(line,MAX_LEN+1,input)){
- char *command;
- char *subCommand;
- command=strtok(line,"\t\n ");
- if(command){
- subCommand=strtok(NULL,"\t\n ");
- if (subCommand) {
- if (command[0] == '#') {
- continue;
- } else if (strcmp(command, "user") == 0) {
- res = handleUserCommand(subCommand, tinder);
- } else if (strcmp(command, "hobby") == 0) {
- res = handleHobbyCommand(subCommand, tinder);
- } else if (strcmp(command, "report") == 0) {
- res = handleReport(subCommand, tinder);
- }
- }
- if(res == TINDER_OUT_OF_MEMORY){
- return res;
- }
- }
- }
- return res;
- }
- TinderResult handleUserCommand(char* command,Tinder tinder){
- TinderResult res;
- if(strcmp(command, "add") == 0){
- char *id=strtok(NULL,"\t\n ");
- int nId = atoi(id);
- char *name=strtok(NULL,"\t\n ");
- char *birth=strtok(NULL,"\t\n ");
- int nBirth = atoi(birth);
- char *gender=strtok(NULL,"\t\n ");
- Gender gGender = (Gender)gender;
- char *pref=strtok(NULL,"\t\n ");
- Gender gPref = (Gender)pref;
- res = tinderUserAdd(nId, name, nBirth, gGender, gPref, tinder);
- } else if (strcmp(command, "remove") == 0){
- char *id=strtok(NULL,"\t\n ");
- int nId = atoi(id);
- res = tinderUserRemove(tinder, nId);
- } else if (strcmp(command, "friend_request") == 0){
- char *requesting_id=strtok(NULL,"\t\n ");
- int nRequesting_id = atoi(requesting_id);
- char *requested_id=strtok(NULL,"\t\n ");
- int nRequested_id = atoi(requested_id);
- res = tinderUserFriendRequest(tinder, nRequesting_id, nRequested_id);
- } else if (strcmp(command, "handle_request") == 0){
- char *requesting_id=strtok(NULL,"\t\n ");
- int nRequesting_id = atoi(requesting_id);
- char *requested_id=strtok(NULL,"\t\n ");
- int nRequested_id = atoi(requested_id);
- char *choice=strtok(NULL,"\t\n ");
- res = tinderUserHandleRequest(tinder, nRequesting_id, nRequested_id, choice);
- } else if (strcmp(command, "unfriend") == 0){
- char *requesting_id=strtok(NULL,"\t\n ");
- int nRequesting_id = atoi(requesting_id);
- char *requested_id=strtok(NULL,"\t\n ");
- int nRequested_id = atoi(requested_id);
- res = tinderUserUnfriend(tinder, nRequesting_id, nRequested_id);
- } else if (strcmp(command, "who_can_i_date") == 0){
- char *id=strtok(NULL,"\t\n ");
- int nId = atoi(id);
- char *count=strtok(NULL,"\t\n ");
- int nCount = atoi(count);
- res = tinderUserWhoCanIDate(tinder, nId, nCount);
- }
- return res;
- }
- TinderResult handleHobbyCommand(char* command,Tinder tinder){
- TinderResult res;
- char *hobbyName = strtok(NULL,"\t\n ");
- if(strcmp(command, "add") == 0){
- res = tinderHobbyAdd(tinder, hobbyName);
- } else if(strcmp(command, "remove") == 0){
- res = tinderHobbyRemove(tinder, hobbyName);
- } else if(strcmp(command, "join") == 0){
- char *id = strtok(NULL,"\t\n ");
- int nId = atoi(id);
- res = tinderHobbyJoin(tinder,hobbyName, nId);
- } else if(strcmp(command, "leave") == 0){
- char *id = strtok(NULL,"\t\n ");
- int nId = atoi(id);
- res = tinderHobbyLeave(tinder, hobbyName, nId);
- }
- return res;
- }
- TinderResult handleReport(char* command, Tinder tinder){
- TinderResult res;
- if(strcmp(command, "hobbies") == 0){
- char *count = strtok(NULL,"\t\n ");
- int nCount = atoi(count);
- res = tinderHobbyReport(tinder, nCount);
- } else if(strcmp(command, "users") == 0){
- res = tinderUserReport(tinder);
- } else if(strcmp(command, "hobbies_by_age") == 0){
- res = tinderHobbyReportByAge(tinder);
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement