static rc_t add_include( void *data, const char *my_name ) { VSchema *my_schema = (VSchema*)data; rc_t rc = VSchemaAddIncludePath( my_schema, "%s", my_name ); display_rescode( rc, "VSchemaAddIncludePath failed", NULL ); return rc; }
static rc_t pacbio_load_schema( ld_context *lctx, const char *schema_name ) { rc_t rc; if ( pacbio_is_schema_dflt( schema_name ) ) { rc = VDBManagerMakeSRASchema ( lctx->vdb_mgr, &lctx->schema ); if ( rc != 0 ) LOGERR( klogErr, rc, "cannot create sra-schema" ); if ( rc == 0 ) { rc = VSchemaParseFile ( lctx->schema, schema_name ); if ( rc != 0 ) PLOGERR( klogErr, ( klogErr, rc, "cannot to parse schema file '$(schema)'", "schema=%s", schema_name ) ); } } else { rc = VDBManagerMakeSchema ( lctx->vdb_mgr, &lctx->schema ); if ( rc != 0 ) LOGERR( klogErr, rc, "cannot create sra-schema" ); else { char path[ 4096 ]; rc = pacbio_extract_path( lctx->wd, schema_name, path, sizeof path ); if ( rc == 0 ) { rc = VSchemaAddIncludePath ( lctx->schema, path ); if ( rc != 0 ) PLOGERR( klogErr, ( klogErr, rc, "cannot add schema-include-path '$(path)'", "path=%s", path ) ); else { rc = VSchemaParseFile ( lctx->schema, schema_name ); if ( rc != 0 ) PLOGERR( klogErr, ( klogErr, rc, "cannot to parse schema file '$(schema)'", "schema=%s", schema_name ) ); } } } } return rc; }
rc_t open (param_block * pb) { rc_t rc; rc = KDirectoryNativeDir (&pb->pwd); if (rc) LOGERR (klogFatal, rc, "Failed to open file system"); else { rc = KDirectoryOpenFileRead (pb->pwd, &pb->file, "%s", pb->file_path); if (rc) LOGERR (klogFatal, rc, "Failed to open input file"); else { rc = KMMapMakeRead (&pb->mmap, pb->file); if (rc) LOGERR (klogFatal, rc, "unable to map file"); else { rc = VDBManagerMakeUpdate (&pb->mgr, pb->pwd); if (rc) LOGERR (klogFatal, rc, "Failed to open DB Manager"); else { rc = VDBManagerMakeSchema (pb->mgr, &pb->schema); if (rc) LOGERR (klogFatal, rc, "Failed to create a schema object"); else { VSchemaAddIncludePath (pb->schema, "interfaces"); rc = VSchemaParseFile (pb->schema, "%s", pb->schema_path); if (rc) LOGERR (klogFatal, rc, "Failed to parse schema"); else { rc = VDBManagerCreateTable (pb->mgr, &pb->table, pb->schema, TYPESPEC, kcmCreate, "%s", pb->table_path); if (rc) LOGERR (klogFatal, rc, "Failed to create table"); else { rc = VTableCreateCursorWrite (pb->table, &pb->cursor, kcmCreate); if (rc) LOGERR (klogFatal, rc, "Failed to create cursor"); else { rc = VCursorAddColumn (pb->cursor, &pb->idx, "READ"); if (rc) LOGERR (klogFatal, rc, "Failed to add READ to cursor"); else { rc = VCursorOpen (pb->cursor); if (rc) LOGERR (klogFatal, rc, "Failed to open cursor"); else { rc = write_rows (pb); if (rc == 0) VCursorCommit (pb->cursor); } } VCursorRelease (pb->cursor); } VTableRelease (pb->table); } } VSchemaRelease (pb->schema); } VDBManagerRelease (pb->mgr); } KMMapRelease (pb->mmap); } KFileRelease (pb->file); } KDirectoryRelease (pb->pwd); } return rc; }