/*
* (C) Copyright 2015 Netcentric AG.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package biz.netcentric.cq.tools.actool.configmodel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import biz.netcentric.cq.tools.actool.dumpservice.AcDumpElement;
import biz.netcentric.cq.tools.actool.dumpservice.AcDumpElementVisitor;
public class AuthorizableConfigBean implements AcDumpElement {
private String authorizableId;
private String principalName;
private String name; // (non-technical) name as used in profile
private String description;
private String[] isMemberOf;
private String memberOfStringFromConfig;
private String[] members;
private String membersStringFromConfig;
private String path;
private String password;
private String externalId;
private String profileContent;
private String preferencesContent;
private String migrateFrom;
private boolean isGroup = true;
private boolean isSystemUser = false;
public String getAuthorizableId() {
return authorizableId;
}
public void setAuthorizableId(final String authorizableId) {
this.authorizableId = authorizableId;
}
public String getPrincipalName() {
return principalName;
}
public void setPrincipalName(final String principalName) {
this.principalName = principalName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(final String path) {
this.path = path;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPassword() {
return password;
}
public void setPassword(final String password) {
this.password = password;
}
public String getExternalId() {
return externalId;
}
public void setExternalId(String externalId) {
this.externalId = externalId;
}
public String getProfileContent() {
return profileContent;
}
public void setProfileContent(String profileContent) {
this.profileContent = profileContent;
}
public String getPreferencesContent() {
return preferencesContent;
}
public void setPreferencesContent(String preferencesContent) {
this.preferencesContent = preferencesContent;
}
public void setMemberOfString(final String memberOfString) {
memberOfStringFromConfig = memberOfString;
}
public void setMembersString(final String membersString) {
membersStringFromConfig = membersString;
}
public boolean isGroup() {
return isGroup;
}
public void setIsGroup(final boolean isGroup) {
this.isGroup = isGroup;
}
public boolean isSystemUser() {
return isSystemUser;
}
public void setIsSystemUser(final boolean isSystemUser) {
this.isSystemUser = isSystemUser;
}
public String[] getMemberOf() {
return isMemberOf;
}
public boolean isMemberOfOtherGroups() {
return isMemberOf != null;
}
public String getMemberOfStringFromConfig() {
return memberOfStringFromConfig;
}
public String getMemberOfString() {
if (isMemberOf == null) {
return "";
}
final StringBuilder memberOfString = new StringBuilder();
for (final String group : isMemberOf) {
memberOfString.append(group).append(",");
}
return StringUtils.chop(memberOfString.toString());
}
public void setMemberOf(final String[] memberOf) {
this.isMemberOf = memberOf;
}
public void setMemberOf(final List<String> memberOf) {
if ((memberOf != null) && !memberOf.isEmpty()) {
this.isMemberOf = memberOf.toArray(new String[memberOf.size()]);
}
}
public void addIsMemberOf(final String member) {
if (isMemberOf == null) {
isMemberOf = new String[] { member };
return;
}
final List<String> memberList = new ArrayList<String>();
memberList.addAll(Arrays.asList(isMemberOf));
if (!memberList.contains(member)) {
memberList.add(member);
isMemberOf = memberList.toArray(new String[memberList.size()]);
}
}
public String getMembersStringFromConfig() {
return membersStringFromConfig;
}
public String getMembersString() {
if (members == null) {
return "";
}
final StringBuilder membersString = new StringBuilder();
for (final String group : members) {
membersString.append(group).append(",");
}
return StringUtils.chop(membersString.toString());
}
public String[] getMembers() {
return members;
}
public void setMembers(final String[] members) {
this.members = members;
}
public String getMigrateFrom() {
return migrateFrom;
}
/** Set a group name, from which the users are taken over to this group. The group given is deleted after the run. This property is only
* to be used temporarily (usually only included in one released version that travels all environments, once all groups are migrated the
* config should be removed). If not set (the default) nothing happens. If the property points to a group that does not exist (anymore),
* the property is ignored.
*
* @param migrateFrom */
public void setMigrateFrom(String migrateFrom) {
this.migrateFrom = migrateFrom;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("\n" + "id: " + authorizableId + "\n");
sb.append("name: " + principalName + "\n");
sb.append("path: " + path + "\n");
sb.append("isMemberOf: " + getMemberOfString() + "\n");
sb.append("members: " + getMembersString() + "\n");
return sb.toString();
}
@Override
public void accept(final AcDumpElementVisitor acDumpElementVisitor) {
acDumpElementVisitor.visit(this);
}
}