result.setInheritAttributes(updated.isInheritAttrs());
result.setInheritDerAttrs(updated.isInheritDerAttrs());
result.setInheritVirAttrs(updated.isInheritVirAttrs());
// 2. policies
result.setAccountPolicy(new ReferenceMod(updated.getAccountPolicy()));
result.setPasswordPolicy(new ReferenceMod(updated.getPasswordPolicy()));
// 3. name
if (!original.getName().equals(updated.getName())) {
result.setName(updated.getName());
}
// 4. entitlements
Set<String> updatedEnts = new HashSet<String>(updated.getEntitlements());
Set<String> originalEnts = new HashSet<String>(original.getEntitlements());
if (updatedEnts.equals(originalEnts)) {
result.setModEntitlements(false);
result.getEntitlements().clear();
} else {
result.setModEntitlements(true);
result.getEntitlements().addAll(updated.getEntitlements());
}
// 5. templates
Set<String> updatedTemplates = new HashSet<String>(updated.getRAttrTemplates());
Set<String> originalTemplates = new HashSet<String>(original.getRAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModRAttrTemplates(false);
result.getRAttrTemplates().clear();
} else {
result.setModRAttrTemplates(true);
result.getRAttrTemplates().addAll(updated.getRAttrTemplates());
}
updatedTemplates = new HashSet<String>(updated.getRDerAttrTemplates());
originalTemplates = new HashSet<String>(original.getRDerAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModRDerAttrTemplates(false);
result.getRDerAttrTemplates().clear();
} else {
result.setModRDerAttrTemplates(true);
result.getRDerAttrTemplates().addAll(updated.getRDerAttrTemplates());
}
updatedTemplates = new HashSet<String>(updated.getRVirAttrTemplates());
originalTemplates = new HashSet<String>(original.getRVirAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModRVirAttrTemplates(false);
result.getRVirAttrTemplates().clear();
} else {
result.setModRVirAttrTemplates(true);
result.getRVirAttrTemplates().addAll(updated.getRVirAttrTemplates());
}
updatedTemplates = new HashSet<String>(updated.getMAttrTemplates());
originalTemplates = new HashSet<String>(original.getMAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModMAttrTemplates(false);
result.getMAttrTemplates().clear();
} else {
result.setModMAttrTemplates(true);
result.getMAttrTemplates().addAll(updated.getMAttrTemplates());
}
updatedTemplates = new HashSet<String>(updated.getMDerAttrTemplates());
originalTemplates = new HashSet<String>(original.getMDerAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModMDerAttrTemplates(false);
result.getMDerAttrTemplates().clear();
} else {
result.setModMDerAttrTemplates(true);
result.getMDerAttrTemplates().addAll(updated.getMDerAttrTemplates());
}
updatedTemplates = new HashSet<String>(updated.getMVirAttrTemplates());
originalTemplates = new HashSet<String>(original.getMVirAttrTemplates());
if (updatedTemplates.equals(originalTemplates)) {
result.setModMVirAttrTemplates(false);
result.getMVirAttrTemplates().clear();
} else {
result.setModMVirAttrTemplates(true);
result.getMVirAttrTemplates().addAll(updated.getMVirAttrTemplates());
}
// 6. owner
result.setUserOwner(new ReferenceMod(updated.getUserOwner()));
result.setRoleOwner(new ReferenceMod(updated.getRoleOwner()));
return result;
}