Search in sources :

Example 6 with AttributeManager

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);
}
Also used : AttributeManager(com.zimbra.cs.account.AttributeManager)

Example 7 with AttributeManager

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;
}
Also used : AttributeManager(com.zimbra.cs.account.AttributeManager) HashMap(java.util.HashMap) Attribute(com.unboundid.ldap.sdk.Attribute)

Example 8 with AttributeManager

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);
                }
            }
        }
    }
}
Also used : AttributeManager(com.zimbra.cs.account.AttributeManager) ServiceException(com.zimbra.common.service.ServiceException) IDNType(com.zimbra.cs.account.AttributeManager.IDNType)

Example 9 with AttributeManager

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()]);
}
Also used : AttributeInfo(com.zimbra.cs.account.AttributeInfo) AttributeManager(com.zimbra.cs.account.AttributeManager)

Example 10 with AttributeManager

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);
            }
        }
    }
}
Also used : AttributeInfo(com.zimbra.cs.account.AttributeInfo) AttributeManager(com.zimbra.cs.account.AttributeManager) ServiceException(com.zimbra.common.service.ServiceException) HashMap(java.util.HashMap) Version(com.zimbra.common.util.Version)

Aggregations

AttributeManager (com.zimbra.cs.account.AttributeManager)19 HashMap (java.util.HashMap)5 Map (java.util.Map)5 ServiceException (com.zimbra.common.service.ServiceException)4 AttributeInfo (com.zimbra.cs.account.AttributeInfo)4 Element (com.zimbra.common.soap.Element)3 IDNType (com.zimbra.cs.account.AttributeManager.IDNType)3 Provisioning (com.zimbra.cs.account.Provisioning)3 Iterator (java.util.Iterator)3 Entry (java.util.Map.Entry)3 Attribute (com.unboundid.ldap.sdk.Attribute)2 AttributeClass (com.zimbra.cs.account.AttributeClass)2 Config (com.zimbra.cs.account.Config)2 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)2 Collection (java.util.Collection)2 ASN1OctetString (com.unboundid.asn1.ASN1OctetString)1 Version (com.zimbra.common.util.Version)1 Account (com.zimbra.cs.account.Account)1 AttributeFlag (com.zimbra.cs.account.AttributeFlag)1 Cos (com.zimbra.cs.account.Cos)1