Search in sources :

Example 36 with MultiValuedAttribute

use of org.wso2.charon3.core.attributes.MultiValuedAttribute in project charon by wso2.

the class AbstractSCIMObject method toString.

public String toString() {
    String scimObjectStringValue = null;
    Map<String, Attribute> attributeList = this.getAttributeList();
    for (Attribute attribute : attributeList.values()) {
        if (attribute instanceof SimpleAttribute) {
            scimObjectStringValue = simpleAttributeToString(scimObjectStringValue, attribute);
        } else if (attribute instanceof ComplexAttribute) {
            ComplexAttribute complexAttribute = (ComplexAttribute) attribute;
            String complexValue = null;
            Map<String, Attribute> subAttributes = complexAttribute.getSubAttributesList();
            for (Attribute subAttribute : subAttributes.values()) {
                if (subAttribute instanceof SimpleAttribute) {
                    complexValue = simpleAttributeToString(complexValue, (Attribute) ((SimpleAttribute) subAttribute));
                } else if (subAttribute instanceof MultiValuedAttribute) {
                    if (!subAttribute.getType().equals(SCIMDefinitions.DataType.COMPLEX)) {
                        String primitiveValue = null;
                        primitiveValue = multiValuedPrimitiveAttributeToString(((MultiValuedAttribute) subAttribute).getAttributePrimitiveValues(), subAttribute.getName());
                        if (complexValue == null) {
                            complexValue = primitiveValue;
                        } else {
                            complexValue = complexValue + "," + primitiveValue;
                        }
                    } else {
                        String multiValue = null;
                        List<Attribute> subAttributeList = ((MultiValuedAttribute) (subAttribute)).getAttributeValues();
                        for (Attribute subValue : subAttributeList) {
                            ComplexAttribute complexSubAttribute = (ComplexAttribute) subValue;
                            String complexSubValue = null;
                            Map<String, Attribute> subSubAttributes = complexSubAttribute.getSubAttributesList();
                            for (Attribute subSubAttribute : subSubAttributes.values()) {
                                if (subSubAttribute instanceof SimpleAttribute) {
                                    complexSubValue = simpleAttributeToString(complexSubValue, (Attribute) ((SimpleAttribute) subSubAttribute));
                                } else if (subSubAttribute instanceof MultiValuedAttribute) {
                                    complexSubValue = multiValuedPrimitiveAttributeToString(((MultiValuedAttribute) subSubAttribute).getAttributePrimitiveValues(), subSubAttribute.getName());
                                }
                            }
                            complexSubValue = "{" + complexSubValue + "}";
                            if (multiValue == null) {
                                multiValue = complexSubValue;
                            } else {
                                multiValue = multiValue + "," + complexSubValue;
                            }
                        }
                        if (scimObjectStringValue != null) {
                            scimObjectStringValue = scimObjectStringValue + "," + attribute.getName() + ":{" + subAttribute.getName() + ":[" + multiValue + "]}";
                        } else {
                            scimObjectStringValue = attribute.getName() + ":{" + subAttribute.getName() + ":[" + multiValue + "]}";
                        }
                    }
                } else if (subAttribute instanceof ComplexAttribute) {
                    ComplexAttribute complexSubAttribute = (ComplexAttribute) subAttribute;
                    String complexSubValue = null;
                    Map<String, Attribute> subSubAttributes = complexSubAttribute.getSubAttributesList();
                    for (Attribute subSubAttribute : subSubAttributes.values()) {
                        if (subSubAttribute instanceof SimpleAttribute) {
                            complexSubValue = simpleAttributeToString(complexSubValue, (Attribute) ((SimpleAttribute) subSubAttribute));
                        } else if (subSubAttribute instanceof MultiValuedAttribute) {
                            complexSubValue = multiValuedPrimitiveAttributeToString(((MultiValuedAttribute) subSubAttribute).getAttributePrimitiveValues(), subSubAttribute.getName());
                        }
                    }
                    complexSubValue = subAttribute.getName() + ":{" + complexSubValue + "}";
                    complexValue = complexSubValue;
                }
            }
            if (scimObjectStringValue == null) {
                scimObjectStringValue = attribute.getName() + ":{" + complexValue + "}";
            } else {
                scimObjectStringValue = scimObjectStringValue + "," + attribute.getName() + ":{" + complexValue + "}";
            }
        } else if (attribute instanceof MultiValuedAttribute) {
            MultiValuedAttribute multiValuedAttribute = (MultiValuedAttribute) attribute;
            if (multiValuedAttribute.getType().equals(SCIMDefinitions.DataType.COMPLEX)) {
                String multiValue = null;
                List<Attribute> subAttributeList = multiValuedAttribute.getAttributeValues();
                for (Attribute subAttribute : subAttributeList) {
                    ComplexAttribute complexSubAttribute = (ComplexAttribute) subAttribute;
                    String complexSubValue = null;
                    Map<String, Attribute> subSubAttributes = complexSubAttribute.getSubAttributesList();
                    for (Attribute subSubAttribute : subSubAttributes.values()) {
                        if (subSubAttribute instanceof SimpleAttribute) {
                            complexSubValue = simpleAttributeToString(complexSubValue, (Attribute) ((SimpleAttribute) subSubAttribute));
                        } else if (subSubAttribute instanceof MultiValuedAttribute) {
                            complexSubValue = multiValuedPrimitiveAttributeToString(((MultiValuedAttribute) subSubAttribute).getAttributePrimitiveValues(), subSubAttribute.getName());
                        }
                    }
                    complexSubValue = "{" + complexSubValue + "}";
                    if (multiValue == null) {
                        multiValue = complexSubValue;
                    } else {
                        multiValue = multiValue + "," + complexSubValue;
                    }
                }
                if (scimObjectStringValue != null) {
                    scimObjectStringValue = scimObjectStringValue + "," + attribute.getName() + ":[" + multiValue + "]";
                } else {
                    scimObjectStringValue = attribute.getName() + ":[" + multiValue + "]";
                }
            } else {
                List<Object> primitiveValueList = multiValuedAttribute.getAttributePrimitiveValues();
                String complexValue = null;
                complexValue = multiValuedPrimitiveAttributeToString(primitiveValueList, multiValuedAttribute.getName());
                if (scimObjectStringValue == null) {
                    scimObjectStringValue = complexValue;
                } else {
                    scimObjectStringValue = scimObjectStringValue + "," + complexValue;
                }
            }
        }
    }
    return scimObjectStringValue;
}
Also used : MultiValuedAttribute(org.wso2.charon3.core.attributes.MultiValuedAttribute) ComplexAttribute(org.wso2.charon3.core.attributes.ComplexAttribute) Attribute(org.wso2.charon3.core.attributes.Attribute) SimpleAttribute(org.wso2.charon3.core.attributes.SimpleAttribute) SimpleAttribute(org.wso2.charon3.core.attributes.SimpleAttribute) ComplexAttribute(org.wso2.charon3.core.attributes.ComplexAttribute) HashMap(java.util.HashMap) Map(java.util.Map) MultiValuedAttribute(org.wso2.charon3.core.attributes.MultiValuedAttribute)

Aggregations

MultiValuedAttribute (org.wso2.charon3.core.attributes.MultiValuedAttribute)35 ComplexAttribute (org.wso2.charon3.core.attributes.ComplexAttribute)32 Attribute (org.wso2.charon3.core.attributes.Attribute)31 SimpleAttribute (org.wso2.charon3.core.attributes.SimpleAttribute)30 BadRequestException (org.wso2.charon3.core.exceptions.BadRequestException)20 JSONObject (org.json.JSONObject)14 ArrayList (java.util.ArrayList)10 AbstractSCIMObject (org.wso2.charon3.core.objects.AbstractSCIMObject)10 JSONArray (org.json.JSONArray)9 JSONException (org.json.JSONException)8 AttributeSchema (org.wso2.charon3.core.schema.AttributeSchema)8 List (java.util.List)7 Map (java.util.Map)7 AbstractAttribute (org.wso2.charon3.core.attributes.AbstractAttribute)7 CharonException (org.wso2.charon3.core.exceptions.CharonException)6 SCIMObject (org.wso2.charon3.core.objects.SCIMObject)6 HashMap (java.util.HashMap)4 JSONTokener (org.json.JSONTokener)4 SCIMAttributeSchema (org.wso2.charon3.core.schema.SCIMAttributeSchema)3 Iterator (java.util.Iterator)2