コード例 #1
0
ファイル: batch.c プロジェクト: patcon/eVACS
void get_papers_for_batch(PGconn *conn, struct batch *batch,
                          char *electorate_table_name)
/* load the batch structure pointed to by batch with paper data*/
{
    unsigned int i;
    PGresult *result;
    unsigned int num_rows,paper_id;

    result =  SQL_query(conn,
                        "SELECT id, "
                        "index, "
                        "supervisor_tick "
                        "FROM  paper "
                        "WHERE batch_number= %u "
                        "ORDER BY index;", batch->b.batch_number);

    num_rows = PQntuples(result);

    /*  build a return structure
     */
    for (i=0; i<num_rows; i++) {
        paper_id = atoi(PQgetvalue(result, i, 0));
        batch->papers[i].p.index = atoi(PQgetvalue(result,i,1));
        batch->papers[i].p.supervisor_tick =
            (*PQgetvalue(result, i, 2) == 't')?true:false;

        /* entries and sub-structures inserted into batch->papers */
        batch->papers[i].entries = get_entries_for_paper(conn,
                                   paper_id,electorate_table_name);

    }
    PQclear(result);

}
コード例 #2
0
ファイル: batch.c プロジェクト: darg0001/evoting-systems
/* DDSv2C: Get Paper  */
struct paper *get_paper(PGconn *conn, 
			unsigned int batch_number, 
			unsigned int paper_index)

{
	struct paper *ret;
	unsigned int paper_id, electorate_code;
	char *electorate_name, *paper_table_name;
	struct predefined_batch *batch;

	/* get electorate code */
	batch = resolve_batch_source(conn, batch_number);
	assert(batch);
	electorate_code = batch->electorate_code;

	/* get electorate name in order to access that Electorates
	   paper and entry tables */
	electorate_name = resolve_electorate_name(conn,electorate_code);
	paper_table_name = sprintf_malloc("%s_paper",electorate_name);
	
	
	/* find the (internal database) paper_id */
	paper_id = SQL_singleton_int(conn,
				     "SELECT id "
				     "FROM %s "
				     "WHERE batch_number = %u "
				     "AND index = %u;",
				     paper_table_name, 
				     batch_number, paper_index);

	ret = malloc(sizeof(*ret));

	if (paper_id ==(unsigned int) -1) {
	  /* new paper  */
	    ret->p.index = paper_index;
	    ret->p.supervisor_tick = false;
	    ret->entries = NULL;
	} else {
	        ret = malloc(sizeof(*ret));
	        ret->entries = get_entries_for_paper(conn, paper_id,
						     electorate_name);
	}

	free(electorate_name);
	free(paper_table_name);
	free(batch);
	
	return ret;
}
コード例 #3
0
ファイル: batch.c プロジェクト: patcon/eVACS
/* DDSv2C: Get Paper  */
struct paper *get_paper(unsigned int batch_number, unsigned int paper_index)

{
    PGconn *conn = connect_db_host(DATABASE_NAME, SERVER_ADDRESS);
    struct paper *ret;
    unsigned int paper_id, electorate_code;
    char *electorate_table_name;
    struct predefined_batch *batch;

    /* get electorate code */
    batch = resolve_batch_source(conn, batch_number);
    electorate_code = batch->electorate_code;

    /* get electorate name in order to access that Electorates
       preference table */
    electorate_table_name = resolve_electorate_name(conn,electorate_code);


    /* find the (internal database) paper_id */
    paper_id = SQL_singleton_int(conn,
                                 "SELECT id "
                                 "FROM paper "
                                 "WHERE batch_number = %u "
                                 "AND index = %u;",
                                 batch_number, paper_index);

    ret = malloc(sizeof(*ret));

    if (paper_id ==(unsigned int) -1) {
        /* new paper  */
        ret->p.index = paper_index;
        ret->p.supervisor_tick = false;
        ret->entries = NULL;
    } else {
        ret = malloc(sizeof(*ret));
        ret->entries = get_entries_for_paper(conn, paper_id,
                                             electorate_table_name);
    }

    free(electorate_table_name);
    PQfinish(conn);

    return ret;
}