Skip to content

Commit 7809d87

Browse files
committed
Added parametrized imports/fields count
1 parent c2f58f7 commit 7809d87

File tree

4 files changed

+73
-44
lines changed

4 files changed

+73
-44
lines changed

JavaProjectGenerator/src/de/loskutov/jpg/Clazz.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ public class Clazz extends JavaElement {
44

55
String implement;
66
String extend;
7-
7+
88
Clazz(String name, String packageName, String implement, String extend) {
99
super(name, packageName);
1010
this.implement = implement;
@@ -18,12 +18,12 @@ String generateCode() {
1818
return generateObject();
1919
}
2020
String type = genTypes.next();
21-
String s = "package " + packageName + ";\n\n" +
22-
"import " + imports.next() + ";\n\n" +
21+
String s = "package " + packageName + ";\n\n" +
22+
generateImports() +
2323
"@SuppressWarnings(\"all\")\n" +
24-
"public abstract class " + name + "<"+type+"> extends " + extend + "<"+type+"> implements " + implement + "<"+type+"> {\n\n" +
24+
"public abstract class " + name + "<"+type+"> extends " + extend + "<"+type+"> implements " + implement + "<"+type+"> {\n\n" +
2525
"\t public "+type+" element;\n\n" +
26-
"\t public " + fields.next() + " field1;\n\n" +
26+
generateFields() +
2727
"\t public static " + name + " instance;\n\n" +
2828
"\t public static " + name + " getInstance() {\n" +
2929
"\t \t return instance;\n" +
@@ -51,40 +51,40 @@ String generateCode() {
5151
"}\n";
5252
return s;
5353
}
54-
54+
5555
String generateObject() {
5656
String type = genTypes.next();
57-
String s = "package " + packageName + ";\n" +
58-
"import " + imports.next() + ";\n" +
57+
String s = "package " + packageName + ";\n\n" +
58+
generateImports() +
5959
"@SuppressWarnings(\"all\")\n" +
60-
"public abstract class " + name + "<"+type+"> implements " + implement + "<"+type+"> {\n" +
60+
"public abstract class " + name + "<"+type+"> implements " + implement + "<"+type+"> {\n\n" +
6161
"public "+type+" element;\n" +
62-
"public " + fields.next() + " field1;\n" +
63-
"public static " + name + " instance;\n" +
62+
generateFields() +
63+
"public static " + name + " instance;\n\n" +
6464
"public static " + name + " getInstance() {\n" +
6565
"\t return instance;\n" +
6666
"}\n" +
67-
67+
6868
"public static <T> T create(java.util.List<T> input) {\n" +
6969
"\t return null;\n" +
7070
"}\n" +
71-
71+
7272
"public String getName() {\n" +
7373
"\t return element.toString();\n" +
7474
"}\n" +
75-
75+
7676
"public void setName(String string) {\n" +
7777
"\t return;\n" +
7878
"}\n" +
79-
79+
8080
"public "+type+" get() {\n" +
8181
"\t return element;\n" +
8282
"}\n" +
83-
83+
8484
"public void set(Object element) {\n" +
8585
"\t this.element = ("+type+")element;\n" +
8686
"}\n" +
87-
87+
8888
"public "+type+" call() throws Exception {\n" +
8989
"\t return ("+type+")getInstance().call();\n" +
9090
"}\n" +

JavaProjectGenerator/src/de/loskutov/jpg/Interface.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ public class Interface extends JavaElement {
1212
@Override
1313
String generateCode() {
1414
String type = genTypes.next();
15-
String s = "package " + packageName + ";\n\n" +
16-
"import " + imports.next() + ";\n\n" +
15+
String s = "package " + packageName + ";\n\n" +
16+
generateImports() +
1717
"@SuppressWarnings(\"all\")\n" +
18-
"public interface " + name + "<"+type+"> extends " + extend + "<"+type+"> {\n\n" +
18+
"public interface " + name + "<"+type+"> extends " + extend + "<"+type+"> {\n\n" +
19+
20+
generateFields() +
1921

20-
"\t " + fields.next() + " ifield = null;\n\n" +
21-
2222
"\t String getName();\n\n" +
23-
23+
2424
"\t void setName(String s);\n\n" +
25-
25+
2626
"\t "+type+" get();\n\n" +
27-
27+
2828
"\t void set("+type+" e);\n\n" +
2929
"}\n";
3030
return s;

JavaProjectGenerator/src/de/loskutov/jpg/JavaElement.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212
import java.util.stream.IntStream;
1313

1414
public abstract class JavaElement {
15-
16-
static final List<String> IMPORTS = Arrays.asList(
15+
16+
static int fieldsCount = 3;
17+
static int importsCount = 3;
18+
19+
static final List<String> IMPORTS = Arrays.asList(
1720
"java.awt.datatransfer.*",
1821
"java.beans.beancontext.*",
1922
"java.io.*",
@@ -29,7 +32,7 @@ public abstract class JavaElement {
2932
"javax.net.ssl.*",
3033
"javax.rmi.ssl.*"
3134
);
32-
35+
3336
static final List<String> FIELDS = Arrays.asList(
3437
"java.awt.datatransfer.DataFlavor",
3538
"java.beans.beancontext.BeanContext",
@@ -46,35 +49,51 @@ public abstract class JavaElement {
4649
"javax.net.ssl.ExtendedSSLSession",
4750
"javax.rmi.ssl.SslRMIClientSocketFactory"
4851
);
49-
50-
static List<String> LETTERS = IntStream.rangeClosed('A', 'Z').mapToObj(x -> String.valueOf((char)x))
52+
53+
static final List<String> LETTERS = IntStream.rangeClosed('A', 'Z').mapToObj(x -> String.valueOf((char)x))
5154
.collect(Collectors.toList());
52-
55+
5356
String name;
5457
String packageName;
55-
static Ring<String> imports = new Ring<>(IMPORTS);
56-
static Ring<String> fields = new Ring<>(FIELDS);
57-
static Ring<String> genTypes = new Ring<>(LETTERS);
58-
58+
static final Ring<String> imports = new Ring<>(IMPORTS);
59+
static final Ring<String> fields = new Ring<>(FIELDS);
60+
static final Ring<String> genTypes = new Ring<>(LETTERS);
61+
5962
JavaElement(String name, String packageName){
6063
this.name = name;
6164
this.packageName = packageName;
6265
}
63-
66+
6467
abstract String generateCode();
65-
68+
69+
String generateImports() {
70+
StringBuilder sb = new StringBuilder();
71+
for (int i = 0; i < importsCount; i++) {
72+
sb.append("import ").append(imports.next()).append(";\n\n");
73+
}
74+
return sb.toString();
75+
}
76+
77+
String generateFields() {
78+
StringBuilder sb = new StringBuilder();
79+
for (int i = 0; i < fieldsCount; i++) {
80+
sb.append("\t ").append(fields.next()).append(" f").append(i).append(" = null;\n\n");
81+
}
82+
return sb.toString();
83+
}
84+
6685
void persist(Path root) throws IOException {
6786
try(BufferedWriter writer = createWriter(root)){
6887
String code = generateCode();
6988
writer.append(code);
7089
writer.flush();
7190
}
7291
}
73-
92+
7493
String fqn() {
7594
return packageName + "." + name;
7695
}
77-
96+
7897
BufferedWriter createWriter(Path root) throws IOException {
7998
Path path = root.resolve(packageName.replace('.', File.separatorChar)).resolve(name + ".java");
8099
Files.createDirectories(path.getParent());

JavaProjectGenerator/src/de/loskutov/jpg/Main.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,34 @@ public static void main(String[] args) throws IOException {
2121
int roots = 10;
2222
int depth = 10;
2323
int classes = 100;
24+
int fields = 1;
25+
int imports = 1;
2426
if(args.length == 0) {
2527
System.out.println("No arguments given, using defaults");
2628
} else {
2729
try {
28-
roots = Integer.parseUnsignedInt(args[0]);
29-
depth = Integer.parseUnsignedInt(args[1]);
30-
classes = Integer.parseUnsignedInt(args[2]);
31-
pathname = args[3];
30+
int argc = 0;
31+
pathname = args[argc++];
32+
roots = Integer.parseUnsignedInt(args[argc++]);
33+
depth = Integer.parseUnsignedInt(args[argc++]);
34+
classes = Integer.parseUnsignedInt(args[argc++]);
35+
fields = Integer.parseUnsignedInt(args[argc++]);
36+
imports = Integer.parseUnsignedInt(args[argc++]);
3237
} catch(Exception e) {
3338
//
3439
}
3540
}
3641
File rootDir = new File(pathname);
3742
Path root = rootDir.toPath();
3843
System.out.println("Writing to " + rootDir.getAbsolutePath());
39-
System.out.println("Roots: " + roots + ", depth: " + depth + ", classes & interfaces per package: " + (classes*2));
44+
System.out.println("Roots: " + roots + ", depth: " + depth +
45+
", classes & interfaces per package: " + (classes*2) +
46+
", imports+fields per class: " + imports + "+" + fields);
4047
System.out.println("Will generate " + roots + "x" + depth + "x" + classes + "x2 + 2 = " + (depth * roots* classes * 2 + 2) + " files");
4148

49+
JavaElement.fieldsCount = fields;
50+
JavaElement.importsCount = imports;
51+
4252
new JavaBuilder(depth, roots, classes, root).build();
4353
}
4454
}

0 commit comments

Comments
 (0)