001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.party.impl;
008    
009    import com.hammurapi.party.Address;
010    import com.hammurapi.party.CommonObject;
011    import com.hammurapi.party.ContactInfo;
012    import com.hammurapi.party.Custom;
013    import com.hammurapi.party.DateEffectiveObject;
014    import com.hammurapi.party.EMail;
015    import com.hammurapi.party.Identity;
016    import com.hammurapi.party.MatrixRelationship;
017    import com.hammurapi.party.Organization;
018    import com.hammurapi.party.Party;
019    import com.hammurapi.party.PartyFactory;
020    import com.hammurapi.party.PartyPackage;
021    import com.hammurapi.party.Person;
022    import com.hammurapi.party.Phone;
023    import com.hammurapi.party.Role;
024    import com.hammurapi.party.Tag;
025    import com.hammurapi.party.Tagged;
026    import com.hammurapi.party.USAddress;
027    import com.hammurapi.party.Web;
028    
029    import org.eclipse.emf.ecore.EAttribute;
030    import org.eclipse.emf.ecore.EClass;
031    import org.eclipse.emf.ecore.EOperation;
032    import org.eclipse.emf.ecore.EPackage;
033    import org.eclipse.emf.ecore.EReference;
034    
035    import org.eclipse.emf.ecore.impl.EPackageImpl;
036    
037    /**
038     * <!-- begin-user-doc -->
039     * An implementation of the model <b>Package</b>.
040     * <!-- end-user-doc -->
041     * @generated
042     */
043    public class PartyPackageImpl extends EPackageImpl implements PartyPackage {
044            /**
045             * <!-- begin-user-doc -->
046             * <!-- end-user-doc -->
047             * @generated
048             */
049            private EClass partyEClass = null;
050    
051            /**
052             * <!-- begin-user-doc -->
053             * <!-- end-user-doc -->
054             * @generated
055             */
056            private EClass identityEClass = null;
057    
058            /**
059             * <!-- begin-user-doc -->
060             * <!-- end-user-doc -->
061             * @generated
062             */
063            private EClass taggedEClass = null;
064    
065            /**
066             * <!-- begin-user-doc -->
067             * <!-- end-user-doc -->
068             * @generated
069             */
070            private EClass dateEffectiveObjectEClass = null;
071    
072            /**
073             * <!-- begin-user-doc -->
074             * <!-- end-user-doc -->
075             * @generated
076             */
077            private EClass contactInfoEClass = null;
078    
079            /**
080             * <!-- begin-user-doc -->
081             * <!-- end-user-doc -->
082             * @generated
083             */
084            private EClass phoneEClass = null;
085    
086            /**
087             * <!-- begin-user-doc -->
088             * <!-- end-user-doc -->
089             * @generated
090             */
091            private EClass webEClass = null;
092    
093            /**
094             * <!-- begin-user-doc -->
095             * <!-- end-user-doc -->
096             * @generated
097             */
098            private EClass eMailEClass = null;
099    
100            /**
101             * <!-- begin-user-doc -->
102             * <!-- end-user-doc -->
103             * @generated
104             */
105            private EClass addressEClass = null;
106    
107            /**
108             * <!-- begin-user-doc -->
109             * <!-- end-user-doc -->
110             * @generated
111             */
112            private EClass customEClass = null;
113    
114            /**
115             * <!-- begin-user-doc -->
116             * <!-- end-user-doc -->
117             * @generated
118             */
119            private EClass usAddressEClass = null;
120    
121            /**
122             * <!-- begin-user-doc -->
123             * <!-- end-user-doc -->
124             * @generated
125             */
126            private EClass organizationEClass = null;
127    
128            /**
129             * <!-- begin-user-doc -->
130             * <!-- end-user-doc -->
131             * @generated
132             */
133            private EClass personEClass = null;
134    
135            /**
136             * <!-- begin-user-doc -->
137             * <!-- end-user-doc -->
138             * @generated
139             */
140            private EClass tagEClass = null;
141    
142            /**
143             * <!-- begin-user-doc -->
144             * <!-- end-user-doc -->
145             * @generated
146             */
147            private EClass roleEClass = null;
148    
149            /**
150             * <!-- begin-user-doc -->
151             * <!-- end-user-doc -->
152             * @generated
153             */
154            private EClass urlEClass = null;
155    
156            /**
157             * <!-- begin-user-doc -->
158             * <!-- end-user-doc -->
159             * @generated
160             */
161            private EClass commonObjectEClass = null;
162    
163            /**
164             * <!-- begin-user-doc -->
165             * <!-- end-user-doc -->
166             * @generated
167             */
168            private EClass matrixRelationshipEClass = null;
169    
170            /**
171             * Creates an instance of the model <b>Package</b>, registered with
172             * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
173             * package URI value.
174             * <p>Note: the correct way to create the package is via the static
175             * factory method {@link #init init()}, which also performs
176             * initialization of the package, or returns the registered package,
177             * if one already exists.
178             * <!-- begin-user-doc -->
179             * <!-- end-user-doc -->
180             * @see org.eclipse.emf.ecore.EPackage.Registry
181             * @see com.hammurapi.party.PartyPackage#eNS_URI
182             * @see #init()
183             * @generated
184             */
185            private PartyPackageImpl() {
186                    super(eNS_URI, PartyFactory.eINSTANCE);
187            }
188    
189            /**
190             * <!-- begin-user-doc -->
191             * <!-- end-user-doc -->
192             * @generated
193             */
194            private static boolean isInited = false;
195    
196            /**
197             * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
198             * 
199             * <p>This method is used to initialize {@link PartyPackage#eINSTANCE} when that field is accessed.
200             * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
201             * <!-- begin-user-doc -->
202             * <!-- end-user-doc -->
203             * @see #eNS_URI
204             * @see #createPackageContents()
205             * @see #initializePackageContents()
206             * @generated
207             */
208            public static PartyPackage init() {
209                    if (isInited) return (PartyPackage)EPackage.Registry.INSTANCE.getEPackage(PartyPackage.eNS_URI);
210    
211                    // Obtain or create and register package
212                    PartyPackageImpl thePartyPackage = (PartyPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof PartyPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new PartyPackageImpl());
213    
214                    isInited = true;
215    
216                    // Create package meta-data objects
217                    thePartyPackage.createPackageContents();
218    
219                    // Initialize created meta-data
220                    thePartyPackage.initializePackageContents();
221    
222                    // Mark meta-data to indicate it can't be changed
223                    thePartyPackage.freeze();
224    
225      
226                    // Update the registry and return the package
227                    EPackage.Registry.INSTANCE.put(PartyPackage.eNS_URI, thePartyPackage);
228                    return thePartyPackage;
229            }
230    
231            /**
232             * <!-- begin-user-doc -->
233             * <!-- end-user-doc -->
234             * @generated
235             */
236            public EClass getParty() {
237                    return partyEClass;
238            }
239    
240            /**
241             * <!-- begin-user-doc -->
242             * <!-- end-user-doc -->
243             * @generated
244             */
245            public EReference getParty_ContactInfo() {
246                    return (EReference)partyEClass.getEStructuralFeatures().get(0);
247            }
248    
249            /**
250             * <!-- begin-user-doc -->
251             * <!-- end-user-doc -->
252             * @generated
253             */
254            public EReference getParty_Identity() {
255                    return (EReference)partyEClass.getEStructuralFeatures().get(1);
256            }
257    
258            /**
259             * <!-- begin-user-doc -->
260             * <!-- end-user-doc -->
261             * @generated
262             */
263            public EReference getParty_Parent() {
264                    return (EReference)partyEClass.getEStructuralFeatures().get(2);
265            }
266    
267            /**
268             * <!-- begin-user-doc -->
269             * <!-- end-user-doc -->
270             * @generated
271             */
272            public EAttribute getParty_Name() {
273                    return (EAttribute)partyEClass.getEStructuralFeatures().get(3);
274            }
275    
276            /**
277             * <!-- begin-user-doc -->
278             * <!-- end-user-doc -->
279             * @generated
280             */
281            public EAttribute getParty_Uid() {
282                    return (EAttribute)partyEClass.getEStructuralFeatures().get(4);
283            }
284    
285            /**
286             * <!-- begin-user-doc -->
287             * <!-- end-user-doc -->
288             * @generated
289             */
290            public EClass getIdentity() {
291                    return identityEClass;
292            }
293    
294            /**
295             * <!-- begin-user-doc -->
296             * <!-- end-user-doc -->
297             * @generated
298             */
299            public EAttribute getIdentity_Type() {
300                    return (EAttribute)identityEClass.getEStructuralFeatures().get(0);
301            }
302    
303            /**
304             * <!-- begin-user-doc -->
305             * <!-- end-user-doc -->
306             * @generated
307             */
308            public EAttribute getIdentity_Value() {
309                    return (EAttribute)identityEClass.getEStructuralFeatures().get(1);
310            }
311    
312            /**
313             * <!-- begin-user-doc -->
314             * <!-- end-user-doc -->
315             * @generated
316             */
317            public EAttribute getIdentity_Comment() {
318                    return (EAttribute)identityEClass.getEStructuralFeatures().get(2);
319            }
320    
321            /**
322             * <!-- begin-user-doc -->
323             * <!-- end-user-doc -->
324             * @generated
325             */
326            public EClass getTagged() {
327                    return taggedEClass;
328            }
329    
330            /**
331             * <!-- begin-user-doc -->
332             * <!-- end-user-doc -->
333             * @generated
334             */
335            public EReference getTagged_Tags() {
336                    return (EReference)taggedEClass.getEStructuralFeatures().get(0);
337            }
338    
339            /**
340             * <!-- begin-user-doc -->
341             * <!-- end-user-doc -->
342             * @generated
343             */
344            public EAttribute getTagged_Comment() {
345                    return (EAttribute)taggedEClass.getEStructuralFeatures().get(1);
346            }
347    
348            /**
349             * <!-- begin-user-doc -->
350             * <!-- end-user-doc -->
351             * @generated
352             */
353            public EClass getDateEffectiveObject() {
354                    return dateEffectiveObjectEClass;
355            }
356    
357            /**
358             * <!-- begin-user-doc -->
359             * <!-- end-user-doc -->
360             * @generated
361             */
362            public EAttribute getDateEffectiveObject_Start() {
363                    return (EAttribute)dateEffectiveObjectEClass.getEStructuralFeatures().get(0);
364            }
365    
366            /**
367             * <!-- begin-user-doc -->
368             * <!-- end-user-doc -->
369             * @generated
370             */
371            public EAttribute getDateEffectiveObject_End() {
372                    return (EAttribute)dateEffectiveObjectEClass.getEStructuralFeatures().get(1);
373            }
374    
375            /**
376             * <!-- begin-user-doc -->
377             * <!-- end-user-doc -->
378             * @generated
379             */
380            public EClass getContactInfo() {
381                    return contactInfoEClass;
382            }
383    
384            /**
385             * <!-- begin-user-doc -->
386             * <!-- end-user-doc -->
387             * @generated
388             */
389            public EAttribute getContactInfo_Category() {
390                    return (EAttribute)contactInfoEClass.getEStructuralFeatures().get(0);
391            }
392    
393            /**
394             * <!-- begin-user-doc -->
395             * <!-- end-user-doc -->
396             * @generated
397             */
398            public EReference getContactInfo_Owner() {
399                    return (EReference)contactInfoEClass.getEStructuralFeatures().get(1);
400            }
401    
402            /**
403             * <!-- begin-user-doc -->
404             * <!-- end-user-doc -->
405             * @generated
406             */
407            public EClass getPhone() {
408                    return phoneEClass;
409            }
410    
411            /**
412             * <!-- begin-user-doc -->
413             * <!-- end-user-doc -->
414             * @generated
415             */
416            public EAttribute getPhone_CountryCode() {
417                    return (EAttribute)phoneEClass.getEStructuralFeatures().get(0);
418            }
419    
420            /**
421             * <!-- begin-user-doc -->
422             * <!-- end-user-doc -->
423             * @generated
424             */
425            public EAttribute getPhone_AreaCode() {
426                    return (EAttribute)phoneEClass.getEStructuralFeatures().get(1);
427            }
428    
429            /**
430             * <!-- begin-user-doc -->
431             * <!-- end-user-doc -->
432             * @generated
433             */
434            public EAttribute getPhone_Number() {
435                    return (EAttribute)phoneEClass.getEStructuralFeatures().get(2);
436            }
437    
438            /**
439             * <!-- begin-user-doc -->
440             * <!-- end-user-doc -->
441             * @generated
442             */
443            public EClass getWeb() {
444                    return webEClass;
445            }
446    
447            /**
448             * <!-- begin-user-doc -->
449             * <!-- end-user-doc -->
450             * @generated
451             */
452            public EClass getEMail() {
453                    return eMailEClass;
454            }
455    
456            /**
457             * <!-- begin-user-doc -->
458             * <!-- end-user-doc -->
459             * @generated
460             */
461            public EClass getAddress() {
462                    return addressEClass;
463            }
464    
465            /**
466             * <!-- begin-user-doc -->
467             * <!-- end-user-doc -->
468             * @generated
469             */
470            public EAttribute getAddress_Country() {
471                    return (EAttribute)addressEClass.getEStructuralFeatures().get(0);
472            }
473    
474            /**
475             * <!-- begin-user-doc -->
476             * <!-- end-user-doc -->
477             * @generated
478             */
479            public EClass getCustom() {
480                    return customEClass;
481            }
482    
483            /**
484             * <!-- begin-user-doc -->
485             * <!-- end-user-doc -->
486             * @generated
487             */
488            public EAttribute getCustom_Location() {
489                    return (EAttribute)customEClass.getEStructuralFeatures().get(0);
490            }
491    
492            /**
493             * <!-- begin-user-doc -->
494             * <!-- end-user-doc -->
495             * @generated
496             */
497            public EClass getUSAddress() {
498                    return usAddressEClass;
499            }
500    
501            /**
502             * <!-- begin-user-doc -->
503             * <!-- end-user-doc -->
504             * @generated
505             */
506            public EAttribute getUSAddress_Recipient() {
507                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(0);
508            }
509    
510            /**
511             * <!-- begin-user-doc -->
512             * <!-- end-user-doc -->
513             * @generated
514             */
515            public EAttribute getUSAddress_Street1() {
516                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(1);
517            }
518    
519            /**
520             * <!-- begin-user-doc -->
521             * <!-- end-user-doc -->
522             * @generated
523             */
524            public EAttribute getUSAddress_Street2() {
525                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(2);
526            }
527    
528            /**
529             * <!-- begin-user-doc -->
530             * <!-- end-user-doc -->
531             * @generated
532             */
533            public EAttribute getUSAddress_City() {
534                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(3);
535            }
536    
537            /**
538             * <!-- begin-user-doc -->
539             * <!-- end-user-doc -->
540             * @generated
541             */
542            public EAttribute getUSAddress_State() {
543                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(4);
544            }
545    
546            /**
547             * <!-- begin-user-doc -->
548             * <!-- end-user-doc -->
549             * @generated
550             */
551            public EAttribute getUSAddress_Zip() {
552                    return (EAttribute)usAddressEClass.getEStructuralFeatures().get(5);
553            }
554    
555            /**
556             * <!-- begin-user-doc -->
557             * <!-- end-user-doc -->
558             * @generated
559             */
560            public EClass getOrganization() {
561                    return organizationEClass;
562            }
563    
564            /**
565             * <!-- begin-user-doc -->
566             * <!-- end-user-doc -->
567             * @generated
568             */
569            public EReference getOrganization_Children() {
570                    return (EReference)organizationEClass.getEStructuralFeatures().get(0);
571            }
572    
573            /**
574             * <!-- begin-user-doc -->
575             * <!-- end-user-doc -->
576             * @generated
577             */
578            public EReference getOrganization_ExternalChildren() {
579                    return (EReference)organizationEClass.getEStructuralFeatures().get(1);
580            }
581    
582            /**
583             * <!-- begin-user-doc -->
584             * <!-- end-user-doc -->
585             * @generated
586             */
587            public EAttribute getOrganization_OrganizationType() {
588                    return (EAttribute)organizationEClass.getEStructuralFeatures().get(2);
589            }
590    
591            /**
592             * <!-- begin-user-doc -->
593             * <!-- end-user-doc -->
594             * @generated
595             */
596            public EReference getOrganization_MatrixedChildren() {
597                    return (EReference)organizationEClass.getEStructuralFeatures().get(3);
598            }
599    
600            /**
601             * <!-- begin-user-doc -->
602             * <!-- end-user-doc -->
603             * @generated
604             */
605            public EClass getPerson() {
606                    return personEClass;
607            }
608    
609            /**
610             * <!-- begin-user-doc -->
611             * <!-- end-user-doc -->
612             * @generated
613             */
614            public EAttribute getPerson_Title() {
615                    return (EAttribute)personEClass.getEStructuralFeatures().get(0);
616            }
617    
618            /**
619             * <!-- begin-user-doc -->
620             * <!-- end-user-doc -->
621             * @generated
622             */
623            public EClass getTag() {
624                    return tagEClass;
625            }
626    
627            /**
628             * <!-- begin-user-doc -->
629             * <!-- end-user-doc -->
630             * @generated
631             */
632            public EAttribute getTag_Name() {
633                    return (EAttribute)tagEClass.getEStructuralFeatures().get(0);
634            }
635    
636            /**
637             * <!-- begin-user-doc -->
638             * <!-- end-user-doc -->
639             * @generated
640             */
641            public EAttribute getTag_Value() {
642                    return (EAttribute)tagEClass.getEStructuralFeatures().get(1);
643            }
644    
645            /**
646             * <!-- begin-user-doc -->
647             * <!-- end-user-doc -->
648             * @generated
649             */
650            public EAttribute getTag_Comment() {
651                    return (EAttribute)tagEClass.getEStructuralFeatures().get(2);
652            }
653    
654            /**
655             * <!-- begin-user-doc -->
656             * <!-- end-user-doc -->
657             * @generated
658             */
659            public EClass getRole() {
660                    return roleEClass;
661            }
662    
663            /**
664             * <!-- begin-user-doc -->
665             * <!-- end-user-doc -->
666             * @generated
667             */
668            public EReference getRole_Party() {
669                    return (EReference)roleEClass.getEStructuralFeatures().get(0);
670            }
671    
672            /**
673             * <!-- begin-user-doc -->
674             * <!-- end-user-doc -->
675             * @generated
676             */
677            public EAttribute getRole_Name() {
678                    return (EAttribute)roleEClass.getEStructuralFeatures().get(1);
679            }
680    
681            /**
682             * <!-- begin-user-doc -->
683             * <!-- end-user-doc -->
684             * @generated
685             */
686            public EReference getRole_Owner() {
687                    return (EReference)roleEClass.getEStructuralFeatures().get(2);
688            }
689    
690            /**
691             * <!-- begin-user-doc -->
692             * <!-- end-user-doc -->
693             * @generated
694             */
695            public EClass getURL() {
696                    return urlEClass;
697            }
698    
699            /**
700             * <!-- begin-user-doc -->
701             * <!-- end-user-doc -->
702             * @generated
703             */
704            public EAttribute getURL_Address() {
705                    return (EAttribute)urlEClass.getEStructuralFeatures().get(0);
706            }
707    
708            /**
709             * <!-- begin-user-doc -->
710             * <!-- end-user-doc -->
711             * @generated
712             */
713            public EClass getCommonObject() {
714                    return commonObjectEClass;
715            }
716    
717            /**
718             * <!-- begin-user-doc -->
719             * <!-- end-user-doc -->
720             * @generated
721             */
722            public EReference getCommonObject_Roles() {
723                    return (EReference)commonObjectEClass.getEStructuralFeatures().get(0);
724            }
725    
726            /**
727             * <!-- begin-user-doc -->
728             * <!-- end-user-doc -->
729             * @generated
730             */
731            public EClass getMatrixRelationship() {
732                    return matrixRelationshipEClass;
733            }
734    
735            /**
736             * <!-- begin-user-doc -->
737             * <!-- end-user-doc -->
738             * @generated
739             */
740            public EAttribute getMatrixRelationship_Name() {
741                    return (EAttribute)matrixRelationshipEClass.getEStructuralFeatures().get(0);
742            }
743    
744            /**
745             * <!-- begin-user-doc -->
746             * <!-- end-user-doc -->
747             * @generated
748             */
749            public EReference getMatrixRelationship_Target() {
750                    return (EReference)matrixRelationshipEClass.getEStructuralFeatures().get(1);
751            }
752    
753            /**
754             * <!-- begin-user-doc -->
755             * <!-- end-user-doc -->
756             * @generated
757             */
758            public PartyFactory getPartyFactory() {
759                    return (PartyFactory)getEFactoryInstance();
760            }
761    
762            /**
763             * <!-- begin-user-doc -->
764             * <!-- end-user-doc -->
765             * @generated
766             */
767            private boolean isCreated = false;
768    
769            /**
770             * Creates the meta-model objects for the package.  This method is
771             * guarded to have no affect on any invocation but its first.
772             * <!-- begin-user-doc -->
773             * <!-- end-user-doc -->
774             * @generated
775             */
776            public void createPackageContents() {
777                    if (isCreated) return;
778                    isCreated = true;
779    
780                    // Create classes and their features
781                    partyEClass = createEClass(PARTY);
782                    createEReference(partyEClass, PARTY__CONTACT_INFO);
783                    createEReference(partyEClass, PARTY__IDENTITY);
784                    createEReference(partyEClass, PARTY__PARENT);
785                    createEAttribute(partyEClass, PARTY__NAME);
786                    createEAttribute(partyEClass, PARTY__UID);
787    
788                    identityEClass = createEClass(IDENTITY);
789                    createEAttribute(identityEClass, IDENTITY__TYPE);
790                    createEAttribute(identityEClass, IDENTITY__VALUE);
791                    createEAttribute(identityEClass, IDENTITY__COMMENT);
792    
793                    taggedEClass = createEClass(TAGGED);
794                    createEReference(taggedEClass, TAGGED__TAGS);
795                    createEAttribute(taggedEClass, TAGGED__COMMENT);
796    
797                    dateEffectiveObjectEClass = createEClass(DATE_EFFECTIVE_OBJECT);
798                    createEAttribute(dateEffectiveObjectEClass, DATE_EFFECTIVE_OBJECT__START);
799                    createEAttribute(dateEffectiveObjectEClass, DATE_EFFECTIVE_OBJECT__END);
800    
801                    contactInfoEClass = createEClass(CONTACT_INFO);
802                    createEAttribute(contactInfoEClass, CONTACT_INFO__CATEGORY);
803                    createEReference(contactInfoEClass, CONTACT_INFO__OWNER);
804    
805                    phoneEClass = createEClass(PHONE);
806                    createEAttribute(phoneEClass, PHONE__COUNTRY_CODE);
807                    createEAttribute(phoneEClass, PHONE__AREA_CODE);
808                    createEAttribute(phoneEClass, PHONE__NUMBER);
809    
810                    webEClass = createEClass(WEB);
811    
812                    eMailEClass = createEClass(EMAIL);
813    
814                    addressEClass = createEClass(ADDRESS);
815                    createEAttribute(addressEClass, ADDRESS__COUNTRY);
816    
817                    customEClass = createEClass(CUSTOM);
818                    createEAttribute(customEClass, CUSTOM__LOCATION);
819    
820                    usAddressEClass = createEClass(US_ADDRESS);
821                    createEAttribute(usAddressEClass, US_ADDRESS__RECIPIENT);
822                    createEAttribute(usAddressEClass, US_ADDRESS__STREET1);
823                    createEAttribute(usAddressEClass, US_ADDRESS__STREET2);
824                    createEAttribute(usAddressEClass, US_ADDRESS__CITY);
825                    createEAttribute(usAddressEClass, US_ADDRESS__STATE);
826                    createEAttribute(usAddressEClass, US_ADDRESS__ZIP);
827    
828                    organizationEClass = createEClass(ORGANIZATION);
829                    createEReference(organizationEClass, ORGANIZATION__CHILDREN);
830                    createEReference(organizationEClass, ORGANIZATION__EXTERNAL_CHILDREN);
831                    createEAttribute(organizationEClass, ORGANIZATION__ORGANIZATION_TYPE);
832                    createEReference(organizationEClass, ORGANIZATION__MATRIXED_CHILDREN);
833    
834                    personEClass = createEClass(PERSON);
835                    createEAttribute(personEClass, PERSON__TITLE);
836    
837                    tagEClass = createEClass(TAG);
838                    createEAttribute(tagEClass, TAG__NAME);
839                    createEAttribute(tagEClass, TAG__VALUE);
840                    createEAttribute(tagEClass, TAG__COMMENT);
841    
842                    roleEClass = createEClass(ROLE);
843                    createEReference(roleEClass, ROLE__PARTY);
844                    createEAttribute(roleEClass, ROLE__NAME);
845                    createEReference(roleEClass, ROLE__OWNER);
846    
847                    urlEClass = createEClass(URL);
848                    createEAttribute(urlEClass, URL__ADDRESS);
849    
850                    commonObjectEClass = createEClass(COMMON_OBJECT);
851                    createEReference(commonObjectEClass, COMMON_OBJECT__ROLES);
852    
853                    matrixRelationshipEClass = createEClass(MATRIX_RELATIONSHIP);
854                    createEAttribute(matrixRelationshipEClass, MATRIX_RELATIONSHIP__NAME);
855                    createEReference(matrixRelationshipEClass, MATRIX_RELATIONSHIP__TARGET);
856            }
857    
858            /**
859             * <!-- begin-user-doc -->
860             * <!-- end-user-doc -->
861             * @generated
862             */
863            private boolean isInitialized = false;
864    
865            /**
866             * Complete the initialization of the package and its meta-model.  This
867             * method is guarded to have no affect on any invocation but its first.
868             * <!-- begin-user-doc -->
869             * <!-- end-user-doc -->
870             * @generated
871             */
872            public void initializePackageContents() {
873                    if (isInitialized) return;
874                    isInitialized = true;
875    
876                    // Initialize package
877                    setName(eNAME);
878                    setNsPrefix(eNS_PREFIX);
879                    setNsURI(eNS_URI);
880    
881                    // Create type parameters
882    
883                    // Set bounds for type parameters
884    
885                    // Add supertypes to classes
886                    partyEClass.getESuperTypes().add(this.getTagged());
887                    dateEffectiveObjectEClass.getESuperTypes().add(this.getTagged());
888                    contactInfoEClass.getESuperTypes().add(this.getDateEffectiveObject());
889                    phoneEClass.getESuperTypes().add(this.getContactInfo());
890                    webEClass.getESuperTypes().add(this.getURL());
891                    eMailEClass.getESuperTypes().add(this.getURL());
892                    addressEClass.getESuperTypes().add(this.getContactInfo());
893                    customEClass.getESuperTypes().add(this.getContactInfo());
894                    usAddressEClass.getESuperTypes().add(this.getAddress());
895                    organizationEClass.getESuperTypes().add(this.getParty());
896                    personEClass.getESuperTypes().add(this.getParty());
897                    roleEClass.getESuperTypes().add(this.getDateEffectiveObject());
898                    urlEClass.getESuperTypes().add(this.getContactInfo());
899                    matrixRelationshipEClass.getESuperTypes().add(this.getDateEffectiveObject());
900    
901                    // Initialize classes and features; add operations and parameters
902                    initEClass(partyEClass, Party.class, "Party", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
903                    initEReference(getParty_ContactInfo(), this.getContactInfo(), this.getContactInfo_Owner(), "contactInfo", null, 0, -1, Party.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
904                    initEReference(getParty_Identity(), this.getIdentity(), null, "identity", null, 0, -1, Party.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
905                    initEReference(getParty_Parent(), this.getOrganization(), this.getOrganization_Children(), "parent", null, 0, 1, Party.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
906                    initEAttribute(getParty_Name(), ecorePackage.getEString(), "name", null, 1, 1, Party.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
907                    initEAttribute(getParty_Uid(), ecorePackage.getEString(), "uid", null, 0, 1, Party.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
908    
909                    addEOperation(partyEClass, this.getParty(), "getPath", 0, -1, IS_UNIQUE, IS_ORDERED);
910    
911                    EOperation op = addEOperation(partyEClass, null, "setExternalParent", 0, 1, IS_UNIQUE, IS_ORDERED);
912                    addEParameter(op, this.getOrganization(), "externalParent", 0, 1, IS_UNIQUE, IS_ORDERED);
913    
914                    initEClass(identityEClass, Identity.class, "Identity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
915                    initEAttribute(getIdentity_Type(), ecorePackage.getEString(), "type", null, 1, 1, Identity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
916                    initEAttribute(getIdentity_Value(), ecorePackage.getEString(), "value", null, 1, 1, Identity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
917                    initEAttribute(getIdentity_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, Identity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
918    
919                    initEClass(taggedEClass, Tagged.class, "Tagged", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
920                    initEReference(getTagged_Tags(), this.getTag(), null, "tags", null, 0, -1, Tagged.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
921                    initEAttribute(getTagged_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, Tagged.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
922    
923                    initEClass(dateEffectiveObjectEClass, DateEffectiveObject.class, "DateEffectiveObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
924                    initEAttribute(getDateEffectiveObject_Start(), ecorePackage.getEDate(), "start", null, 0, 1, DateEffectiveObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
925                    initEAttribute(getDateEffectiveObject_End(), ecorePackage.getEDate(), "end", null, 0, 1, DateEffectiveObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
926    
927                    addEOperation(dateEffectiveObjectEClass, ecorePackage.getEBoolean(), "isEffectiveNow", 0, 1, IS_UNIQUE, IS_ORDERED);
928    
929                    op = addEOperation(dateEffectiveObjectEClass, ecorePackage.getEBoolean(), "isEffective", 0, 1, IS_UNIQUE, IS_ORDERED);
930                    addEParameter(op, ecorePackage.getEDate(), "date", 0, 1, IS_UNIQUE, IS_ORDERED);
931    
932                    initEClass(contactInfoEClass, ContactInfo.class, "ContactInfo", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
933                    initEAttribute(getContactInfo_Category(), ecorePackage.getEString(), "category", null, 0, 1, ContactInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
934                    initEReference(getContactInfo_Owner(), this.getParty(), this.getParty_ContactInfo(), "owner", null, 1, 1, ContactInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
935    
936                    initEClass(phoneEClass, Phone.class, "Phone", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
937                    initEAttribute(getPhone_CountryCode(), ecorePackage.getEString(), "countryCode", null, 0, 1, Phone.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
938                    initEAttribute(getPhone_AreaCode(), ecorePackage.getEInt(), "areaCode", null, 0, 1, Phone.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
939                    initEAttribute(getPhone_Number(), ecorePackage.getEString(), "number", null, 1, 1, Phone.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
940    
941                    initEClass(webEClass, Web.class, "Web", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
942    
943                    initEClass(eMailEClass, EMail.class, "EMail", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
944    
945                    initEClass(addressEClass, Address.class, "Address", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
946                    initEAttribute(getAddress_Country(), ecorePackage.getEString(), "country", null, 0, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
947    
948                    initEClass(customEClass, Custom.class, "Custom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
949                    initEAttribute(getCustom_Location(), ecorePackage.getEString(), "location", null, 1, 1, Custom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
950    
951                    initEClass(usAddressEClass, USAddress.class, "USAddress", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
952                    initEAttribute(getUSAddress_Recipient(), ecorePackage.getEString(), "recipient", null, 0, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
953                    initEAttribute(getUSAddress_Street1(), ecorePackage.getEString(), "street1", null, 1, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
954                    initEAttribute(getUSAddress_Street2(), ecorePackage.getEString(), "street2", null, 0, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
955                    initEAttribute(getUSAddress_City(), ecorePackage.getEString(), "city", null, 1, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
956                    initEAttribute(getUSAddress_State(), ecorePackage.getEString(), "state", null, 1, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
957                    initEAttribute(getUSAddress_Zip(), ecorePackage.getEString(), "zip", null, 1, 1, USAddress.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
958    
959                    initEClass(organizationEClass, Organization.class, "Organization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
960                    initEReference(getOrganization_Children(), this.getParty(), this.getParty_Parent(), "children", null, 0, -1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
961                    initEReference(getOrganization_ExternalChildren(), this.getParty(), null, "externalChildren", null, 0, -1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
962                    initEAttribute(getOrganization_OrganizationType(), ecorePackage.getEString(), "organizationType", null, 0, 1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
963                    initEReference(getOrganization_MatrixedChildren(), this.getMatrixRelationship(), null, "matrixedChildren", null, 0, -1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
964    
965                    initEClass(personEClass, Person.class, "Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
966                    initEAttribute(getPerson_Title(), ecorePackage.getEString(), "title", null, 0, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
967    
968                    initEClass(tagEClass, Tag.class, "Tag", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
969                    initEAttribute(getTag_Name(), ecorePackage.getEString(), "name", null, 1, 1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
970                    initEAttribute(getTag_Value(), ecorePackage.getEString(), "value", null, 1, -1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
971                    initEAttribute(getTag_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
972    
973                    initEClass(roleEClass, Role.class, "Role", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
974                    initEReference(getRole_Party(), this.getParty(), null, "party", null, 0, -1, Role.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
975                    initEAttribute(getRole_Name(), ecorePackage.getEString(), "name", null, 1, 1, Role.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
976                    initEReference(getRole_Owner(), this.getCommonObject(), this.getCommonObject_Roles(), "owner", null, 0, 1, Role.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
977    
978                    initEClass(urlEClass, com.hammurapi.party.URL.class, "URL", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
979                    initEAttribute(getURL_Address(), ecorePackage.getEString(), "address", null, 1, 1, com.hammurapi.party.URL.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
980    
981                    initEClass(commonObjectEClass, CommonObject.class, "CommonObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
982                    initEReference(getCommonObject_Roles(), this.getRole(), this.getRole_Owner(), "roles", null, 0, -1, CommonObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
983    
984                    initEClass(matrixRelationshipEClass, MatrixRelationship.class, "MatrixRelationship", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
985                    initEAttribute(getMatrixRelationship_Name(), ecorePackage.getEString(), "name", null, 0, 1, MatrixRelationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
986                    initEReference(getMatrixRelationship_Target(), this.getParty(), null, "target", null, 1, 1, MatrixRelationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
987    
988                    // Create resource
989                    createResource(eNS_URI);
990            }
991    
992    } //PartyPackageImpl