/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.syncope.client.cli.commands.user;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.syncope.client.cli.commands.CommonsResultManager;
import org.apache.syncope.client.cli.view.Table;
import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.RelationshipTO;
import org.apache.syncope.common.lib.to.UserTO;
public class UserResultManager extends CommonsResultManager {
public void printUsers(final List<UserTO> userTOs) {
System.out.println("");
for (final UserTO userTO : userTOs) {
printUser(userTO);
}
}
private void printUser(final UserTO userTO) {
System.out.println(" > USER KEY: " + userTO.getKey());
System.out.println(" username: " + userTO.getUsername());
System.out.println(" realm: " + userTO.getRealm());
System.out.println(" status: " + userTO.getStatus());
System.out.println(" RESOURCES: ");
printResource(userTO.getResources());
System.out.println(" ROLES: ");
printRole(userTO.getRoles());
System.out.println(" creation date: " + userTO.getCreationDate());
System.out.println(" change password date: " + userTO.getChangePwdDate());
System.out.println(" PLAIN ATTRIBUTES: ");
printAttributes(userTO.getPlainAttrs());
System.out.println(" DERIVED ATTRIBUTES: ");
printAttributes(userTO.getDerAttrs());
System.out.println(" VIRTUAL ATTRIBUTES: ");
printAttributes(userTO.getVirAttrs());
System.out.println(" creator: " + userTO.getCreator());
System.out.println(" last modifier: " + userTO.getLastModifier());
System.out.println(" token: " + userTO.getToken());
System.out.println(" token expiration time: " + userTO.getTokenExpireTime());
System.out.println(" last change: " + userTO.getLastChangeDate());
System.out.println(" last login: " + userTO.getLastLoginDate());
System.out.println(" failed logins: " + userTO.getFailedLogins());
System.out.println("RELATIONSHIPS:");
printRelationships(userTO.getRelationships());
System.out.println(" security question key: " + userTO.getSecurityQuestion());
System.out.println(" security question answer key: " + userTO.getSecurityAnswer());
System.out.println("");
}
private void printResource(final Set<String> resources) {
for (final String resource : resources) {
System.out.println(" - " + resource);
}
}
private void printRole(final List<String> roles) {
for (final String role : roles) {
System.out.println(" - " + role);
}
}
private void printAttributes(final Set<AttrTO> derAttrTOs) {
for (final AttrTO attrTO : derAttrTOs) {
final StringBuilder attributeSentence = new StringBuilder();
attributeSentence.append(" ")
.append(attrTO.getSchema())
.append(": ")
.append(attrTO.getValues());
System.out.println(attributeSentence);
}
}
private void printRelationships(final List<RelationshipTO> relationshipTOs) {
for (final RelationshipTO relationshipTO : relationshipTOs) {
System.out.println(" type: " + relationshipTO.getType());
}
}
public void printFailedUsers(final Map<String, String> users) {
final Table.TableBuilder tableBuilder =
new Table.TableBuilder("Users not deleted").header("user key").header("cause");
for (final Map.Entry<String, String> entrySet : users.entrySet()) {
tableBuilder.rowValues(Arrays.asList(entrySet.getKey(), entrySet.getValue()));
}
tableBuilder.build().print();
}
public void printDetails(final Map<String, String> details) {
printDetails("users details", details);
}
}