Skip to content
Snippets Groups Projects
Commit 66263785 authored by Goik Martin's avatar Goik Martin
Browse files

Secondary User Group associations

parent b61d2ec6
No related branches found
No related tags found
No related merge requests found
SELECT * from SysGroup;
SELECT * from SysUser;
SELECT * from SysUserGroup;
SELECT uid,gid from SysUser, SysUserGroup, SysGroup
WHERE SysUser.id = SysUserGroup.sysuser
AND SysUserGroup.sysgroup = SysGroup.id
DELETE FROM SysGroup;
DELETE FROM SysUser;
\ No newline at end of file
DELETE FROM SysUser;
DELETE FROM SysUserGroup;
\ No newline at end of file
......@@ -38,6 +38,14 @@ public class Parser {
while ( null != (line = passwdStream.readLine())){
rdbmsHandler.addUser(new User(line, lineNo++));
}
for (final String uid: Group.secondaryGroupsByUid.keySet()) {
final User user = User.userByUid.get(uid);
for (final Group group: Group.secondaryGroupsByUid.get(uid)) {
rdbmsHandler.addUserGroup(user, group);
}
}
} catch (IOException e) {
throw new ParseError("Unable to parse '" +
passwdFile + "' file at line " + lineNo);
......
package de.hdm_stuttgart.mi.sda2.usermanage.parse;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import de.hdm_stuttgart.mi.sda2.usermanage.rdbms.DatabaseObject;
......@@ -7,6 +9,8 @@ import de.hdm_stuttgart.mi.sda2.usermanage.rdbms.DatabaseObject;
public class User implements DatabaseObject {
public static final Map<String, User> userByUid = new HashMap<String, User>();
private int databaseId = 0;
public final String uid;
......@@ -25,10 +29,6 @@ public class User implements DatabaseObject {
int csvIndex = 0;
final String [] components = passwdLine.split(":");
if (7 != components.length) {
}
// row 1
uid = components[csvIndex++];
......@@ -62,6 +62,7 @@ public class User implements DatabaseObject {
// Group dependencies
primaryGroup = Group.groupsByGidnumber.get(gidNumber);
secondaryGroups = Group.secondaryGroupsByUid.get(uidNumber);
userByUid.put(uid, this);
}
public int getDatabaseId() {
return databaseId;
......
......@@ -20,6 +20,7 @@ public class RdbmsHandler {
private MyNamedQuery<GroupParam> insertGroupStmt;
private MyNamedQuery<UserParam> insertUserStmt;
private MyNamedQuery<UserGroupParam> insertUserGroupStmt;
static {
try {
......@@ -43,6 +44,7 @@ public class RdbmsHandler {
conn.setAutoCommit(false);
insertGroupStmt = new MyNamedQuery<GroupParam>(conn, GroupParam.gid, Statement.RETURN_GENERATED_KEYS);
insertUserStmt = new MyNamedQuery<UserParam>(conn, UserParam.uid, Statement.RETURN_GENERATED_KEYS);
insertUserGroupStmt = new MyNamedQuery<UserGroupParam>(conn, UserGroupParam.sysuser, Statement.RETURN_GENERATED_KEYS);
}
public void addGroup(final Group group) {
......@@ -74,9 +76,20 @@ public class RdbmsHandler {
e.printStackTrace();
}
}
public void addUserGroup(final User user, final Group group) {
try {
insertUserGroupStmt.setInt(UserGroupParam.sysuser, user.getDatabaseId());
insertUserGroupStmt.setInt(UserGroupParam.sysgroup, group.getDatabaseId());
insertUserGroupStmt.getStatement().addBatch();
} catch (SQLException e) {
log.fatal("Error associating secondary group '" + group + "' to user '" + user.uid + "'");
e.printStackTrace();
}
}
public void commit() {
try {
insertUserGroupStmt.getStatement().executeBatch();
conn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
......
package de.hdm_stuttgart.mi.sda2.usermanage.rdbms;
public enum UserGroupParam implements Param {
// See index values in subsequent SQL statement
sysuser(1),
sysgroup(2);
public static final String sql =
"INSERT INTO SysUserGroup (sysuser, sysgroup) "
/* Parameter index 1 2 */
+ "VALUES(?, ?)";
public final int index;
UserGroupParam(final int index){
this.index = index;
}
public int getIndex() {
return index;
}
public String getSql() {
return sql;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment