@@ -15,17 +15,43 @@ public DatabaseManager(ManageClient manageClient) {
15
15
super (manageClient );
16
16
}
17
17
18
+ /**
19
+ * This will catch and log any exception by default, as the most frequent reason why this fails is because the
20
+ * database doesn't exist yet.
21
+ *
22
+ * @param databaseIdOrName
23
+ */
18
24
public void clearDatabase (String databaseIdOrName ) {
19
- String path = format ("/manage/v2/databases/%s" , databaseIdOrName );
20
- logger .info (format ("Clearing database %s" , databaseIdOrName ));
25
+ clearDatabase (databaseIdOrName , true );
26
+ }
27
+
28
+ public void clearDatabase (String databaseIdOrName , boolean catchException ) {
21
29
try {
22
- getManageClient ().postJson (path , "{\" operation\" :\" clear-database\" }" );
23
- logger .info (format ("Cleared database %s" , databaseIdOrName ));
30
+ invokeOperation (databaseIdOrName , "clear-database" );
24
31
} catch (Exception e ) {
25
- logger .error ("Unable to clear database; cause: " + e .getMessage ());
32
+ if (catchException ) {
33
+ logger .error ("Unable to clear database; cause: " + e .getMessage ());
34
+ } else {
35
+ throw e ;
36
+ }
26
37
}
27
38
}
28
39
40
+ public void mergeDatabase (String databaseIdOrName ) {
41
+ invokeOperation (databaseIdOrName , "merge-database" );
42
+ }
43
+
44
+ public void reindexDatabase (String databaseIdOrName ) {
45
+ invokeOperation (databaseIdOrName , "reindex-database" );
46
+ }
47
+
48
+ private void invokeOperation (String databaseIdOrName , String operation ) {
49
+ String path = format ("/manage/v2/databases/%s" , databaseIdOrName );
50
+ logger .info (format ("Invoking operation %s on database %s" , operation , databaseIdOrName ));
51
+ getManageClient ().postJson (path , format ("{\" operation\" :\" %s\" }" , operation ));
52
+ logger .info (format ("Finished invoking operation %s on database %s" , operation , databaseIdOrName ));
53
+ }
54
+
29
55
public void deleteByName (String databaseName ) {
30
56
String json = format ("{\" database-name\" :\" %s\" }" , databaseName );
31
57
delete (json );
@@ -46,13 +72,14 @@ public List<String> getForestIds(String databaseNameOrId) {
46
72
*/
47
73
public List <String > getForestNames (String databaseNameOrId ) {
48
74
Fragment f = getAsXml (databaseNameOrId );
49
- return f .getElementValues ("/node()/db:relations/db:relation-group[db:typeref='forests']/db:relation/db:nameref" );
75
+ return f .getElementValues (
76
+ "/node()/db:relations/db:relation-group[db:typeref='forests']/db:relation/db:nameref" );
50
77
}
51
78
52
79
/**
53
80
* @param databaseNameOrId
54
81
* @return the IDs of all primary forests related to the database. The properties endpoint for a database lists
55
- * primary forest IDs, but not replica forest IDs.
82
+ * primary forest IDs, but not replica forest IDs.
56
83
*/
57
84
public List <String > getPrimaryForestIds (String databaseNameOrId ) {
58
85
return getPropertiesAsXml (databaseNameOrId ).getElementValues ("/node()/m:forests/m:forest" );
0 commit comments