@@ -972,18 +972,14 @@ export class DatabaseUI extends DisposableObject {
972
972
}
973
973
974
974
/**
975
- * Ask the user for a database directory . Returns the chosen database, or `undefined` if the
976
- * operation was canceled .
975
+ * Import database from uri . Returns the imported database, or `undefined` if the
976
+ * operation was unsuccessful .
977
977
*/
978
- private async chooseAndSetDatabase (
978
+ private async importDatabase (
979
+ uri : Uri ,
979
980
byFolder : boolean ,
980
981
progress : ProgressCallback ,
981
982
) : Promise < DatabaseItem | undefined > {
982
- const uri = await chooseDatabaseDir ( byFolder ) ;
983
- if ( ! uri ) {
984
- return undefined ;
985
- }
986
-
987
983
if ( byFolder && ! uri . fsPath . endsWith ( "testproj" ) ) {
988
984
const fixedUri = await this . fixDbUri ( uri ) ;
989
985
// we are selecting a database folder
@@ -1001,6 +997,22 @@ export class DatabaseUI extends DisposableObject {
1001
997
}
1002
998
}
1003
999
1000
+ /**
1001
+ * Ask the user for a database directory. Returns the chosen database, or `undefined` if the
1002
+ * operation was canceled.
1003
+ */
1004
+ private async chooseAndSetDatabase (
1005
+ byFolder : boolean ,
1006
+ progress : ProgressCallback ,
1007
+ ) : Promise < DatabaseItem | undefined > {
1008
+ const uri = await chooseDatabaseDir ( byFolder ) ;
1009
+ if ( ! uri ) {
1010
+ return undefined ;
1011
+ }
1012
+
1013
+ return await this . importDatabase ( uri , byFolder , progress ) ;
1014
+ }
1015
+
1004
1016
/**
1005
1017
* Ask the user for a parent directory that contains all databases.
1006
1018
* Returns all valid databases, or `undefined` if the operation was canceled.
@@ -1024,24 +1036,38 @@ export class DatabaseUI extends DisposableObject {
1024
1036
message : `Importing ${ entry [ 0 ] } ` ,
1025
1037
} ) ;
1026
1038
1027
- if ( entry [ 1 ] === FileType . Directory ) {
1028
- try {
1029
- const fixedUri = await this . fixDbUri ( Uri . joinPath ( uri , entry [ 0 ] ) ) ;
1030
- const database = await this . databaseManager . openDatabase ( fixedUri , {
1031
- type : "folder" ,
1032
- } ) ;
1039
+ const subProgress : ProgressCallback = ( p ) => {
1040
+ progress ( {
1041
+ step : index + 1 ,
1042
+ maxStep : entries . length ,
1043
+ message : `Importing ${ entry [ 0 ] } (${ p . step } /${ p . maxStep } ): ${ p . message } ` ,
1044
+ } ) ;
1045
+ } ;
1046
+
1047
+ try {
1048
+ const fixedUri = await this . fixDbUri ( Uri . joinPath ( uri , entry [ 0 ] ) ) ;
1049
+ const database = await this . importDatabase (
1050
+ fixedUri ,
1051
+ entry [ 1 ] === FileType . Directory ,
1052
+ subProgress ,
1053
+ ) ;
1054
+ if ( database ) {
1033
1055
databases . push ( database ) ;
1034
- } catch ( e ) {
1056
+ } else {
1035
1057
failures . push ( entry [ 0 ] ) ;
1036
1058
}
1059
+ } catch ( e ) {
1060
+ failures . push ( entry [ 0 ] ) ;
1037
1061
}
1038
1062
}
1039
1063
1040
1064
if ( failures . length ) {
1041
1065
void showAndLogErrorMessage (
1042
1066
this . app . logger ,
1043
1067
`Failed to import ${ failures . length } database(s), successfully imported ${ databases . length } database(s).` ,
1044
- { fullMessage : `Failed to import ${ failures . length } database(s), successfully imported ${ databases . length } database(s). Failed folders to import:\n ${ failures . join ( "\n " ) } ` } ,
1068
+ {
1069
+ fullMessage : `Failed to import ${ failures . length } database(s), successfully imported ${ databases . length } database(s). Failed folders to import:\n - ${ failures . join ( "\n - " ) } ` ,
1070
+ } ,
1045
1071
) ;
1046
1072
} else if ( databases . length === 0 ) {
1047
1073
void showAndLogErrorMessage (
0 commit comments