SMSDataEntry.java revision ec605f03252c4b0b84efac92c54b22d1b2ba3a6c
/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved
*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* https://opensso.dev.java.net/public/CDDLv1.0.html or
* opensso/legal/CDDLv1.0.txt
* See the License for the specific language governing
* permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at opensso/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* $Id: SMSDataEntry.java,v 1.1 2009/04/02 19:40:59 veiming Exp $
*
* Portions Copyrighted 2011-2015 ForgeRock AS
*/
package com.sun.identity.sm;
import com.sun.identity.shared.JSONUtils;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.json.JSONException;
import org.json.JSONObject;
/**
* This class encapsulates a distinguished name and its attribute values.
*/
public class SMSDataEntry {
private String dn;
private Map attributeValues;
/**
* Constructs an instance.
*
* @param dn Distinguished name.
* @param attributeValues attribute values.
*/
public SMSDataEntry(String dn, Map attributeValues) {
this.dn = dn;
this.attributeValues = new HashMap();
parseAttributeValues(attributeValues);
}
public SMSDataEntry(String jsonString) throws JSONException {
JSONObject o = new JSONObject(jsonString);
this.dn = o.getString("dn");
this.attributeValues = JSONUtils.getMapStringSetString(o, "attributeValues");
}
public String getDN() {
return dn;
}
private void parseAttributeValues(Map raw) {
parseAttributeValues((Set)raw.get(SMSEntry.ATTR_XML_KEYVAL));
parseAttributeValues((Set)raw.get(SMSEntry.ATTR_KEYVAL));
}
private void parseAttributeValues(Set raw) {
if (raw == null) {
return;
}
for (Iterator i = raw.iterator(); i.hasNext(); ) {
String s = (String)i.next();
int idx = s.indexOf('=');
if (idx != -1) {
String name = s.substring(0, idx);
String value = s.substring(idx+1);
Set set = (Set)attributeValues.get(name);
if (set == null) {
set = new HashSet();
attributeValues.put(name, set);
}
set.add(value);
}
}
}
public Set getAttributeValues(String attributeName) {
return (Set)attributeValues.get(attributeName);
}
public String getAttributeValue(String attributeName) {
Set val = (Set)attributeValues.get(attributeName);
return ((val != null) && !val.isEmpty()) ?
(String)val.iterator().next() : null;
}
public String toJSONString() throws JSONException {
JSONObject result = new JSONObject();
result.put("dn", dn);
result.put("attributeValues", attributeValues);
return result.toString();
}
}