/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package gov.hhs.fha.nhinc.subscription.dte; import gov.hhs.fha.nhinc.common.subscription.CommunityType; import gov.hhs.fha.nhinc.common.subscription.CriteriaType; import gov.hhs.fha.nhinc.common.subscription.SubscribeeType; import gov.hhs.fha.nhinc.common.subscription.SubscriberType; import gov.hhs.fha.nhinc.common.subscription.SubscriptionCriteriaType; import gov.hhs.fha.nhinc.common.subscription.SubscriptionItemType; import gov.hhs.fha.nhinc.nhinclib.NullChecker; import gov.hhs.fha.nhinc.subscription.*; import gov.hhs.fha.nhinc.common.subscriptiondte.CreateChildSubscriptionItemRequestType; import gov.hhs.fha.nhinc.common.nhinccommon.QualifiedSubjectIdentifierType; import gov.hhs.fha.nhinc.common.subscriptiondte.CreateChildSubscriptionItemResponseType; /** * * @author rayj */ public class CreateChildSubscriptionItemHelper { public static CreateChildSubscriptionItemResponseType createChildSubscriptionItem(CreateChildSubscriptionItemRequestType createChildSubscriptionInput) { CreateChildSubscriptionItemResponseType response = new CreateChildSubscriptionItemResponseType(); SubscriptionItemType subscriptionItem = new SubscriptionItemType(); SubscriptionItemType parentSubscriptionItem = createChildSubscriptionInput.getParentSubscriptionItem(); subscriptionItem.setSubscriber(new SubscriberType()); subscriptionItem.getSubscriber().setCommunity(Configuration.getMyCommunity()); subscriptionItem.getSubscriber().setNotificationConsumerEndpointAddress(Configuration.getlocalNotificationConsumerEndpointAddress()); subscriptionItem.setSubscribee(new SubscribeeType()); String userAddress = getUserAddress(parentSubscriptionItem); if (NullChecker.isNotNullish(userAddress)) { subscriptionItem.getSubscribee().setUserAddress(userAddress); } String targetCommunityId = createChildSubscriptionInput.getTargetCommunityId(); if (NullChecker.isNotNullish(targetCommunityId)) { subscriptionItem.getSubscribee().setCommunity(new CommunityType()); subscriptionItem.getSubscribee().getCommunity().setId(targetCommunityId); } SubscriptionCriteriaType subscriptionCriteria = new SubscriptionCriteriaType(); subscriptionItem.setSubscriptionCriteria(subscriptionCriteria); QualifiedSubjectIdentifierType subscribeePatient = createChildSubscriptionInput.getTargetPatientId(); if (subscribeePatient != null) { subscriptionCriteria.setSubscribeePatient(subscribeePatient); } QualifiedSubjectIdentifierType subscriberPatient = getSubscriptionCriteriaSubscriberPatient(parentSubscriptionItem); subscriptionCriteria.setSubscriberPatient(subscriberPatient); CriteriaType miscCriteria = getSubscriptionMiscCriteria(parentSubscriptionItem); subscriptionCriteria.setCriteria(miscCriteria); subscriptionCriteria.setTopicExpression(parentSubscriptionItem.getSubscriptionCriteria().getTopicExpression()); subscriptionCriteria.setSubscriptionPolicy(parentSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy()); subscriptionItem.setSubscriptionReference(null); subscriptionItem.setParentSubscriptionReference(parentSubscriptionItem.getSubscriptionReference()); response.setSubscriptionItem(subscriptionItem); return response; } private static CriteriaType getSubscriptionMiscCriteria(SubscriptionItemType subscriptionItem) { CriteriaType miscCriteria = null; if ((subscriptionItem != null) && (subscriptionItem.getSubscriptionCriteria() != null)) { miscCriteria = subscriptionItem.getSubscriptionCriteria().getCriteria(); } return miscCriteria; } private static QualifiedSubjectIdentifierType getSubscriptionCriteriaSubscriberPatient(SubscriptionItemType subscriptionItem) { QualifiedSubjectIdentifierType patient = null; if ((subscriptionItem != null) && (subscriptionItem.getSubscriptionCriteria() != null) && (subscriptionItem.getSubscriptionCriteria().getSubscriberPatient() != null)) { patient = subscriptionItem.getSubscriptionCriteria().getSubscriberPatient(); } return patient; } private static String getUserAddress(SubscriptionItemType parentSubscriptionItem) { String userAddress = null; if (parentSubscriptionItem == null) { userAddress = null; } else if (parentSubscriptionItem.getSubscriber() == null) { userAddress = null; } else { userAddress = parentSubscriptionItem.getSubscriber().getUserAddress(); } return userAddress; } }