View Javadoc
1   package com.atlassian.activeobjects.backup;
2   
3   import com.atlassian.dbexporter.Context;
4   import com.atlassian.dbexporter.ForeignKey;
5   import com.atlassian.dbexporter.Table;
6   import com.atlassian.dbexporter.importer.ImportConfiguration;
7   import com.atlassian.dbexporter.importer.NoOpAroundImporter;
8   import com.atlassian.dbexporter.node.NodeParser;
9   import com.google.common.base.Function;
10  
11  import java.util.Collection;
12  
13  import static com.google.common.base.Preconditions.checkNotNull;
14  import static com.google.common.collect.Collections2.transform;
15  import static com.google.common.collect.Iterables.concat;
16  
17  public final class ForeignKeyAroundImporter extends NoOpAroundImporter {
18      private final ForeignKeyCreator foreignKeyCreator;
19  
20      public ForeignKeyAroundImporter(ForeignKeyCreator foreignKeyCreator) {
21          this.foreignKeyCreator = checkNotNull(foreignKeyCreator);
22      }
23  
24      @Override
25      public void after(NodeParser node, ImportConfiguration configuration, Context context) {
26          foreignKeyCreator.create(concat(transform(context.getAll(Table.class), getForeignKeysFunction())), configuration.getEntityNameProcessor());
27      }
28  
29      private Function<Table, Collection<ForeignKey>> getForeignKeysFunction() {
30          return new Function<Table, Collection<ForeignKey>>() {
31              public Collection<ForeignKey> apply(Table from) {
32                  return from.getForeignKeys();
33              }
34          };
35      }
36  }