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 }