package org.atricore.idbus.capabilities.spmlr2.command.printer; import oasis.names.tc.spml._2._0.*; import oasis.names.tc.spml._2._0.atricore.GroupType; import oasis.names.tc.spml._2._0.atricore.UserType; import oasis.names.tc.spml._2._0.search.SearchResponseType; import java.util.List; /** * @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a> */ public class UserPrinter extends AbstractCmdPrinter { public void printOutcome(Object response) { if (response instanceof ResponseType ) { ResponseType spmlResponse = (ResponseType) response; if (!spmlResponse.getStatus().equals(StatusCodeType.SUCCESS)) { super.printOutcome(spmlResponse); return; } } if (response instanceof LookupResponseType) { LookupResponseType lkRes = (LookupResponseType) response; printUser(lkRes.getPso()); } else if (response instanceof SearchResponseType) { SearchResponseType schRes = (SearchResponseType) response; printUsers(schRes.getPso()); } else if (response instanceof AddResponseType) { AddResponseType addRes = (AddResponseType) response; printUser(addRes.getPso()); } else if (response instanceof ModifyResponseType) { ModifyResponseType modRes = (ModifyResponseType) response; printUser(modRes.getPso()); } else { super.printResponse((ResponseType) response); } } public void printUsers(List<PSOType> psoUsers) { StringBuilder sb = new StringBuilder(); // Build headers line sb.append("\u001B[1m ID Username E-Mail Groups\u001B[0m\n"); for (PSOType psoUser : psoUsers) { psoUser.getPsoID(); UserType spmlUser = (UserType) psoUser.getData(); sb.append("["); sb.append(getPsoIDString(psoUser.getPsoID())); sb.append("] ["); sb.append(getUserNameString(spmlUser)); sb.append("] ["); sb.append(getUserEmailString(spmlUser)); sb.append("] ["); sb.append(getUserGroupsString(spmlUser)); sb.append("] "); sb.append("\n"); } printMsg(sb); } public void printUser(PSOType psoUser) { StringBuilder sb = new StringBuilder(); sb.append("\u001B[1m User details : \u001B[0m\n"); sb.append("----------------\n"); UserType spmlUser = (UserType) psoUser.getData(); PSOIdentifierType psoGroupId = psoUser.getPsoID(); sb.append(getLabelString("ID")); sb.append(getPsoIDString(psoGroupId)); sb.append("\n"); sb.append(getLabelString("Username")); sb.append(getUserNameString(spmlUser)); sb.append("\n"); sb.append(getLabelString("E-Mail")); sb.append(getUserEmailString(spmlUser)); sb.append("\n"); sb.append(getLabelString("Groups")); sb.append(getUserGroupsString(spmlUser)); sb.append("\n"); // TODO : Display more attributes! printMsg(sb); } protected String getUserNameString(UserType spmlUser) { return getLeftString(spmlUser.getUserName(), 12); } protected String getUserEmailString(UserType spmlUser) { return getLeftString(spmlUser.getEmail(), 18); } protected String getUserGroupsString(UserType spmlUser) { String groups = ""; String prefix = ""; for (GroupType spmlGroup : spmlUser.getGroup()) { groups += prefix + spmlGroup.getName(); prefix = ", "; } return getLeftString(groups, 64); } }