33import lombok .AllArgsConstructor ;
44import lombok .Getter ;
55import lombok .ToString ;
6- import org .springframework .stereotype .Component ;
76
87import java .sql .PreparedStatement ;
98import java .sql .ResultSet ;
1211import java .time .format .DateTimeFormatter ;
1312import java .util .List ;
1413import java .util .concurrent .*;
15- import java .util .concurrent .locks .Lock ;
16- import java .util .concurrent .locks .ReentrantLock ;
14+ import java .util .concurrent .atomic .AtomicInteger ;
1715
1816@ ToString
1917@ AllArgsConstructor
2018public class CountApiUsers extends CommonEntityMethod {
2119
22- private static final CountApiUsers instance = new CountApiUsers ();
2320 @ Getter
24- private Integer countWorldLanguagesUsers , countWorldCountriesUsers , countWorldCitiesUsersUsers ;
21+ private AtomicInteger countWorldLanguagesUsers = new AtomicInteger ()
22+ ,countWorldCountriesUsers = new AtomicInteger ()
23+ ,countWorldCitiesUsersUsers = new AtomicInteger ();
2524 private String getCountsByMembershipQuery , getCountsQuery , upgradeWorldLanguageCountQuery , upgradeWorldCountriesCountQuery , upgradeWorldCitiesCountQuery ;
2625 private PreparedStatement st , updatePreparedStatement ;
2726 private ExecutorService executorService ;
28- private Lock lock ;
27+
2928 @ Getter
3029 private LocalDateTime modifiedDate ;
3130 private DateTimeFormatter format ;
3231
33- protected CountApiUsers () {
32+ public CountApiUsers () {
3433 super ();
35- lock = new ReentrantLock ();
34+
3635 this .format = DateTimeFormatter .ofPattern ("dd/MMM/yyyy hh:mm" );
3736 executorService = Executors .newSingleThreadExecutor ();
3837 getCountsByMembershipQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.query.getAllCountByPrivilegeName" );
3938 getCountsQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.query.getAllCounts" );
4039 upgradeWorldLanguageCountQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.update.updateLanguageCount" );
41- upgradeWorldCountriesCountQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.update.updateCitiesCount" );
42- upgradeWorldCitiesCountQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.update.updateCountriesCount" );
40+ upgradeWorldCitiesCountQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.update.updateCitiesCount" );
41+ upgradeWorldCountriesCountQuery = PropertiesUtilManager .getPropertiesValue ("jdbc.update.updateCountriesCount" );
4342 }
4443
4544 private CountApiUsers (Integer countWorldLanguagesUsers , Integer countWorldCountriesUsers , Integer countWorldCitiesUsersUsers ) {
46- this .countWorldLanguagesUsers = countWorldLanguagesUsers ;
47- this .countWorldCountriesUsers = (countWorldCountriesUsers );
48- this .countWorldCitiesUsersUsers = (countWorldCitiesUsersUsers );
49- }
50-
51- public static CountApiUsers getInstance () {
52- return instance ;
45+ this .countWorldLanguagesUsers .set (countWorldLanguagesUsers );
46+ this .countWorldCountriesUsers .set (countWorldCountriesUsers );
47+ this .countWorldCitiesUsersUsers .set (countWorldCitiesUsersUsers );
5348 }
5449
5550 protected void updateWorldLanguageCountForMembers () {
5651 try {
57- lock . lock ();
52+
5853 modifiedDate = LocalDateTime .now ();
5954 updatePreparedStatement = databaseConfig (upgradeWorldLanguageCountQuery );
6055 updatePreparedStatement .setString (3 , Privileges .MEMBERSHIP .getMembershipName ());
6156 var list = getCountiesByNoMembership ();
6257 if (list .size () == 1 ) {
6358
64- updatePreparedStatement .setInt (1 , list .get (0 ).countWorldLanguagesUsers ++ );
59+ updatePreparedStatement .setInt (1 , list .get (0 ).countWorldLanguagesUsers . incrementAndGet () );
6560 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
6661 updatePreparedStatement .executeUpdate ();
6762 } else {
@@ -70,21 +65,19 @@ protected void updateWorldLanguageCountForMembers() {
7065
7166 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
7267 throw new RuntimeException (e );
73- } finally {
74- lock .unlock ();
7568 }
7669 }
7770
7871 protected void updateWorldCitiesCountForMembers () {
7972 try {
80- lock . lock ();
73+
8174 modifiedDate = LocalDateTime .now ();
8275 updatePreparedStatement = databaseConfig (upgradeWorldCitiesCountQuery );
8376 updatePreparedStatement .setString (3 , Privileges .MEMBERSHIP .getMembershipName ());
8477 var list = getCountiesByNoMembership ();
8578 if (list .size () == 1 ) {
8679
87- updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCitiesUsersUsers ++ );
80+ updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCitiesUsersUsers . incrementAndGet () );
8881 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
8982 updatePreparedStatement .executeUpdate ();
9083 } else {
@@ -93,20 +86,18 @@ protected void updateWorldCitiesCountForMembers() {
9386
9487 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
9588 throw new RuntimeException (e );
96- } finally {
97- lock .unlock ();
9889 }
9990 }
10091
10192 protected void updateWorldCountriesCountForMembers () {
10293 try {
103- lock . lock ();
94+
10495 modifiedDate = LocalDateTime .now ();
10596 updatePreparedStatement = databaseConfig (upgradeWorldCountriesCountQuery );
10697 updatePreparedStatement .setString (3 , Privileges .MEMBERSHIP .getMembershipName ());
10798 var list = getCountiesByNoMembership ();
10899 if (list .size () == 1 ) {
109- updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCountriesUsers ++ );
100+ updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCountriesUsers . incrementAndGet () );
110101 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
111102 updatePreparedStatement .executeUpdate ();
112103 } else {
@@ -115,21 +106,19 @@ protected void updateWorldCountriesCountForMembers() {
115106
116107 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
117108 throw new RuntimeException (e );
118- } finally {
119- lock .unlock ();
120109 }
121110 }
122111
123112 protected void updateWorldLanguageCount () {
124113 try {
125- lock . lock ();
114+
126115 modifiedDate = LocalDateTime .now ();
127116 updatePreparedStatement = databaseConfig (upgradeWorldLanguageCountQuery );
128117 updatePreparedStatement .setString (3 , Privileges .NO_MEMBERSHIP .getMembershipName ());
129118 var list = getCountiesByNoMembership ();
130119 if (list .size () == 1 ) {
131120
132- updatePreparedStatement .setInt (1 , list .get (0 ).countWorldLanguagesUsers ++ );
121+ updatePreparedStatement .setInt (1 , list .get (0 ).countWorldLanguagesUsers . incrementAndGet () );
133122 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
134123 updatePreparedStatement .executeUpdate ();
135124 } else {
@@ -138,21 +127,19 @@ protected void updateWorldLanguageCount() {
138127
139128 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
140129 throw new RuntimeException (e );
141- } finally {
142- lock .unlock ();
143130 }
144131 }
145132
146133 protected void updateWorldCitiesCount () {
147134 try {
148- lock . lock ();
135+
149136 modifiedDate = LocalDateTime .now ();
150137 updatePreparedStatement = databaseConfig (upgradeWorldCitiesCountQuery );
151138 updatePreparedStatement .setString (3 , Privileges .NO_MEMBERSHIP .getMembershipName ());
152139 var list = getCountiesByNoMembership ();
153140 if (list .size () == 1 ) {
154141
155- updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCitiesUsersUsers ++ );
142+ updatePreparedStatement .setInt (1 , list .get (0 ).countWorldCitiesUsersUsers . incrementAndGet () );
156143 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
157144 updatePreparedStatement .executeUpdate ();
158145 } else {
@@ -161,21 +148,19 @@ protected void updateWorldCitiesCount() {
161148
162149 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
163150 throw new RuntimeException (e );
164- } finally {
165- lock .unlock ();
166151 }
167152 }
168153
169- protected void updateWorldCountriesCount () {
154+ public void updateWorldCountriesCount () {
170155 try {
171- lock . lock ();
156+
172157 modifiedDate = LocalDateTime .now ();
173158 updatePreparedStatement = databaseConfig (upgradeWorldCountriesCountQuery );
174159 updatePreparedStatement .setString (3 , Privileges .NO_MEMBERSHIP .getMembershipName ());
175160 var list = getCountiesByNoMembership ();
176161 if (list .size () == 1 ) {
177- var no = list . get ( 0 ). countWorldCountriesUsers ++;
178- updatePreparedStatement .setInt (1 , no );
162+
163+ updatePreparedStatement .setInt (1 , list . get ( 0 ). countWorldCountriesUsers . incrementAndGet () );
179164 updatePreparedStatement .setString (2 , modifiedDate .format (format ));
180165 updatePreparedStatement .executeUpdate ();
181166 } else {
@@ -184,14 +169,12 @@ protected void updateWorldCountriesCount() {
184169
185170 } catch (ExecutionException | InterruptedException | TimeoutException | SQLException e ) {
186171 throw new RuntimeException (e );
187- } finally {
188- lock .unlock ();
189172 }
190173 }
191174
192175
193176 public List <CountApiUsers > prepareToGetAllCounties () {
194- Future <List <CountApiUsers >> future = executorService .submit (instance ::getAllCounties );
177+ Future <List <CountApiUsers >> future = executorService .submit (this ::getAllCounties );
195178 try {
196179 return future .get ();
197180 } catch (InterruptedException | ExecutionException e ) {
@@ -224,6 +207,9 @@ private List<CountApiUsers> addDataFromDBToList() throws SQLException {
224207 ResultSet set = st .executeQuery ();
225208
226209 while (set .next ()) {
210+ Log .info (" checking1: " + set .getInt (6 ));
211+ Log .info (" checking2: " + set .getInt (4 ));
212+ Log .info (" checking: " + set .getInt (5 ));
227213 list .add (new CountApiUsers (set .getInt (4 ), set .getInt (6 ), set .getInt (5 )));
228214 }
229215 set .close ();
0 commit comments