@@ -71,6 +71,12 @@ public void run(ApplicationArguments args) throws IOException {
7171 System .out .println (" - id" );
7272 System .out .println (" - vendor_id" );
7373 System .out .println (" - amount" );
74+ System .out .println (" --first" );
75+ System .out .println (" indicate that adding column at first position" );
76+ System .out .println (" --after-by-name" );
77+ System .out .println (" indicate that adding column at after specified column name" );
78+ System .out .println (" --after-by-position" );
79+ System .out .println (" indicate that adding column at after specified column position" );
7480 System .out .println (" --h (--help)" );
7581 System .out .println (" print help" );
7682 System .out .println ();
@@ -91,6 +97,28 @@ public void run(ApplicationArguments args) throws IOException {
9197 System .out .println (" insert into xxxx (a,b,c) values ('123',1,'123');" );
9298 System .out .println (" ------------------------" );
9399 System .out .println ();
100+ System .out .println (
101+ " e.g.) --command=adding-columns --dir=src/test/resources/data --files=xxx.sql,yyy.sql --column-names=d,e --column-values=1,#a --first" );
102+ System .out .println (" ------------------------" );
103+ System .out .println (" insert into xxxx (a,b,c) values('123','1','2');" );
104+ System .out .println (" ------------------------" );
105+ System .out .println (" ↓" );
106+ System .out .println (" ------------------------" );
107+ System .out .println (" insert into xxxx (d,e,a,b,c) values (1,'123','123','1','2');" );
108+ System .out .println (" ------------------------" );
109+ System .out .println ();
110+ System .out .println (
111+ " e.g.) --command=adding-columns --dir=src/test/resources/data --files=xxx.sql,yyy.sql --column-names=d,e --column-values=1,#a --after-by-name=a" );
112+ System .out .println (
113+ " --command=adding-columns --dir=src/test/resources/data --files=xxx.sql,yyy.sql --column-names=d,e --column-values=1,#a --after-by-position=1" );
114+ System .out .println (" ------------------------" );
115+ System .out .println (" insert into xxxx (a,b,c) values('123','1','2');" );
116+ System .out .println (" ------------------------" );
117+ System .out .println (" ↓" );
118+ System .out .println (" ------------------------" );
119+ System .out .println (" insert into xxxx (a,d,e,b,c) values ('123',1,'123','1','2');" );
120+ System .out .println (" ------------------------" );
121+ System .out .println ();
94122 System .out .println ("[Usage: deleting-columns]" );
95123 System .out .println (" Deleting specified existing column using column-names(or column-positions)." );
96124 System .out .println (
@@ -106,7 +134,8 @@ public void run(ApplicationArguments args) throws IOException {
106134 System .out .println (" ------------------------" );
107135 System .out .println ();
108136 System .out .println ("[Usage: updating-columns]" );
109- System .out .println (" Updating value specified existing column using column-names(or column-positions) and column-values." );
137+ System .out .println (
138+ " Updating value specified existing column using column-names(or column-positions) and column-values." );
110139 System .out .println (
111140 " e.g.) --command=updating-columns --dir=src/test/resources/data --files=xxx.sql,yyy.sql --column-names=b --column-values=NULL" );
112141 System .out .println (
@@ -221,17 +250,44 @@ public void run(ApplicationArguments args) throws IOException {
221250 tableDefinitions = Collections .emptyMap ();
222251 }
223252
253+ final String addingMethod ;
254+ final String addingTarget ;
255+ if (args .containsOption ("first" )) {
256+ addingMethod = "first" ;
257+ addingTarget = null ;
258+ } else if (args .containsOption ("after-by-name" )) {
259+ addingMethod = "after-by-name" ;
260+ addingTarget = args .getOptionValues ("after-by-name" ).stream ().findFirst ().orElse (null );
261+ if (addingTarget == null ) {
262+ this .exitCode = 2 ;
263+ LOGGER .warn ("'after-by-name' is required." );
264+ return ;
265+ }
266+ } else if (args .containsOption ("after-by-position" )) {
267+ addingMethod = "after-by-position" ;
268+ addingTarget = args .getOptionValues ("after-by-position" ).stream ().findFirst ().orElse (null );
269+ if (addingTarget == null ) {
270+ this .exitCode = 2 ;
271+ LOGGER .warn ("'after-by-position' is required." );
272+ return ;
273+ }
274+ } else {
275+ addingMethod = "last" ;
276+ addingTarget = null ;
277+ }
278+
224279 LOGGER .info (
225- "Start. command:{} dir:{} files:{} encoding:{} column-names:{} column-positions:{} column-values:{} value-mappings:{} table-definitions:{}" ,
226- command , dir , files , encoding , columnNames , columnPositions , columnValues , valueMappings , tableDefinitions );
280+ "Start. command:{} dir:{} files:{} encoding:{} column-names:{} column-positions:{} column-values:{} value-mappings:{} table-definitions:{} adding-type:{} adding-target:{}" ,
281+ command , dir , files , encoding , columnNames , columnPositions , columnValues , valueMappings , tableDefinitions ,
282+ addingMethod , addingTarget );
227283
228284 try {
229285 Files .walk (Paths .get (dir ))
230286 .filter (Files ::isRegularFile )
231287 .filter (file -> files .stream ().anyMatch (x -> file .toString ().replace ('\\' , '/' ).endsWith (x )))
232288 .sorted ().forEach (
233289 file -> execute (command , columnNames , columnPositions , columnValues , file , encoding , valueMappings ,
234- tableDefinitions ));
290+ tableDefinitions , addingMethod , addingTarget ));
235291 }
236292 catch (IllegalArgumentException e ) {
237293 this .exitCode = 2 ;
@@ -245,7 +301,8 @@ public void run(ApplicationArguments args) throws IOException {
245301 private void execute (String command , List <String > columnNames , List <Integer > columnPositions ,
246302 List <String > columnValues ,
247303 Path file , Charset encoding ,
248- Map <String , Object > valueMappings , Map <String , Object > tableDefinitions ) {
304+ Map <String , Object > valueMappings , Map <String , Object > tableDefinitions , String addingMethod ,
305+ String addingTarget ) {
249306 LOGGER .info ("processing file:{}" , file );
250307 switch (command ) {
251308 case "adding-columns" :
@@ -255,7 +312,8 @@ private void execute(String command, List<String> columnNames, List<Integer> col
255312 if (columnNames .size () != columnValues .size ()) {
256313 throw new IllegalArgumentException ("'column-names' and 'column-values' should be same size." );
257314 }
258- AddingColumnProcessor .INSTANCE .execute (columnNames , columnPositions , columnValues , file , encoding , valueMappings ,
315+ AddingColumnProcessor .INSTANCE .execute (addingMethod , addingTarget , columnNames , columnPositions , columnValues ,
316+ file , encoding , valueMappings ,
259317 tableDefinitions );
260318 break ;
261319 case "deleting-columns" :
0 commit comments