a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: IDPPDemographics.java,v 1.2 2008/06/25 05:47:16 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.idpp.container;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.datastruct.CollectionHelper;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Set;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashSet;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Document;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.common.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.plugin.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.IDPPServiceManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class <code>IDPPDemographics</code> is an implementation of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>IDPPContainer</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class IDPPDemographics extends IDPPBaseContainer {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public IDPPDemographics() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:constructor:init.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the common name jaxb element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userMap user map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return CommonNameElement JAXB Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IDPPException.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Object getContainerObject(Map userMap) throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getContainerObject:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster PPType ppType = IDPPUtils.getIDPPFactory().createPPElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DemographicsElement de =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.getIDPPFactory().createDemographicsElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String displayLang = CollectionHelper.getMapAttr(userMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMapper().getDSAttribute(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_DISPLAY_LANG_ELEMENT).toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(displayLang != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de.setDisplayLanguage(getDSTString(displayLang));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Set languages = (Set)userMap.get(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMapper().getDSAttribute(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_LANGUAGE_ELEMENT).toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = languages.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de.getLanguage().add(getDSTString((String)iter.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String birthDay = CollectionHelper.getMapAttr(userMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMapper().getDSAttribute(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_BIRTH_DAY_ELEMENT).toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(birthDay != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de.setBirthday(getDSTMonthDay(birthDay));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String age = CollectionHelper.getMapAttr(userMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMapper().getDSAttribute(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_AGE_ELEMENT).toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(age != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de.setAge(getDSTInteger(age));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String timeZone = CollectionHelper.getMapAttr(userMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMapper().getDSAttribute(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_TIME_ZONE_ELEMENT).toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(timeZone != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de.setTimeZone(getDSTString(timeZone));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ppType.setDemographics(de);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ppType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "IDPPDemographics:getContainerObject: JAXB failure", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("jaxbFailure"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets required common name container attributes.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a set of required container attributes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Set getContainerAttributes() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Set set = new HashSet();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(IDPPConstants.DEMO_GRAPHICS_DISPLAY_LANG_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(IDPPConstants.DEMO_GRAPHICS_LANGUAGE_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(IDPPConstants.DEMO_GRAPHICS_BIRTH_DAY_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(IDPPConstants.DEMO_GRAPHICS_AGE_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(IDPPConstants.DEMO_GRAPHICS_TIME_ZONE_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return getMapperAttributeSet(set);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the container attributes for a given select expression.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param select Select expression.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a set of required user attributes.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Set getContainerAttributesForSelect(String select) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(IDPPUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getContainer" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AttributesForSelect:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String expContext = IDPPUtils.getExpressionContext(select);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(IDPPUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getContainer" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AttributesForSelect:exp context = " + expContext);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Set set = new HashSet();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expContext == null || expContext.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return set;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expContext.equals(IDPPConstants.DEMOGRAPHICS_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return getContainerAttributes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster set.add(expContext);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return getMapperAttributeSet(set);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Processes modify container values and returns key value/pair to be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * modified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param select Select expression.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param data list of new data objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Map Attribute key value pair map for the given select.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IDPPException.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Map getDataMapForSelect(String select, List data)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getDataMapForSelect:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map map = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String expContext = IDPPUtils.getExpressionContext(select);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(IDPPUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getDataMapForSelect:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "exp context = " + expContext);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expContext == null && expContext.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object dataElement = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(data != null && !data.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dataElement = data.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expContext.equals(IDPPConstants.DEMOGRAPHICS_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((dataElement == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (dataElement instanceof DemographicsElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster map = getDemographicsMap(dataElement, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(expContext.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_DISPLAY_LANG_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((dataElement == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (dataElement instanceof DisplayLanguageElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster map = getAttributeMap(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_DISPLAY_LANG_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dataElement, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(expContext.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_BIRTH_DAY_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((dataElement == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (dataElement instanceof BirthdayElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster map = getAttributeMap(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_BIRTH_DAY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dataElement, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(expContext.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_AGE_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((dataElement == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (dataElement instanceof AgeElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster map = getAttributeMap(IDPPConstants.DEMO_GRAPHICS_AGE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dataElement, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(expContext.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_LANGUAGE_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((dataElement == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (dataElement instanceof LanguageElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster map = getLanguageMap(data, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.error("IDPPDemographics:getDataMapForSelect"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Unsupported element");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(IDPPUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getDataMapForSelect:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Attr map to be modified." + map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the Demographics container attributes in a hashmap.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param obj DemographicsType JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param map map that sets attribute/value pairs.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Map Attribute value pair map that needs to be modified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IDPPException.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Map getDemographicsMap(Object obj, Map map)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getDemographicsMap:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTString displayLang = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTInteger age = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTMonthDay birthDay = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List languages = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTString timeZone = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(obj != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(obj instanceof DemographicsType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DemographicsType demoGraphs = (DemographicsType)obj;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster displayLang = demoGraphs.getDisplayLanguage();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster age = demoGraphs.getAge();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster birthDay = demoGraphs.getBirthday();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster languages = demoGraphs.getLanguage();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster timeZone = demoGraphs.getTimeZone();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.bundle.getString("invalid Element"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getLanguageMap(languages, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMap(IDPPConstants.DEMO_GRAPHICS_DISPLAY_LANG_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster displayLang, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMap(IDPPConstants.DEMO_GRAPHICS_AGE_ELEMENT, age, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMap(IDPPConstants.DEMO_GRAPHICS_TIME_ZONE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster timeZone, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getAttributeMap(IDPPConstants.DEMO_GRAPHICS_BIRTH_DAY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster birthDay, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the Lanaguage attributes map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param dataObject list of data objects
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param map map to be filled in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Map map to be returned
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IDPPException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Map getLanguageMap(List dataObject, Map map) throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.message("IDPPDemographics:getLanguageMap:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(dataObject == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return getAttributeMap(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.DEMO_GRAPHICS_LANGUAGE_ELEMENT, null, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return getAttributeMap(IDPPConstants.DEMO_GRAPHICS_LANGUAGE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dataObject, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks if there are any binary attributes.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean hasBinaryAttributes() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}