static void get_meta_info( vdb_info_data * data, const KMetadata * meta ) { const KMDataNode * node; rc_t rc = KMetadataOpenNodeRead ( meta, &node, "schema" ); if ( rc == 0 ) { size_t size; rc = KMDataNodeReadAttr ( node, "name", data->schema_name, sizeof data->schema_name, &size ); if ( rc == 0 ) data->schema_name[ size ] = 0; KMDataNodeRelease ( node ); } rc = KMetadataOpenNodeRead ( meta, &node, "LOAD/timestamp" ); if ( rc == 0 ) { rc = KMDataNodeReadAsU64 ( node, &data->ts.timestamp ); if ( rc == 0 ) { KTime time_rec; KTimeLocal ( &time_rec, data->ts.timestamp ); data->ts.year = time_rec.year; data->ts.month = time_rec.month + 1; data->ts.day = time_rec.day + 1; data->ts.hour = time_rec.hour; data->ts.minute= time_rec.minute; } KMDataNodeRelease ( node ); } get_meta_event( meta, "SOFTWARE/formatter", &data->formatter ); get_meta_event( meta, "SOFTWARE/loader", &data->loader ); get_meta_event( meta, "SOFTWARE/update", &data->update ); }
/* FillOutTableRead * creates an empty cursor * accesses metadata */ static rc_t ReadSpotSequence_v1(SRATable *self) { const KMDataNode *n; rc_t rc = KMetadataOpenNodeRead(self->meta, &n, ".seq"); if (rc == 0) { rc = KMDataNodeReadAsU64(n, &self->spot_count); KMDataNodeRelease(n); } return rc; }
static rc_t sra_meta_stats_node_read(KMDataNode* node, void* value) { rc_t rc = KMDataNodeReadAsU64(node, value); if ( rc != 0 ) { if ( GetRCState ( rc ) == rcIncomplete && GetRCObject ( rc ) == rcTransfer ) { * ( uint64_t* ) value = 0; rc = 0; } } return rc; }
static rc_t qual_stats(const Params* prm, const VDatabase* db) { rc_t rc = 0; const char tblName[] = "SEQUENCE"; const VTable* tbl = NULL; const KMetadata* meta = NULL; const KMDataNode* node = NULL; assert(prm && db); if (rc == 0) { rc = VDatabaseOpenTableRead(db, &tbl, tblName); DISP_RC2(rc, tblName, "while calling VDatabaseOpenTableRead"); } if (rc == 0) { rc = VTableOpenMetadataRead(tbl, &meta); DISP_RC2(rc, tblName, "while calling VTableOpenMetadataRead"); } if (rc == 0) { bool found = false; const char path[] = "STATS/QUALITY"; rc = KMetadataOpenNodeRead(meta, &node, path); if (rc == 0) { found = true; } else if (GetRCState(rc) == rcNotFound) { rc = 0; } DISP_RC2(rc, path, "while calling KMetadataOpenNodeRead"); if (found) { uint32_t i = 0; int nbr = 0; uint32_t count = 0; KNamelist* names = NULL; int* quals = NULL; if (rc == 0) { rc = KMDataNodeListChild(node, &names); DISP_RC2(rc, path, "while calling KMDataNodeListChild"); } if (rc == 0) { rc = KNamelistCount(names, &count); DISP_RC2(rc, path, "while calling KNamelistCount"); if (rc == 0 && count > 0) { quals = calloc(count, sizeof *quals); if (quals == NULL) { rc = RC(rcExe, rcStorage, rcAllocating, rcMemory, rcExhausted); } } } for (i = 0; i < count && rc == 0; ++i) { /* uint64_t u = 0; const KMDataNode* n = NULL; */ const char* nodeName = NULL; const char* name = NULL; rc = KNamelistGet(names, i, &nodeName); DISP_RC2(rc, path, "while calling KNamelistGet"); if (rc) { break; } name = nodeName; /* rc = KMDataNodeOpenNodeRead(node, &n, name); DISP_RC(rc, name); if (rc == 0) { rc = KMDataNodeReadAsU64(n, &u); DISP_RC(rc, name); } */ if (rc == 0) { char* c = strchr(name, '_'); if (c != NULL && *(c + 1) != '\0') { name = c + 1; if (sscanf(name, "%d", &quals[i]) != 1) { rc = RC(rcExe, rcNode, rcParsing, rcName, rcUnexpected); PLOGERR(klogInt, (klogInt, rc, "$(name)", "name=%s", nodeName)); } } /* OUTMSG(("QUALITY %s %lu\n", name, u)); */ } /* DESTRUCT(KMDataNode, n); */ } if (rc == 0 && count > 0) { ksort(quals, count, sizeof *quals, sort_callback, NULL); } if (rc == 0) { OUTMSG(("%s", prm->dbPath)); } for (i = 0, nbr = 0; i < count && rc == 0; ++i, ++nbr) { uint64_t u = 0; char name[64]; const KMDataNode* n = NULL; sprintf(name, "PHRED_%d", quals[i]); rc = KMDataNodeOpenNodeRead(node, &n, name); DISP_RC(rc, name); if (rc == 0) { rc = KMDataNodeReadAsU64(n, &u); DISP_RC(rc, name); if (rc == 0) { while (nbr < quals[i]) { OUTMSG(("\t0")); ++nbr; } OUTMSG(("\t%lu", u)); /* OUTMSG(("QUALITY %d %lu\n", quals[i], u)); */ } } DESTRUCT(KMDataNode, n); } while (rc == 0 && nbr <= 40) { OUTMSG(("\t0")); nbr++; } if (rc == 0) { OUTMSG(("\n")); } DESTRUCT(KNamelist, names); } } DESTRUCT(KMDataNode, node); DESTRUCT(KMetadata, meta); DESTRUCT(VTable, tbl); return rc; }
inline rc_t Read ( uint64_t *value ) const throw() { return KMDataNodeReadAsU64 ( this, value ); }