Enlightenment CVS committal Author : chaos Project : e17 Module : apps/evfs
Dir : e17/apps/evfs/src/bin Modified Files: evfs_metadata.c Log Message: * More eet->sqlite3 =================================================================== RCS file: /cvs/e/e17/apps/evfs/src/bin/evfs_metadata.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- evfs_metadata.c 19 Jul 2006 17:06:36 -0000 1.13 +++ evfs_metadata.c 20 Jul 2006 09:04:47 -0000 1.14 @@ -238,25 +238,29 @@ int evfs_metadata_group_header_exists(char* group) { - Evas_List* l; - evfs_metadata_group_header* g; + char query[1024]; + int exists = 0; int ret; + sqlite3_stmt *pStmt; - ret = 0; + evfs_metadata_db_response_setup(); + evfs_metadata_db_results_init(); - for (l = metadata_root->group_list; l; ) { - g = l->data; - - if (!strcmp(g->name, group)) { - ret = 1; - goto GROUP_DONE; - } - - l = l->next; + snprintf(query, sizeof(query), "select id from MetaGroup where name='%s'", group); + ret = sqlite3_prepare(db, query, + -1, &pStmt, 0); + if (ret == SQLITE_OK) { + ret = sqlite3_step(pStmt); + if (ret == SQLITE_ROW) exists = sqlite3_column_int(pStmt,0); + } else { + printf("header_exists: sqlite_error\n"); } + + sqlite3_reset(pStmt); + sqlite3_finalize(pStmt); - GROUP_DONE: - return ret; + + return exists; } void evfs_metadata_initialise() @@ -421,29 +425,21 @@ Evas_List* evfs_metadata_groups_get() { int ret; - char* errMsg = 0; - evfs_metadata_db_result* result; Evas_List* ret_list = NULL; + sqlite3_stmt *pStmt; - evfs_metadata_db_response_setup(); - evfs_metadata_db_results_init(); + ret = sqlite3_prepare(db, "select name from MetaGroup where parent = 0", + -1, &pStmt, 0); - ret = sqlite3_exec(db, "select name from MetaGroup where parent = 0", - evfs_metadata_db_callback, 0,&errMsg); + do { + ret = sqlite3_step(pStmt); - evfs_metadata_db_response_block(); - - /*Print results*/ - ecore_dlist_goto_first(evfs_metdata_db_results); - - while ( (result = ecore_dlist_remove_first(evfs_metdata_db_results))) { - int i; - evfs_metadata_db_item* item; - item = result->fields[0]; - ret_list = evas_list_append(ret_list, strdup(item->value)); - } + if (ret == SQLITE_ROW) + ret_list = evas_list_append(ret_list, strdup(sqlite3_column_text(pStmt,0))); + } while (ret == SQLITE_ROW); - evfs_metadata_db_results_free(); + sqlite3_reset(pStmt); + sqlite3_finalize(pStmt); return ret_list; } @@ -454,71 +450,49 @@ } -char** -evfs_metadata_file_group_list(char* group, int* num) +Ecore_List* +evfs_metadata_file_group_list(char* group) { - char** ret_list; - char group_base[PATH_MAX]; - int i; - char* j; - - snprintf(group_base, sizeof(group_base), "/groups/%s:*", group); - - _evfs_metadata_eet = eet_open(metadata_file, EET_FILE_MODE_READ); - ret_list = eet_list(_evfs_metadata_eet, group_base, num); - - if (*num>0) { - for(i=0;i<*num;i++) { - j = index(ret_list[i], ':'); - if (j) ret_list[i] = j+1; - } - } - - return ret_list; -} + Ecore_List* ret_list; + char query[PATH_MAX]; + sqlite3_stmt *pStmt; + int ret; -evfs_metadata_file_groups* evfs_metadata_file_groups_get(evfs_filereference* ref) -{ - evfs_metadata_file_groups* groups = NULL; + ret_list = ecore_list_new(); - char* data; - int size; - int ret = 0; - char path[PATH_MAX]; - char* file_path; + snprintf(query, sizeof(query), "select f.filename from File f join FileGroup fg on f.id = fg.file join MetaGroup mg on mg.id = fg.metagroup where mg.name= '%s'", group); + ret = sqlite3_prepare(db, query, + -1, &pStmt, 0); - /*Build a path*/ - file_path = evfs_filereference_to_string(ref); + do { + ret = sqlite3_step(pStmt); - snprintf(path, PATH_MAX, "/filedata/%s/groups", file_path); + if (ret == SQLITE_ROW) + ecore_list_append(ret_list, strdup(sqlite3_column_text(pStmt,0))); + } while (ret == SQLITE_ROW); - _evfs_metadata_eet = eet_open(metadata_file, EET_FILE_MODE_READ); - data = eet_read(_evfs_metadata_eet, path, &size); - if (data) { - groups = eet_data_descriptor_decode(Evfs_Metadata_File_Groups_Edd, data, size); - free(data); - } - - free(file_path); - - return groups; + sqlite3_reset(pStmt); + sqlite3_finalize(pStmt); + + return ret_list; } void evfs_metadata_group_header_file_add(evfs_filereference* ref, char* group) { - evfs_metadata_file_groups* groups; - char path[PATH_MAX]; char* file_path; - char* data; - int size; int ret = 0; - evfs_metadata_group_header* header; - + + char* errMsg = 0; + char query[1024]; + + int groupid = 0; + int file = 0; + sqlite3_stmt *pStmt; /*First make sure this group exists*/ - if (evfs_metadata_group_header_exists(group)) { + if ( (groupid = evfs_metadata_group_header_exists(group))) { printf("Group exists - proceed\n"); } else { printf("Alert - group not found\n"); @@ -530,56 +504,36 @@ printf("File path is: %s\n", file_path); - /*Add to file groups*/ - snprintf(path, PATH_MAX, "/filedata/%s/groups", file_path); - - _evfs_metadata_eet = eet_open(metadata_file, EET_FILE_MODE_READ); - data = eet_read(_evfs_metadata_eet, path, &size); - eet_close(_evfs_metadata_eet); + snprintf(query, sizeof(query), "select id from File where filename ='%s'", file_path); + ret = sqlite3_prepare(db, query, + -1, &pStmt, 0); + + if (ret == SQLITE_OK) { + ret = sqlite3_step(pStmt); + if (ret == SQLITE_ROW) { + file = sqlite3_column_int(pStmt,0); + } else { + snprintf(query, sizeof(query), "insert into File (filename) select '%s';", file_path); + ret = sqlite3_exec(db, query, + NULL, 0,&errMsg); - if (data) { - printf("Found group data for file in eet..\n"); - - groups = eet_data_descriptor_decode(Evfs_Metadata_File_Groups_Edd, data, size); - free(data); + file = (int)sqlite3_last_insert_rowid(db); + } } else { - printf("File is not a member of a group - making new group collection..\n"); - - groups = calloc(1, sizeof(evfs_metadata_file_groups)); + printf("header_file_add: sqlite error\n"); } + sqlite3_reset(pStmt); + sqlite3_finalize(pStmt); - /*Check if we're already in group*/ - if (!evfs_metadata_file_groups_group_check(groups, group)) { - _evfs_metadata_eet = eet_open(metadata_file, EET_FILE_MODE_READ_WRITE); - - /*Add this to file groups*/ - header = evfs_metadata_group_header_new(group, NULL); - groups->groups = evas_list_append(groups->groups, header); - - /*Now write back to eet*/ - data = eet_data_descriptor_encode(Evfs_Metadata_File_Groups_Edd, groups, &size); - - if (data) { - ret = eet_write(_evfs_metadata_eet, path, data, size, 0); - } - if (ret) { - //printf("Wrote %d for %s\n", size, path); - } - free(data); + if (file && groupid) { + printf("File id: %d - Group id: %d\n", file, groupid); - - /*Add to the group itself*/ - snprintf(path, sizeof(path), "/groups/%s:%s", group, file_path); - eet_write(_evfs_metadata_eet, path, EVFS_METADATA_BASE_DATA, strlen(EVFS_METADATA_BASE_DATA), 0); - - eet_close(_evfs_metadata_eet); - } else { - printf("File aready in group %s!\n", group); + snprintf(query, sizeof(query), "insert into FileGroup (File,MetaGroup) values (%d,%d);", + file, groupid); + ret = sqlite3_exec (db, query, NULL, 0, &errMsg); } - /*Free groups*/ - evfs_metadata_file_groups_free(groups); - - free(file_path); + + evfs_metadata_db_results_free(); } ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs