use of com.zimbra.cs.account.AttributeManager in project zm-mailbox by Zimbra.
the class ZAttributes method getMultiAttrString.
// make public if necessary
private String[] getMultiAttrString(String attrName, CheckBinary checkBinary) throws LdapException {
boolean containsBinaryData;
boolean isBinaryTransfer;
if (checkBinary == CheckBinary.NOCHECK) {
containsBinaryData = false;
isBinaryTransfer = false;
} else {
AttributeManager attrMgr = AttributeManager.getInst();
containsBinaryData = attrMgr == null ? false : attrMgr.containsBinaryData(attrName);
isBinaryTransfer = attrMgr == null ? false : attrMgr.isBinaryTransfer(attrName);
}
return getMultiAttrString(attrName, containsBinaryData, isBinaryTransfer);
}
use of com.zimbra.cs.account.AttributeManager in project zm-mailbox by Zimbra.
the class UBIDAttributes method getAttrs.
@Override
public Map<String, Object> getAttrs(Set<String> extraBinaryAttrs) throws LdapException {
Map<String, Object> map = new HashMap<String, Object>();
AttributeManager attrMgr = AttributeManager.getInst();
for (Attribute attr : entry.getAttributes()) {
String transferAttrName = attr.getName();
String attrName = LdapUtil.binaryTransferAttrNameToAttrName(transferAttrName);
boolean containsBinaryData = (attrMgr != null && attrMgr.containsBinaryData(attrName)) || (extraBinaryAttrs != null && extraBinaryAttrs.contains(attrName));
if (attr.size() == 1) {
map.put(attrName, getAttrStringInternal(attr, containsBinaryData));
} else {
String[] result = getMultiAttrStringInternal(attr, containsBinaryData);
map.put(attrName, result);
}
}
return map;
}
use of com.zimbra.cs.account.AttributeManager in project zm-mailbox by Zimbra.
the class LdapGalMapRule method apply.
void apply(IAttributes ldapAttrs, Map<String, Object> contactAttrs) {
AttributeManager attrMgr = AttributeManager.getInst();
// index into mContactAttrs
int index = 0;
for (String ldapAttr : mLdapAttrs) {
if (index >= mContactAttrs.length)
return;
String[] val;
try {
val = ldapAttrs.getMultiAttrString(ldapAttr, containsBinaryData(), isBinaryTransfer());
} catch (ServiceException e) {
return;
}
IDNType idnType = AttributeManager.idnType(attrMgr, ldapAttr);
if (val.length == 1) {
index = addToContactAttrs(contactAttrs, IDNUtil.toUnicode(val[0], idnType), index);
} else if (val.length > 1) {
if (mContactAttrs.length == 1) {
index = addToContactAttrs(contactAttrs, val, index);
return;
} else {
for (int i = 0; i < val.length; i++) {
if (index >= mContactAttrs.length)
return;
index = addToContactAttrs(contactAttrs, IDNUtil.toUnicode(val[i], idnType), index);
}
}
}
}
}
use of com.zimbra.cs.account.AttributeManager in project zm-mailbox by Zimbra.
the class LdapProvisioning method getBasicDLAttrs.
private String[] getBasicDLAttrs() throws ServiceException {
AttributeManager attrMgr = AttributeManager.getInstance();
Set<String> dlAttrs = attrMgr.getAllAttrsInClass(AttributeClass.distributionList);
Set<String> attrs = Sets.newHashSet(dlAttrs);
attrs.add(Provisioning.A_objectClass);
// the member attr
attrs.remove(Provisioning.A_zimbraMailForwardingAddress);
// does not apply to DL
attrs.remove(Provisioning.A_zimbraMailTransport);
// remove deprecated attrs
for (Iterator<String> iter = attrs.iterator(); iter.hasNext(); ) {
String attr = iter.next();
AttributeInfo ai = attrMgr.getAttributeInfo(attr);
if (ai != null && ai.isDeprecated()) {
iter.remove();
}
}
return Lists.newArrayList(attrs).toArray(new String[attrs.size()]);
}
use of com.zimbra.cs.account.AttributeManager in project zm-mailbox by Zimbra.
the class BUG_27075 method doEntry.
private void doEntry(ZLdapContext zlc, Entry entry, String entryName, AttributeClass klass) throws ServiceException {
printer.println();
printer.println("------------------------------");
printer.println("Upgrading " + entryName + ": ");
AttributeManager am = AttributeManager.getInstance();
Set<String> attrs = am.getAttrsInClass(klass);
Map<String, Object> attrValues = new HashMap<String, Object>();
for (String attr : attrs) {
AttributeInfo ai = am.getAttributeInfo(attr);
if (ai == null)
continue;
List<Version> attrVersion = ai.getSince();
if (needsUpgrade(am, attr)) {
if (verbose) {
printer.println("");
printer.println("Checking " + entryName + " attribute: " + attr + attrVersion);
}
String curVal = entry.getAttr(attr);
if (curVal != null) {
// already has a value, skip it
if (verbose) {
if (ai.getCardinality() == AttributeCardinality.multi)
curVal = formatMultiValue(entry.getMultiAttrSet(attr));
printer.println(" skipping - already has value: " + curVal);
}
continue;
}
/*
* use the upgrade values if set, otherwise use the default values
*
* Note, we support the case when we need to leave the value unset
* on upgrades, but set a value on new installs. In AttributeManager,
* if <globalConfigValueUpgrade> or <defaultCOSValueUpgrade> element
* is present but does not have a value, AttributeInfo.getGlobalConfigValuesUpgrade()/
* getDefaultCosValuesUpgrade() will return an empty List. If the upgrade
* element is not present, the two methods will return null. We check
* null here and if it is null then use the same default value for new
* installs.
*/
List<String> values = null;
if (klass == AttributeClass.globalConfig) {
values = ai.getGlobalConfigValuesUpgrade();
if (values == null)
values = ai.getGlobalConfigValues();
} else if (klass == AttributeClass.cos) {
values = ai.getDefaultCosValuesUpgrade();
if (values == null)
values = ai.getDefaultCosValues();
} else {
printer.println("Internal error: invalid attribute class " + klass.name());
return;
}
if (values == null || values.size() == 0) {
if (verbose) {
printer.println(" skipping - does not have a default value");
}
continue;
}
attrValues.clear();
if (ai.getCardinality() != AttributeCardinality.multi) {
printer.println(" setting " + entryName + " attribute " + attr + attrVersion + " to: " + values.get(0));
attrValues.put(attr, values.get(0));
} else {
printer.println(" setting " + entryName + " attribute " + attr + attrVersion + " to: " + formatMultiValue(values));
attrValues.put(attr, values.toArray(new String[0]));
}
try {
modifyAttrs(zlc, entry, attrValues);
} catch (ServiceException e) {
// log the exception and continue
printer.println("Caught ServiceException while modifying " + entryName + " attribute " + attr);
printer.printStackTrace(e);
}
}
}
}
Aggregations