1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package com.rapiddweller.benerator.main;
28
29 import com.rapiddweller.benerator.BeneratorConstants;
30 import com.rapiddweller.benerator.BeneratorFactory;
31 import com.rapiddweller.benerator.engine.BeneratorContext;
32 import com.rapiddweller.benerator.file.XMLFileGenerator;
33 import com.rapiddweller.benerator.wrapper.ProductWrapper;
34 import com.rapiddweller.common.ArrayUtil;
35 import com.rapiddweller.common.IOUtil;
36 import com.rapiddweller.common.ui.ConsoleInfoPrinter;
37 import org.apache.logging.log4j.LogManager;
38 import org.apache.logging.log4j.Logger;
39
40 import java.io.File;
41 import java.text.MessageFormat;
42
43
44
45
46
47
48
49
50 public class XmlCreator {
51
52 private static final Logger logger = LogManager.getLogger(XmlCreator.class);
53
54
55
56
57
58
59 public static void main(String[] args) {
60 if (args.length < 3) {
61 printHelp();
62 System.exit(BeneratorConstants.EXIT_CODE_ERROR);
63 }
64 String schemaUri = args[0];
65 String root = args[1];
66 String pattern = args[2];
67 long fileCount = 1;
68 if (args.length >= 4) {
69 fileCount = Long.parseLong(args[3]);
70 }
71 String[] propertiesFiles = (args.length > 4 ? ArrayUtil.copyOfRange(args, 4, args.length - 4) : new String[0]);
72 createXMLFiles(schemaUri, root, pattern, fileCount, propertiesFiles);
73 }
74
75
76
77
78
79
80
81
82
83
84 public static void createXMLFiles(String schemaUri, String root,
85 String pattern, long fileCount, String[] propertiesFiles) {
86 logParams(schemaUri, root, pattern, fileCount);
87 long start = System.currentTimeMillis();
88 BeneratorContext context = BeneratorFactory.getInstance().createContext(IOUtil.getParentUri(schemaUri));
89 XMLFileGeneratortor.html#XMLFileGenerator">XMLFileGenerator fileGenerator = new XMLFileGenerator(schemaUri, root, pattern, propertiesFiles);
90 try (fileGenerator) {
91 fileGenerator.init(context);
92 for (long i = 0; i < fileCount; i++) {
93 ProductWrapper<File> file = fileGenerator.generate(new ProductWrapper<>());
94 if (file == null) {
95 throw new RuntimeException("Unable to create the expected number of files. " +
96 "Created " + i + " of " + fileCount + " files");
97 }
98 logger.info("created file: " + file);
99 }
100 }
101 long duration = System.currentTimeMillis() - start;
102 logger.info("Finished after " + duration + " ms");
103 }
104
105 private static void logParams(String schemaUri, String root, String pattern, long fileCount) {
106 if (logger.isDebugEnabled()) {
107 if (fileCount > 1) {
108 logger.debug("Creating " + fileCount + " XML files for schema " + schemaUri + " with root " + root + " and pattern " + pattern);
109 } else {
110 logger.debug("Creating XML file " + MessageFormat.format(pattern, fileCount) + " for schema " + schemaUri + " with root " + root);
111 }
112 }
113 }
114
115 private static void printHelp() {
116 ConsoleInfoPrinter.printHelp(
117 "Invalid parameters",
118 "parameters: schemaUri root fileNamePattern [count [propertiesFilenames]]"
119 );
120 }
121
122 }