Skip to content

Commit 939d0cd

Browse files
Update User Creation SQL
1 parent 82e051e commit 939d0cd

2 files changed

Lines changed: 43 additions & 12 deletions

File tree

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

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,30 +145,54 @@ public List<UserIdentity> getUserIdentitiesFromSubjectAndIssuer(Connection con,
145145
lg.trace("UserDbDriver.getUserIdentityFromSubjectAndIssuer(userid=" + subject + ")");
146146
}
147147
sql = "SELECT " + UserTable.table.userid.getUnqualifiedColName() + "," +
148-
UserIdentityTable.userRef.getUnqualifiedColName() + "," +
149-
UserIdentityTable.authSubject.getUnqualifiedColName() + "," +
150-
UserIdentityTable.authIssuer.getUnqualifiedColName() + "," +
148+
UserIdentityTable.userRef.getQualifiedColName() + "," +
151149
UserIdentityTable.table.id.getQualifiedColName() + " as user_identity_key " + "," +
152-
UserIdentityTable.insertDate.getQualifiedColName() +
150+
UserIdentityTable.insertDate.getQualifiedColName() + "," +
151+
SpecialUsersTable.table.special.getQualifiedColName() +
153152
" FROM " + userTable.getTableName() +
154153
" JOIN " + UserIdentityTable.table.getTableName() +
155154
" ON " + UserIdentityTable.table.userRef.getUnqualifiedColName()+"="+userTable.id.getQualifiedColName() +
155+
" LEFT JOIN " + SpecialUsersTable.table.getTableName() +
156+
" ON " + SpecialUsersTable.table.userRef.getQualifiedColName()+"="+userTable.id.getQualifiedColName() +
156157
" WHERE " + UserIdentityTable.authSubject.getUnqualifiedColName() + " = '" + subject + "'" +
157158
" AND " + UserIdentityTable.authIssuer.getUnqualifiedColName() + " = '" + issuer + "'";
158159

159160
if (lg.isTraceEnabled()) {
160161
lg.trace(sql);
161162
}
162163
stmt = con.createStatement();
163-
ArrayList<UserIdentity> userIdentities = new ArrayList<>();
164+
ArrayList<UserIdentityBuilder> userIdentities = new ArrayList<>();
164165
try {
165166
rset = stmt.executeQuery(sql);
166167
while (rset.next()) {
167-
BigDecimal userBD = rset.getBigDecimal(UserIdentityTable.userRef.getUnqualifiedColName());
168-
String userID = rset.getString(UserTable.table.userid.getUnqualifiedColName());
169-
User userFromDB = new User(userID, new KeyValue(userBD));
170-
UserIdentity userIdentity = UserIdentityTable.table.getUserIdentity(rset, userFromDB, "user_identity_key");
171-
userIdentities.add(userIdentity);
168+
BigDecimal userKey = rset.getBigDecimal(UserIdentityTable.userRef.getUnqualifiedColName());
169+
String claim = rset.getString(SpecialUsersTable.table.special.getUnqualifiedColName());
170+
171+
int lastUserAdded = userIdentities.size()-1;
172+
boolean sameUser = !userIdentities.isEmpty() && userIdentities.get(lastUserAdded).getId().equals(userKey);
173+
if (sameUser && claim != null){
174+
userIdentities.get(lastUserAdded).getUserBuilder().addSpecial(User.SPECIAL_CLAIM.fromDatabase(claim));
175+
} else{
176+
String userID = rset.getString(UserTable.table.userid.getUnqualifiedColName());
177+
User.SpecialUserBuilder builder = new User.SpecialUserBuilder(userID, new KeyValue(userKey));
178+
if (claim != null){
179+
builder.addSpecial(User.SPECIAL_CLAIM.fromDatabase(claim));
180+
}
181+
userIdentities.add(new UserIdentityBuilder(userKey, builder,
182+
subject, issuer, UserIdentityTable.table.getUserIdentityDate(rset)));
183+
}
184+
}
185+
} finally {
186+
stmt.close();
187+
}
188+
189+
ArrayList<UserIdentity> identities = new ArrayList<>();
190+
for (UserIdentityBuilder userIdentityBuilder : userIdentities) {
191+
identities.add(userIdentityBuilder.build());
192+
}
193+
194+
return identities;
195+
}
172196

173197
public User getVCellSupportUser(Connection con) throws SQLException {
174198
Statement stmt;

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@
1313
import cbit.sql.Field;
1414
import cbit.sql.Field.SQLDataType;
1515
import cbit.sql.Table;
16-
import org.vcell.util.document.KeyValue;
1716
import org.vcell.util.document.User;
1817

1918
import java.math.BigDecimal;
2019
import java.sql.ResultSet;
2120
import java.sql.SQLException;
2221
import java.time.LocalDateTime;
23-
import java.util.Date;
2422

2523
/**
2624
* This type was created in VisualAge.
@@ -65,4 +63,13 @@ public UserIdentity getUserIdentity(ResultSet rset, User user, String idColName)
6563

6664
return new UserIdentity(id, user, subject, issuer, insertDate);
6765
}
66+
67+
public LocalDateTime getUserIdentityDate(ResultSet rset) throws SQLException {
68+
//
69+
// Format Date
70+
//
71+
java.sql.Date DBDate = rset.getDate(insertDate.getUnqualifiedColName());
72+
java.sql.Time DBTime = rset.getTime(insertDate.getUnqualifiedColName());
73+
return LocalDateTime.of(DBDate.toLocalDate(), DBTime.toLocalTime());
74+
}
6875
}

0 commit comments

Comments
 (0)