11package com .ffxivcensus .gatherer .player ;
22
33import java .util .ArrayList ;
4+ import java .util .Arrays ;
45import java .util .List ;
56
67import org .apache .commons .lang .BooleanUtils ;
@@ -34,9 +35,9 @@ public PlayerBeanDAO(@Autowired final ApplicationConfig appConfig, @Autowired fi
3435 */
3536 public List <Integer > getAdded (final int startId , final int endId ) {
3637 List <Integer > addedIDs = new ArrayList <>();
37- String sql = "SELECT * FROM tblplayers WHERE `id`>=" + startId + " AND `id`<=" + endId + " ;" ;
38+ String sql = "SELECT * FROM tblplayers WHERE `id`>= ? AND `id`<= ? ;" ;
3839
39- jdbcTemplate .query (sql , (rs , rowNum ) -> addedIDs .add (rs .getInt ("id" )));
40+ jdbcTemplate .query (sql , new Object [] { startId , endId }, (rs , rowNum ) -> addedIDs .add (rs .getInt ("id" )));
4041
4142 return addedIDs ;
4243 }
@@ -49,110 +50,136 @@ public String saveRecord(final PlayerBean player) {
4950
5051 // Declare string builders to build up components of statement
5152 StringBuilder sbFields = new StringBuilder ();
52- StringBuilder sbValues = new StringBuilder ();
5353
54- // Set default table name
55- String tableName = "tblplayers" ;
54+ List <Object > values = new ArrayList <>();
5655
57- sbFields .append ("INSERT IGNORE INTO " ).append (tableName ).append (" (" );
58- sbValues .append (" VALUES (" );
56+ sbFields .append ("INSERT IGNORE INTO tblplayers (" );
5957
6058 sbFields .append ("id, name, realm, race, gender, grand_company,free_company," );
61- sbValues .append (player .getId () + ",\" " + player .getPlayerName () + "\" ,\" " + player .getRealm () + "\" ,\" " + player .getRace ()
62- + "\" ,'" + player .getGender () + "','" + player .getGrandCompany () + "',\" " + player .getFreeCompany () + "\" ," );
59+ values .add (player .getId ());
60+ values .add (player .getPlayerName ());
61+ values .add (player .getRealm ());
62+ values .add (player .getRace ());
63+ values .add (player .getGender ());
64+ values .add (player .getGrandCompany ());
65+ values .add (player .getFreeCompany ());
6366
6467 sbFields .append ("level_gladiator, level_pugilist, level_marauder,level_lancer, level_archer, level_rogue," );
65- sbValues .append (player .getLvlGladiator () + "," + player .getLvlPugilist () + "," + player .getLvlMarauder () + ","
66- + player .getLvlLancer () + "," + player .getLvlArcher () + "," + player .getLvlRogue () + "," );
68+ values .add (player .getLvlGladiator ());
69+ values .add (player .getLvlPugilist ());
70+ values .add (player .getLvlMarauder ());
71+ values .add (player .getLvlLancer ());
72+ values .add (player .getLvlArcher ());
73+ values .add (player .getLvlRogue ());
6774
6875 sbFields .append ("level_conjurer, level_thaumaturge, level_arcanist, level_astrologian, level_darkknight,"
6976 + " level_machinist," );
70- sbValues .append (player .getLvlConjurer () + "," + player .getLvlThaumaturge () + "," + player .getLvlArcanist () + ","
71- + player .getLvlAstrologian () + "," + player .getLvlDarkKnight () + "," + player .getLvlMachinist () + "," );
77+ values .add (player .getLvlConjurer ());
78+ values .add (player .getLvlThaumaturge ());
79+ values .add (player .getLvlArcanist ());
80+ values .add (player .getLvlAstrologian ());
81+ values .add (player .getLvlDarkKnight ());
82+ values .add (player .getLvlMachinist ());
7283
7384 sbFields .append ("level_scholar, level_redmage, level_samurai," );
74- sbValues .append (player .getLvlScholar () + "," + player .getLvlRedMage () + "," + player .getLvlSamurai () + "," );
85+ values .add (player .getLvlScholar ());
86+ values .add (player .getLvlRedMage ());
87+ values .add (player .getLvlSamurai ());
7588
7689 sbFields .append ("level_carpenter, level_blacksmith, level_armorer, level_goldsmith, level_leatherworker, level_weaver, level_alchemist," );
77- sbValues .append (player .getLvlCarpenter () + "," + player .getLvlBlacksmith () + "," + player .getLvlArmorer () + ","
78- + player .getLvlGoldsmith () + "," + player .getLvlLeatherworker () + "," + player .getLvlWeaver () + ","
79- + player .getLvlAlchemist () + "," );
90+ values .add (player .getLvlCarpenter ());
91+ values .add (player .getLvlBlacksmith ());
92+ values .add (player .getLvlArmorer ());
93+ values .add (player .getLvlGoldsmith ());
94+ values .add (player .getLvlLeatherworker ());
95+ values .add (player .getLvlWeaver ());
96+ values .add (player .getLvlAlchemist ());
8097
8198 sbFields .append ("level_culinarian, level_miner, level_botanist, level_fisher" );
82- sbValues .append (player .getLvlCulinarian () + "," + player .getLvlMiner () + "," + player .getLvlBotanist () + ","
83- + player .getLvlFisher ());
99+ values .add (player .getLvlCulinarian ());
100+ values .add (player .getLvlMiner ());
101+ values .add (player .getLvlBotanist ());
102+ values .add (player .getLvlFisher ());
84103
85104 if (appConfig .isStoreProgression ()) {
86- sbFields .append ("," );
87- sbValues .append ("," );
88-
89- sbFields .append ("p30days, p60days, p90days, p180days, p270days, p360days, p450days, p630days, p960days," );
90- sbValues .append (booleanToInt (player .isHas30DaysSub ()) + "," + booleanToInt (player .isHas60DaysSub ()) + ","
91- + booleanToInt (player .isHas90DaysSub ()) + "," + booleanToInt (player .isHas180DaysSub ()) + ","
92- + booleanToInt (player .isHas270DaysSub ()) + "," + booleanToInt (player .isHas360DaysSub ()) + ","
93- + booleanToInt (player .isHas450DaysSub ()) + "," + booleanToInt (player .isHas630DaysSub ()) + ","
94- + booleanToInt (player .isHas960DaysSub ()) + "," );
105+ sbFields .append (", p30days, p60days, p90days, p180days, p270days, p360days, p450days, p630days, p960days," );
106+ values .add (booleanToInt (player .isHas30DaysSub ()));
107+ values .add (booleanToInt (player .isHas60DaysSub ()));
108+ values .add (booleanToInt (player .isHas90DaysSub ()));
109+ values .add (booleanToInt (player .isHas180DaysSub ()));
110+ values .add (booleanToInt (player .isHas270DaysSub ()));
111+ values .add (booleanToInt (player .isHas360DaysSub ()));
112+ values .add (booleanToInt (player .isHas450DaysSub ()));
113+ values .add (booleanToInt (player .isHas630DaysSub ()));
114+ values .add (booleanToInt (player .isHas960DaysSub ()));
95115
96116 sbFields .append ("prearr, prehw, presb, arrartbook, hwartbookone, hwartbooktwo, hasencyclopedia, beforemeteor, beforethefall, soundtrack, saweternalbond, "
97117 + "sightseeing, arr_25_complete, comm50, moogleplush, topazcarubuncleplush, emeraldcarbuncleplush," );
98- sbValues .append (booleanToInt (player .isHasPreOrderArr ()) + "," + booleanToInt (player .isHasPreOrderHW ()) + ","
99- + booleanToInt (player .isHasPreOrderSB ()) + "," + booleanToInt (player .isHasARRArtbook ()) + ","
100- + booleanToInt (player .isHasHWArtbookOne ()) + "," + booleanToInt (player .isHasHWArtbookTwo ()) + ","
101- + booleanToInt (player .isHasEncyclopediaEorzea ()) + "," + booleanToInt (player .isHasBeforeMeteor ()) + ","
102- + booleanToInt (player .isHasBeforeTheFall ()) + "," + booleanToInt (player .isHasSoundtrack ()) + ","
103- + booleanToInt (player .isHasAttendedEternalBond ()) + "," + booleanToInt (player .isHasCompletedHWSightseeing ())
104- + "," + booleanToInt (player .isHasCompleted2pt5 ()) + "," + booleanToInt (player .isHasFiftyComms ()) + ","
105- + booleanToInt (player .isHasMooglePlush ()) + "," + booleanToInt (player .isHasTopazCarbunclePlush ()) + ","
106- + booleanToInt (player .isHasEmeraldCarbunclePlush ()) + "," );
118+ values .add (booleanToInt (player .isHasPreOrderArr ()));
119+ values .add (booleanToInt (player .isHasPreOrderHW ()));
120+ values .add (booleanToInt (player .isHasPreOrderSB ()));
121+ values .add (booleanToInt (player .isHasARRArtbook ()));
122+ values .add (booleanToInt (player .isHasHWArtbookOne ()));
123+ values .add (booleanToInt (player .isHasHWArtbookTwo ()));
124+ values .add (booleanToInt (player .isHasEncyclopediaEorzea ()));
125+ values .add (booleanToInt (player .isHasBeforeMeteor ()));
126+ values .add (booleanToInt (player .isHasBeforeTheFall ()));
127+ values .add (booleanToInt (player .isHasSoundtrack ()));
128+ values .add (booleanToInt (player .isHasAttendedEternalBond ()));
129+ values .add (booleanToInt (player .isHasCompletedHWSightseeing ()));
130+ values .add (booleanToInt (player .isHasCompleted2pt5 ()));
131+ values .add (booleanToInt (player .isHasFiftyComms ()));
132+ values .add (booleanToInt (player .isHasMooglePlush ()));
133+ values .add (booleanToInt (player .isHasTopazCarbunclePlush ()));
134+ values .add (booleanToInt (player .isHasEmeraldCarbunclePlush ()));
107135
108136 sbFields .append ("hildibrand, ps4collectors, dideternalbond, arrcollector, kobold, sahagin, amaljaa, "
109137 + "sylph, moogle, vanuvanu, vath, hw_complete, hw_31_complete, hw_33_complete, sb_complete, legacy_player" );
110- sbValues .append (booleanToInt (player .isHasCompletedHildibrand ()) + "," + booleanToInt (player .isHasPS4Collectors ()) + ","
111- + booleanToInt (player .isHasEternalBond ()) + "," + booleanToInt (player .isHasARRCollectors ()) + ","
112- + booleanToInt (player .isHasKobold ()) + "," + booleanToInt (player .isHasSahagin ()) + ","
113- + booleanToInt (player .isHasAmaljaa ()) + "," + booleanToInt (player .isHasSylph ()) + ","
114- + booleanToInt (player .isHasMoogle ()) + "," + booleanToInt (player .isHasVanuVanu ()) + ","
115- + booleanToInt (player .isHasVath ()) + "," + booleanToInt (player .isHasCompletedHW ()) + ","
116- + booleanToInt (player .isHasCompleted3pt1 ()) + "," + booleanToInt (player .isHasCompleted3pt3 ()) + ","
117- + booleanToInt (player .isHasCompletedSB ()) + "," + booleanToInt (player .isLegacyPlayer ()));
138+ values .add (booleanToInt (player .isHasCompletedHildibrand ()));
139+ values .add (booleanToInt (player .isHasPS4Collectors ()));
140+ values .add (booleanToInt (player .isHasEternalBond ()));
141+ values .add (booleanToInt (player .isHasARRCollectors ()));
142+ values .add (booleanToInt (player .isHasKobold ()));
143+ values .add (booleanToInt (player .isHasSahagin ()));
144+ values .add (booleanToInt (player .isHasAmaljaa ()));
145+ values .add (booleanToInt (player .isHasSylph ()));
146+ values .add (booleanToInt (player .isHasMoogle ()));
147+ values .add (booleanToInt (player .isHasVanuVanu ()));
148+ values .add (booleanToInt (player .isHasVath ()));
149+ values .add (booleanToInt (player .isHasCompletedHW ()));
150+ values .add (booleanToInt (player .isHasCompleted3pt1 ()));
151+ values .add (booleanToInt (player .isHasCompleted3pt3 ()));
152+ values .add (booleanToInt (player .isHasCompletedSB ()));
153+ values .add (booleanToInt (player .isLegacyPlayer ()));
118154
119155 }
120156
121157 if (appConfig .isStoreMinions ()) {
122- sbFields .append ("," );
123- sbValues .append ("," );
124- sbFields .append ("minions" );
125- sbValues .append ("\" " + StringUtils .join (player .getMinions (), "," ) + "\" " );
158+ sbFields .append (", minions" );
159+ values .add (StringUtils .join (player .getMinions (), "," ));
126160 }
127161 if (appConfig .isStoreMounts ()) {
128- sbFields .append ("," );
129- sbValues .append ("," );
130- sbFields .append ("mounts" );
131- sbValues .append ("\" " + StringUtils .join (player .getMounts (), "," ) + "\" " );
162+ sbFields .append (", mounts" );
163+ values .add (StringUtils .join (player .getMounts (), "," ));
132164 }
133165
134166 if (appConfig .isStoreActiveDate ()) {
135- sbFields .append ("," );
136- sbValues .append ("," );
137- sbFields .append ("date_active" );
138- java .text .SimpleDateFormat sdf = new java .text .SimpleDateFormat ("yyyy-MM-dd" );
139-
140- String sqlDate = sdf .format (player .getDateImgLastModified ());
141- sbValues .append ("\" " + sqlDate + "\" " );
167+ sbFields .append (", date_active" );
168+ values .add (player .getDateImgLastModified ());
142169 }
143170 if (appConfig .isStorePlayerActive ()) {
144- sbFields .append ("," );
145- sbValues .append ("," );
146- sbFields .append ("is_active" );
147- sbValues .append (booleanToInt (player .isActive ()));
171+ sbFields .append (", is_active" );
172+ values .add (booleanToInt (player .isActive ()));
148173 }
149174
150175 sbFields .append (")" );
151- sbValues .append (");" );
152176
153- String strSQL = sbFields .toString () + sbValues .toString ();
177+ String [] params = new String [values .size ()];
178+ Arrays .fill (params , "?" );
179+
180+ String strSQL = sbFields .toString () + " VALUES(" + String .join ("," , params ) + ");" ;
154181
155- jdbcTemplate .update (strSQL );
182+ jdbcTemplate .update (strSQL , values . toArray () );
156183
157184 strOut = "Character " + player .getId () + " written to database successfully." ;
158185 return strOut ;
0 commit comments