View Javadoc
1   package com.atlassian.dbexporter.exporter;
2   
3   import com.atlassian.dbexporter.Context;
4   import com.atlassian.dbexporter.DatabaseInformation;
5   import com.atlassian.dbexporter.node.NodeCreator;
6   import com.atlassian.dbexporter.progress.ProgressMonitor;
7   
8   import java.util.Map;
9   
10  import static com.atlassian.dbexporter.node.NodeBackup.DatabaseInformationNode;
11  import static com.atlassian.dbexporter.progress.ProgressMonitor.Task;
12  import static com.google.common.base.Preconditions.checkNotNull;
13  import static java.util.Collections.emptyMap;
14  
15  public final class DatabaseInformationExporter implements Exporter {
16      private final DatabaseInformationReader databaseInformationReader;
17  
18      public DatabaseInformationExporter() {
19          this(new DatabaseInformationReader() {
20              public Map<String, String> get() {
21                  return emptyMap();
22              }
23          });
24      }
25  
26      public DatabaseInformationExporter(DatabaseInformationReader databaseInformationReader) {
27          this.databaseInformationReader = checkNotNull(databaseInformationReader);
28      }
29  
30      @Override
31      public void export(NodeCreator node, ExportConfiguration configuration, Context context) {
32          final ProgressMonitor monitor = configuration.getProgressMonitor();
33          monitor.begin(Task.DATABASE_INFORMATION);
34          final Map<String, String> properties = databaseInformationReader.get();
35          if (!properties.isEmpty()) {
36              export(node, properties);
37          }
38          context.put(new DatabaseInformation(properties));
39          monitor.end(Task.DATABASE_INFORMATION);
40      }
41  
42      private void export(NodeCreator node, Map<String, String> properties) {
43          node.addNode(DatabaseInformationNode.NAME);
44          for (Map.Entry<String, String> property : properties.entrySet()) {
45              DatabaseInformationNode.addMeta(node, property.getKey(), property.getValue());
46          }
47          node.closeEntity();
48      }
49  }