001: package com.sun.portal.sra.admin.attribute.handlers;
002:
003: import java.util.ArrayList;
004: import java.util.HashMap;
005: import java.util.Iterator;
006: import java.util.List;
007: import java.util.Map;
008: import java.util.Set;
009: import java.util.logging.Level;
010: import java.util.logging.Logger;
011:
012: import com.iplanet.sso.SSOException;
013: import com.iplanet.sso.SSOToken;
014: import com.sun.identity.sm.AttributeSchema;
015: import com.sun.identity.sm.SMSException;
016: import com.sun.identity.sm.ServiceConfig;
017: import com.sun.identity.sm.ServiceConfigManager;
018: import com.sun.identity.sm.ServiceSchema;
019: import com.sun.identity.sm.ServiceSchemaManager;
020: import com.sun.portal.admin.common.AttrOptionConstants;
021: import com.sun.portal.admin.common.PSMBeanException;
022: import com.sun.portal.admin.server.AdminServerUtil;
023: import com.sun.portal.fabric.common.AttributeHandler;
024: import com.sun.portal.fabric.common.GenericDSAMEAttributeHandler;
025: import com.sun.portal.sra.admin.util.HandlerUtils;
026: import com.sun.portal.log.common.PortalLogger;
027:
028: public class BaseSraAttributeHandler extends
029: GenericDSAMEAttributeHandler implements AttributeHandler {
030:
031: private static final String SERVICE_VERSION = "1.0";
032:
033: protected String _serviceName = "";
034:
035: protected String _attributePrefix = "";
036:
037: private SSOToken _token = AdminServerUtil.getSSOToken();
038:
039: private static Logger logger = PortalLogger
040: .getLogger(BaseSraAttributeHandler.class);
041:
042: public void initialize(String serviceName, String attributePrefix,
043: String component, String domainId, String portalId)
044: throws PSMBeanException {
045: _serviceName = serviceName;
046: _attributePrefix = attributePrefix;
047: super .init(component, domainId, portalId);
048: }
049:
050: protected void replaceUserFriendlyNamesWithActual(Map optionsMap) {
051: replaceUserFriendlyServiceNameWithActual(optionsMap);
052: replaceUserFriendlyAttributeNameWithActual(optionsMap);
053: }
054:
055: protected void replaceUserFriendlyServiceNameWithActual(
056: Map optionsMap) {
057: optionsMap.put(AttrOptionConstants.OPT_COMPONENT, _serviceName);
058: }
059:
060: protected void replaceUserFriendlyAttributeNameWithActual(
061: Map optionsMap) {
062: String passedInAttribName = (String) optionsMap
063: .get(AttrOptionConstants.OPT_ATTR_NAME);
064: optionsMap.put(AttrOptionConstants.OPT_ATTR_NAME,
065: getAttributeName(passedInAttribName));
066: }
067:
068: public void validate(List values, Map optionsMap)
069: throws PSMBeanException {
070: replaceUserFriendlyServiceNameWithActual(optionsMap);
071: super .validate(values, optionsMap);
072: }
073:
074: public String getAttributeName(String userFriendlyName) {
075: if (COS_PRIORITY_STRING.equalsIgnoreCase(userFriendlyName))
076: return COS_PRIORITY_STRING;
077:
078: if (userFriendlyName.toLowerCase().startsWith(
079: _attributePrefix.toLowerCase()))
080: return userFriendlyName;
081: else
082: return _attributePrefix + userFriendlyName;
083: }
084:
085: public String getComponentName(String userFriendlyName) {
086: return _serviceName;
087: }
088:
089: public List getAttribute(Map optionsMap) throws PSMBeanException {
090: replaceUserFriendlyNamesWithActual(optionsMap);
091: return super .getAttribute(optionsMap);
092: }
093:
094: public void setAttribute(List values, Map optionsMap)
095: throws PSMBeanException {
096: replaceUserFriendlyNamesWithActual(optionsMap);
097: super .setAttribute(values, optionsMap);
098: }
099:
100: public Map listAttributes(Map optionsMap) throws PSMBeanException {
101:
102: replaceUserFriendlyServiceNameWithActual(optionsMap);
103:
104: Map attributesMap = new HashMap();
105: try {
106: ServiceSchema schema = new ServiceSchemaManager(_token,
107: _serviceName, SERVICE_VERSION).getDynamicSchema();
108: Set attributeSchemaSet = schema.getAttributeSchemas();
109:
110: Iterator iter = attributeSchemaSet.iterator();
111: while (iter.hasNext()) {
112: AttributeSchema attribSchema = (AttributeSchema) iter
113: .next();
114: String attrName = attribSchema.getName();
115: List valueList = HandlerUtils
116: .updateAttributeMap(attribSchema);
117: attributesMap.put(attrName, valueList);
118: }
119:
120: logger.info("PSSR_CSPS_ADM_ATTRIB_HNDLRS005");
121: } catch (Exception e) {
122: throw new PSMBeanException("error.psadmin.list.failed");
123: }
124:
125: return attributesMap;
126:
127: }
128:
129: public void setAttributes(Map nameValues, Map optionsMap)
130: throws PSMBeanException {
131: replaceUserFriendlyServiceNameWithActual(optionsMap);
132: super .setAttributes(nameValues, optionsMap);
133: }
134:
135: public Map getAttributes(Map optionsMap) throws PSMBeanException {
136: replaceUserFriendlyServiceNameWithActual(optionsMap);
137: return super.getAttributes(optionsMap);
138: }
139: }
|