/** * */ package org.identityconnectors.oracle; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; import org.identityconnectors.common.security.GuardedString; import org.identityconnectors.framework.common.objects.Attribute; import org.identityconnectors.framework.common.objects.AttributeBuilder; import org.identityconnectors.framework.common.objects.Name; import org.identityconnectors.framework.common.objects.ObjectClass; import org.identityconnectors.framework.common.objects.Uid; import org.identityconnectors.framework.spi.operations.SPIOperation; /** * Full normalizer normalizes both input and output attributes. * * @author kitko * */ final class OracleFullNormalizer implements OracleAttributeNormalizer { private static final Map<String, OracleUserAttribute> MAPPING = new TreeMap<String, OracleUserAttribute>(OracleConnectorHelper .getAttributeNamesComparator()); static { MAPPING.put(Name.NAME, OracleUserAttribute.USER); MAPPING.put(Uid.NAME, OracleUserAttribute.USER); MAPPING.put(OracleConstants.ORACLE_GLOBAL_ATTR_NAME, OracleUserAttribute.GLOBAL_NAME); MAPPING.put(OracleConstants.ORACLE_ROLES_ATTR_NAME, OracleUserAttribute.ROLE); MAPPING.put(OracleConstants.ORACLE_PRIVS_ATTR_NAME, OracleUserAttribute.PRIVILEGE); MAPPING.put(OracleConstants.ORACLE_PROFILE_ATTR_NAME, OracleUserAttribute.PROFILE); MAPPING.put(OracleConstants.ORACLE_DEF_TS_ATTR_NAME, OracleUserAttribute.DEF_TABLESPACE); MAPPING.put(OracleConstants.ORACLE_TEMP_TS_ATTR_NAME, OracleUserAttribute.TEMP_TABLESPACE); } private final OracleCaseSensitivitySetup cs; OracleFullNormalizer(OracleCaseSensitivitySetup cs) { this.cs = cs; } public Set<Attribute> normalizeAttributes(ObjectClass objectClass, Class<? extends SPIOperation> op, Set<Attribute> attrs) { return attrs; } public Attribute normalizeAttribute(ObjectClass oclass, Attribute attribute) { if (attribute == null) { return null; } String name = attribute.getName(); final OracleUserAttribute oracleUserAttribute = MAPPING.get(name); if (oracleUserAttribute == null) { return attribute; } if (attribute.getValue() == null) { return attribute; } List<Object> values = new ArrayList<Object>(); for (Object o : attribute.getValue()) { if (o instanceof String) { o = cs.normalizeToken(oracleUserAttribute, (String) o); } else if (o instanceof GuardedString) { o = cs.normalizeToken(oracleUserAttribute, (GuardedString) o); } values.add(o); } return AttributeBuilder.build(name, values); } public Pair<String, GuardedString> normalizeAuthenticateEntry(String username, GuardedString password) { String nusername = cs.normalizeToken(OracleUserAttribute.USER, username); GuardedString npassword = cs.normalizeToken(OracleUserAttribute.PASSWORD, password); return new Pair<String, GuardedString>(nusername, npassword); } }