/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.useradministration.data;
import java.util.Collection;
import java.util.Set;
import org.mifosplatform.organisation.office.data.OfficeData;
import org.mifosplatform.organisation.staff.data.StaffData;
import org.mifosplatform.portfolio.client.data.ClientData;
/**
* Immutable data object for application user data.
*/
public class AppUserData {
private final Long id;
private final String username;
private final Long officeId;
private final String officeName;
private final String firstname;
private final String lastname;
private final String email;
private final Boolean passwordNeverExpires;
@SuppressWarnings("unused")
private final Collection<OfficeData> allowedOffices;
private final Collection<RoleData> availableRoles;
private final Collection<RoleData> selectedRoles;
private final StaffData staff;
private final Boolean isSelfServiceUser;
@SuppressWarnings("unused")
private Set<ClientData> clients;
public static AppUserData template(final AppUserData user, final Collection<OfficeData> officesForDropdown) {
return new AppUserData(user.id, user.username, user.email, user.officeId, user.officeName, user.firstname, user.lastname,
user.availableRoles, user.selectedRoles, officesForDropdown, user.staff, user.passwordNeverExpires, user.isSelfServiceUser);
}
public static AppUserData template(final Collection<OfficeData> offices, final Collection<RoleData> availableRoles) {
return new AppUserData(null, null, null, null, null, null, null, availableRoles, null, offices, null, null, null);
}
public static AppUserData dropdown(final Long id, final String username) {
return new AppUserData(id, username, null, null, null, null, null, null, null, null, null, null, null);
}
public static AppUserData instance(final Long id, final String username, final String email, final Long officeId,
final String officeName, final String firstname, final String lastname, final Collection<RoleData> availableRoles,
final Collection<RoleData> selectedRoles, final StaffData staff, final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) {
return new AppUserData(id, username, email, officeId, officeName, firstname, lastname, availableRoles, selectedRoles, null, staff,
passwordNeverExpire, isSelfServiceUser);
}
private AppUserData(final Long id, final String username, final String email, final Long officeId, final String officeName,
final String firstname, final String lastname, final Collection<RoleData> availableRoles,
final Collection<RoleData> selectedRoles, final Collection<OfficeData> allowedOffices, final StaffData staff,
final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) {
this.id = id;
this.username = username;
this.officeId = officeId;
this.officeName = officeName;
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
this.allowedOffices = allowedOffices;
this.availableRoles = availableRoles;
this.selectedRoles = selectedRoles;
this.staff = staff;
this.passwordNeverExpires = passwordNeverExpire;
this.isSelfServiceUser = isSelfServiceUser;
}
public boolean hasIdentifyOf(final Long createdById) {
return this.id.equals(createdById);
}
public String username() {
return this.username;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AppUserData that = (AppUserData) o;
if (id != null ? !id.equals(that.id) : that.id != null) return false;
return true;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
public void setClients(Set<ClientData> clients){
this.clients = clients;
}
public boolean isSelfServiceUser() {
return this.isSelfServiceUser==null?false:this.isSelfServiceUser;
}
}