1 package org.apache.torque.mojo;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.Collections;
24 import java.util.Comparator;
25 import java.util.List;
26 import java.util.Vector;
27
28 import org.apache.commons.collections.comparators.ReverseComparator;
29 import org.apache.maven.plugin.MojoExecutionException;
30 import org.apache.torque.util.SimpleScanner;
31 import org.apache.torque.util.TransactionComparator;
32 import org.kuali.db.Transaction;
33
34
35
36
37
38
39
40 public class ImportMojo extends AbstractSQLExecutorMojo {
41 private static final String FS = System.getProperty("file.separator");
42
43 public enum Order {
44 ASCENDING, DESCENDING, NONE;
45 }
46
47
48
49
50
51
52
53 private File importDir;
54
55
56
57
58 private String importDirIncludes;
59
60
61
62
63 private String importDirExcludes = "";
64
65
66
67
68
69
70
71 private String order = Order.ASCENDING.toString();
72
73 protected void updateImportDir() {
74 String path = importDir.getAbsolutePath();
75 if (!path.endsWith(FS)) {
76 path += FS;
77 }
78 path += getTargetDatabase();
79 importDir = new File(path);
80 }
81
82 protected Vector<Transaction> getTransactions(List<File> files) {
83 Vector<Transaction> transactions = new Vector<Transaction>();
84 for (File file : files) {
85 Transaction t = new Transaction();
86 t.setResourceLocation(file.getAbsolutePath());
87 transactions.add(t);
88 }
89 return transactions;
90 }
91
92 @Override
93 protected void configureTransactions() throws MojoExecutionException {
94 updateImportDir();
95 List<File> files = new SimpleScanner(importDir, importDirIncludes, importDirExcludes).getFiles();
96 transactions = getTransactions(files);
97 sortTransactions(transactions);
98 }
99
100
101
102
103 @SuppressWarnings("unchecked")
104 protected void sortTransactions(Vector<Transaction> transactions) {
105 Comparator<Transaction> comparator = new TransactionComparator<Transaction>(getProject().getArtifactId());
106 if (Order.ASCENDING.toString().equals(order)) {
107 Collections.sort(transactions, comparator);
108 } else if (Order.DESCENDING.toString().equals(order)) {
109 Collections.sort(transactions, new ReverseComparator(comparator));
110 }
111 }
112
113 public File getImportDir() {
114 return importDir;
115 }
116
117 public void setImportDir(File importDirectory) {
118 this.importDir = importDirectory;
119 }
120
121 public String getImportDirIncludes() {
122 return importDirIncludes;
123 }
124
125 public void setImportDirIncludes(String importDirectoryIncludes) {
126 this.importDirIncludes = importDirectoryIncludes;
127 }
128
129 public String getImportDirExcludes() {
130 return importDirExcludes;
131 }
132
133 public void setImportDirExcludes(String importDirectoryExcludes) {
134 this.importDirExcludes = importDirectoryExcludes;
135 }
136
137 public String getOrder() {
138 return order;
139 }
140
141 public void setOrder(String order) {
142 this.order = order;
143 }
144 }