li.strolch.service.privilege.users.PrivilegeAddUserCommand Maven / Gradle / Ivy
package li.strolch.service.privilege.users;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.audit.AccessType;
import li.strolch.model.audit.Audit;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.privilege.handler.PrivilegeHandler;
import li.strolch.privilege.model.UserRep;
import li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants;
import li.strolch.service.api.Command;
import li.strolch.utils.dbc.DBC;
/**
* @author Robert von Burg
*/
public class PrivilegeAddUserCommand extends Command {
// input
private UserRep userIn;
// intermediary
private Audit audit;
// output
private UserRep userOut;
public PrivilegeAddUserCommand(ComponentContainer container, StrolchTransaction tx) {
super(container, tx);
}
public void setUserIn(UserRep userIn) {
this.userIn = userIn;
}
public UserRep getUserOut() {
return this.userOut;
}
@Override
public void validate() {
DBC.PRE.assertNotNull("userIn may not be null!", this.userIn);
}
@Override
public void doCommand() {
PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler();
this.userOut = privilegeHandler.addUser(tx().getCertificate(), this.userIn, null);
privilegeHandler.persist(tx().getCertificate());
tx().setSuppressAuditsForAudits(true);
this.audit = tx()
.auditFrom(AccessType.CREATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER,
this.userOut.getUsername());
tx().getAuditTrail().add(tx(), this.audit);
}
@Override
public void undo() {
if (tx().isRollingBack()) {
PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler();
if (this.userOut != null)
privilegeHandler.removeUser(tx().getCertificate(), this.userIn.getUsername());
if (this.audit != null)
tx().getAuditTrail().remove(tx(), this.audit);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy