33import java .io .BufferedWriter ;
44import java .io .File ;
55import java .io .IOException ;
6+ import java .io .LineNumberReader ;
7+ import java .io .StringReader ;
68import java .nio .charset .StandardCharsets ;
79import java .nio .file .Files ;
810import java .nio .file .Path ;
@@ -15,6 +17,9 @@ public abstract class JavaElement {
1517
1618 static int fieldsCount = 3 ;
1719 static int importsCount = 3 ;
20+ static int commentsCount = 3 ;
21+ static int seeCount = 3 ;
22+ static int methodCounts = 1 ;
1823
1924 static final List <String > IMPORTS = Arrays .asList (
2025 "java.awt.datatransfer.*" ,
@@ -50,14 +55,44 @@ public abstract class JavaElement {
5055 "javax.rmi.ssl.SslRMIClientSocketFactory"
5156 );
5257
58+ static final List <String > LOREM = Arrays .asList (
59+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut " ,
60+ "labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. " ,
61+ "Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. " ,
62+ "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum " ,
63+ "dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent " ,
64+ "luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, " ,
65+ "consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. " ,
66+ "Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip " ,
67+ "ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, " ,
68+ "vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit " ,
69+ "praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. " ,
70+ "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat " ,
71+ "facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh " ,
72+ "euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis " ,
73+ "nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. " ,
74+ "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum " ,
75+ "dolore eu feugiat nulla facilisis. " ,
76+ "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata " ,
77+ "sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, " ,
78+ "sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. " ,
79+ "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata " ,
80+ "sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, " ,
81+ "At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt " ,
82+ "justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. "
83+ );
84+
5385 static final List <String > LETTERS = IntStream .rangeClosed ('A' , 'Z' ).mapToObj (x -> String .valueOf ((char )x ))
5486 .collect (Collectors .toList ());
5587
88+
89+
5690 String name ;
5791 String packageName ;
5892 static final Ring <String > imports = new Ring <>(IMPORTS );
5993 static final Ring <String > fields = new Ring <>(FIELDS );
6094 static final Ring <String > genTypes = new Ring <>(LETTERS );
95+ final Ring <String > loremIpsum = new Ring <>(LOREM );
6196
6297 JavaElement (String name , String packageName ){
6398 this .name = name ;
@@ -69,25 +104,48 @@ public abstract class JavaElement {
69104 String generateImports () {
70105 StringBuilder sb = new StringBuilder ();
71106 for (int i = 0 ; i < importsCount ; i ++) {
72- sb .append ("import " ).append (imports .next ()).append (";\n \n " );
107+ sb .append ("import " ).append (imports .next ()).append (";\n " );
108+ }
109+ sb .append ("\n " );
110+ return sb .toString ();
111+ }
112+
113+ String generateComments () {
114+ StringBuilder sb = new StringBuilder ();
115+ if (commentsCount > 0 ) {
116+ sb .append ("/**\n " );
117+ for (int i = 0 ; i < commentsCount ; i ++) {
118+ sb .append (" * " ).append (loremIpsum .next ()).append ("\n " );
119+ }
120+ sb .append (" *\n " );
121+ for (int i = 0 ; i < seeCount ; i ++) {
122+ sb .append (" * @see " ).append (fields .next ()).append ("\n " );
123+ }
124+ sb .append (" */\n " );
73125 }
74126 return sb .toString ();
75127 }
76128
77129 String generateFields () {
78130 StringBuilder sb = new StringBuilder ();
79131 for (int i = 0 ; i < fieldsCount ; i ++) {
80- sb .append ("\t " ).append (fields .next ()).append (" f" ).append (i ).append (" = null;\n \n " );
132+ sb .append ("\t " ).append (fields .next ()).append (" f" ).append (i ).append (" = null;\n " );
81133 }
134+ sb .append ("\n " );
82135 return sb .toString ();
83136 }
84137
85- void persist (Path root ) throws IOException {
138+ int persist (Path root ) throws IOException {
139+ int lines = 0 ;
86140 try (BufferedWriter writer = createWriter (root )){
87141 String code = generateCode ();
142+ LineNumberReader lineNumberReader = new LineNumberReader (new StringReader (code ));
143+ lineNumberReader .skip (Long .MAX_VALUE );
144+ lines = lineNumberReader .getLineNumber ();
88145 writer .append (code );
89146 writer .flush ();
90147 }
148+ return lines ;
91149 }
92150
93151 String fqn () {
0 commit comments