com.medigy.persist.model.contact.TestContactMechanism.java Source code

Java tutorial

Introduction

Here is the source code for com.medigy.persist.model.contact.TestContactMechanism.java

Source

/*
 * Copyright (c) 2000-2003 Netspective Communications LLC. All rights reserved.
 *
 * Netspective Communications LLC ("Netspective") permits redistribution, modification and use of this file in source
 * and binary form ("The Software") under the Netspective Source License ("NSL" or "The License"). The following
 * conditions are provided as a summary of the NSL but the NSL remains the canonical license and must be accepted
 * before using The Software. Any use of The Software indicates agreement with the NSL.
 *
 * 1. Each copy or derived work of The Software must preserve the copyright notice and this notice unmodified.
 *
 * 2. Redistribution of The Software is allowed in object code form only (as Java .class files or a .jar file
 *    containing the .class files) and only as part of an application that uses The Software as part of its primary
 *    functionality. No distribution of the package is allowed as part of a software development kit, other library,
 *    or development tool without written consent of Netspective. Any modified form of The Software is bound by these
 *    same restrictions.
 *
 * 3. Redistributions of The Software in any form must include an unmodified copy of The License, normally in a plain
 *    ASCII text file unless otherwise agreed to, in writing, by Netspective.
 *
 * 4. The names "Netspective", "Axiom", "Commons", "Junxion", and "Sparx" are trademarks of Netspective and may not be
 *    used to endorse products derived from The Software without without written consent of Netspective. "Netspective",
 *    "Axiom", "Commons", "Junxion", and "Sparx" may not appear in the names of products derived from The Software
 *    without written consent of Netspective.
 *
 * 5. Please attribute functionality where possible. We suggest using the "powered by Netspective" button or creating
 *    a "powered by Netspective(tm)" link to http://www.netspective.com for each application using The Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT A WARRANTY OF ANY KIND. ALL EXPRESS OR IMPLIED REPRESENTATIONS AND
 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT,
 * ARE HEREBY DISCLAIMED.
 *
 * NETSPECTIVE AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE OR ANY THIRD PARTY AS A
 * RESULT OF USING OR DISTRIBUTING THE SOFTWARE. IN NO EVENT WILL NETSPECTIVE OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN
 * IF HE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 */
package com.medigy.persist.model.contact;

import com.medigy.persist.TestCase;
import com.medigy.persist.model.party.PartyContactMechanism;
import com.medigy.persist.model.party.PhoneNumber;
import com.medigy.persist.model.party.PostalAddress;
import com.medigy.persist.model.person.Person;
import com.medigy.persist.reference.custom.party.ContactMechanismPurposeType;
import com.medigy.persist.reference.custom.person.EthnicityType;
import com.medigy.persist.reference.type.GenderType;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

public class TestContactMechanism extends TestCase {
    public void testPhoneNumber() {
        final Calendar cal = new GregorianCalendar();
        cal.set(1970, 1, 1);

        final Session session = openSession();
        final Transaction transaction = session.beginTransaction();

        final PhoneNumber phoneNumber = new PhoneNumber();
        phoneNumber.setAreaCode("703");
        phoneNumber.setNumberValue("1234567");

        final PhoneNumber phoneNumber2 = new PhoneNumber();
        phoneNumber2.setAreaCode("703");
        phoneNumber2.setNumberValue("1234567");

        final Country country = new Country();
        country.setCountryName("Serenity");
        country.setIsoThreeDigitCode("123");
        country.setIsoThreeLetterCode("ABC");
        country.setIsoTwoLetterCode("AB");

        final State state = new State();
        state.setStateName("Firefly");
        state.setStateAbbreviation("FF");
        final PostalCode zip = new PostalCode();
        zip.setCodeValue("00000");
        zip.setParentState(state);
        state.addPostalCode(zip);
        state.setParentCountry(country);
        country.addState(state);

        final City city = new City();
        city.setCityName("Acme City");
        city.setParentState(state);
        state.addCity(city);
        session.save(country);

        final PostalAddress address = new PostalAddress();
        address.setAddress1("123 Acme Street");
        address.setCity(city);
        address.setState(state);
        address.setPostalCode(zip);

        final Person johnDoe = new Person();
        johnDoe.setLastName("Doe");
        johnDoe.setFirstName("John");
        johnDoe.addGender(GenderType.Cache.MALE.getEntity());
        johnDoe.setBirthDate(cal.getTime());
        johnDoe.addPartyContactMechanism(phoneNumber, ContactMechanismPurposeType.Cache.HOME_PHONE.getEntity());
        johnDoe.addPartyContactMechanism(address, ContactMechanismPurposeType.Cache.HOME_ADDRESS.getEntity());
        johnDoe.addEthnicity(EthnicityType.Cache.CAUCASIAN.getEntity());
        johnDoe.addEthnicity(EthnicityType.Cache.NATIVE_AMERICAN.getEntity());
        johnDoe.addEthnicity(EthnicityType.Cache.HISPANIC.getEntity());

        final Person ryanHackett = new Person();
        ryanHackett.setLastName("Hackett");
        ryanHackett.setFirstName("Ryan");
        ryanHackett.addGender(GenderType.Cache.MALE.getEntity());
        ryanHackett.setBirthDate(cal.getTime());
        ryanHackett.addPartyContactMechanism(phoneNumber2,
                ContactMechanismPurposeType.Cache.HOME_PHONE.getEntity());

        session.save(phoneNumber);
        session.save(phoneNumber2);
        session.save(address);
        session.save(johnDoe);
        session.save(ryanHackett);
        transaction.commit();
        session.close();

        final Session session2 = openSession();
        final Query query = session2.createQuery("from Person person " + "left join fetch person.personIdentifiers "
                + "left join fetch person.ethnicities " + "left join fetch person.insurancePolicies "
                + "left join fetch person.maritalStatuses "
                + "left join fetch person.partyContactMechanisms as contacts "
                + "left join fetch contacts.purposes " + "WHERE person.partyId = :patientId");
        query.setLong("patientId", johnDoe.getPartyId());
        final Person patient = (Person) query.uniqueResult();
        session.close();

        assertThat(patient.getPartyContactMechanisms().size(), eq(2));
        final List<PartyContactMechanism> phoneNumbers = patient.getPhoneNumbers();
        final List<PartyContactMechanism> addresses = patient.getAddresses();

        assertThat(phoneNumbers.size(), eq(1));
        assertThat(addresses.size(), eq(1));
        assertThat(phoneNumbers.get(0).getPurposes().size(), eq(1));
        assertThat(addresses.get(0).getPurposes().size(), eq(1));

    }
}