|
21 | 21 | import com.google.common.collect.ImmutableMap; |
22 | 22 | import com.google.common.io.Closer; |
23 | 23 | import com.google.common.io.Files; |
| 24 | +import com.google.edwmigration.dumper.application.dumper.connector.Connector; |
| 25 | +import com.google.edwmigration.dumper.application.dumper.connector.LogsConnector; |
| 26 | +import com.google.edwmigration.dumper.application.dumper.connector.MetadataConnector; |
| 27 | +import com.google.edwmigration.dumper.application.dumper.handle.Handle; |
| 28 | +import com.google.edwmigration.dumper.application.dumper.io.FileSystemOutputHandleFactory; |
| 29 | +import com.google.edwmigration.dumper.application.dumper.io.OutputHandle; |
| 30 | +import com.google.edwmigration.dumper.application.dumper.io.OutputHandleFactory; |
| 31 | +import com.google.edwmigration.dumper.application.dumper.task.ArgumentsTask; |
| 32 | +import com.google.edwmigration.dumper.application.dumper.task.JdbcRunSQLScript; |
| 33 | +import com.google.edwmigration.dumper.application.dumper.task.Task; |
| 34 | +import com.google.edwmigration.dumper.application.dumper.task.TaskCategory; |
| 35 | +import com.google.edwmigration.dumper.application.dumper.task.TaskGroup; |
| 36 | +import com.google.edwmigration.dumper.application.dumper.task.TaskResult; |
| 37 | +import com.google.edwmigration.dumper.application.dumper.task.TaskRunContext; |
| 38 | +import com.google.edwmigration.dumper.application.dumper.task.TaskSetState; |
| 39 | +import com.google.edwmigration.dumper.application.dumper.task.TaskState; |
| 40 | +import com.google.edwmigration.dumper.application.dumper.task.VersionTask; |
24 | 41 | import java.io.File; |
25 | 42 | import java.io.IOException; |
26 | 43 | import java.net.URI; |
|
33 | 50 | import java.util.List; |
34 | 51 | import java.util.Map; |
35 | 52 | import java.util.ServiceLoader; |
| 53 | +import java.util.function.Function; |
| 54 | +import java.util.stream.Collectors; |
36 | 55 | import javax.annotation.CheckForNull; |
37 | 56 | import javax.annotation.Nonnegative; |
38 | 57 | import javax.annotation.Nonnull; |
39 | 58 | import org.apache.commons.lang3.StringUtils; |
40 | 59 | import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; |
41 | | -import com.google.edwmigration.dumper.application.dumper.connector.Connector; |
42 | | -import com.google.edwmigration.dumper.application.dumper.connector.LogsConnector; |
43 | | -import com.google.edwmigration.dumper.application.dumper.connector.MetadataConnector; |
44 | | -import com.google.edwmigration.dumper.application.dumper.handle.Handle; |
45 | | -import com.google.edwmigration.dumper.application.dumper.io.FileSystemOutputHandleFactory; |
46 | | -import com.google.edwmigration.dumper.application.dumper.task.ArgumentsTask; |
47 | | -import com.google.edwmigration.dumper.application.dumper.task.JdbcRunSQLScript; |
48 | | -import com.google.edwmigration.dumper.application.dumper.task.Task; |
49 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskRunContext; |
50 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskSetState; |
51 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskState; |
52 | | -import com.google.edwmigration.dumper.application.dumper.task.VersionTask; |
53 | 60 | import org.slf4j.Logger; |
54 | 61 | import org.slf4j.LoggerFactory; |
55 | | -import com.google.edwmigration.dumper.application.dumper.io.OutputHandle; |
56 | | -import com.google.edwmigration.dumper.application.dumper.io.OutputHandleFactory; |
57 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskCategory; |
58 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskGroup; |
59 | | -import com.google.edwmigration.dumper.application.dumper.task.TaskResult; |
60 | 62 |
|
61 | 63 | /** |
62 | 64 | * |
@@ -302,25 +304,38 @@ public <T> T runChildTask(Task<T> task) throws MetadataDumperUsageException { |
302 | 304 |
|
303 | 305 | if (requiredTasksNotSucceeded > 0) { |
304 | 306 | System.out.println( |
305 | | - "* ERROR: " + requiredTasksNotSucceeded + " required task[s] failed.\n" |
306 | | - + "* Output, including debugging information, has been saved to " + outputFile + "\n" |
| 307 | + "* ERROR: " + requiredTasksNotSucceeded + " required task[s] failed.\n" |
| 308 | + + "* Output, including debugging information, has been saved to " |
| 309 | + + outputFile + "\n" |
307 | 310 | + "**********************************************************" |
308 | 311 | ); |
309 | | - if (exitOnError) |
| 312 | + if (exitOnError) { |
310 | 313 | System.exit(1); |
| 314 | + } |
311 | 315 | } |
312 | 316 |
|
| 317 | + logStatusSummary(state); |
313 | 318 | } |
314 | 319 | } |
315 | 320 |
|
| 321 | + private void logStatusSummary(TaskSetState.Impl state) { |
| 322 | + state |
| 323 | + .getTaskResultMap().values().stream() |
| 324 | + .map(TaskResult::getState) |
| 325 | + .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) |
| 326 | + .forEach((key, value) -> System.out.printf("* %s: %d %n", key, value)); |
| 327 | + System.out.println("**********************************************************"); |
| 328 | + } |
| 329 | + |
316 | 330 | public static void main(String... args) throws Exception { |
317 | 331 | try { |
318 | 332 | MetadataDumper main = new MetadataDumper(); |
319 | 333 | args = JsonResponseFile.addResponseFiles(args); |
320 | 334 | //LOG.debug("Arguments are: [" + String.join("] [", args) + "]"); |
321 | 335 | // Without this, the dumper prints "Missing required arguments:[connector]" |
322 | | - if (args.length == 0) |
| 336 | + if (args.length == 0) { |
323 | 337 | args = new String[]{"--help"}; |
| 338 | + } |
324 | 339 | main.run(args); |
325 | 340 | } catch (MetadataDumperUsageException e) { |
326 | 341 | LOG.error(e.getMessage()); |
|
0 commit comments