Skip to content

Commit 0895cce

Browse files
Hashmap For User Creation SQL
1 parent cb15cb9 commit 0895cce

1 file changed

Lines changed: 10 additions & 13 deletions

File tree

vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@
3131
import java.math.BigDecimal;
3232
import java.security.SecureRandom;
3333
import java.sql.*;
34-
import java.util.ArrayList;
34+
import java.util.*;
3535
import java.util.Date;
36-
import java.util.List;
37-
import java.util.Random;
3836

3937
/**
4038
* This type was created in VisualAge.
@@ -158,33 +156,32 @@ public List<UserIdentity> getUserIdentitiesFromSubjectAndIssuer(Connection con,
158156
lg.trace(sql);
159157
}
160158
stmt = con.createStatement();
161-
ArrayList<UserIdentityBuilder> userIdentities = new ArrayList<>();
159+
HashMap<BigDecimal, UserIdentityBuilder> userIdentities = new HashMap<>();
162160
try {
163161
rset = stmt.executeQuery(sql);
164162
while (rset.next()) {
165163
BigDecimal userKey = rset.getBigDecimal(UserIdentityTable.userRef.getUnqualifiedColName());
166164
String claim = rset.getString(SpecialUsersTable.table.special.getUnqualifiedColName());
167-
168-
int lastUserAdded = userIdentities.size()-1;
169-
boolean sameUser = !userIdentities.isEmpty() && userIdentities.get(lastUserAdded).getId().equals(userKey);
170-
if (sameUser && claim != null){
171-
userIdentities.get(lastUserAdded).getUserBuilder().addSpecial(SpecialUser.SPECIAL_CLAIM.fromDatabase(claim));
172-
} else{
165+
if (userIdentities.containsKey(userKey) && claim != null) {
166+
userIdentities.get(userKey).getUserBuilder().addSpecial(SpecialUser.SPECIAL_CLAIM.fromDatabase(claim));
167+
} else if (userIdentities.containsKey(userKey)) {
168+
throw new SQLException("Duplicate VCell user identity found.");
169+
} else {
173170
String userID = rset.getString(UserTable.table.userid.getUnqualifiedColName());
174171
SpecialUser.SpecialUserBuilder builder = new SpecialUser.SpecialUserBuilder(userID, new KeyValue(userKey));
175172
if (claim != null){
176173
builder.addSpecial(SpecialUser.SPECIAL_CLAIM.fromDatabase(claim));
177174
}
178-
userIdentities.add(new UserIdentityBuilder(userKey, builder,
179-
subject, issuer, UserIdentityTable.table.getUserIdentityDate(rset)));
175+
userIdentities.put(userKey, new UserIdentityBuilder(userKey, builder, subject, issuer,
176+
UserIdentityTable.table.getUserIdentityDate(rset)));
180177
}
181178
}
182179
} finally {
183180
stmt.close();
184181
}
185182

186183
ArrayList<UserIdentity> identities = new ArrayList<>();
187-
for (UserIdentityBuilder userIdentityBuilder : userIdentities) {
184+
for (UserIdentityBuilder userIdentityBuilder : userIdentities.values()) {
188185
identities.add(userIdentityBuilder.build());
189186
}
190187

0 commit comments

Comments
 (0)