File Coverage

blib/lib/CaCORE/ApplicationService.pm
Criterion Covered Total %
statement 14 102 13.7
branch 0 18 0.0
condition n/a
subroutine 6 13 46.1
pod n/a
total 20 133 15.0


line stmt bran cond sub pod time code
1            
2            
3             ##########################################################################################
4             package CaCORE::ApplicationService;
5             ##########################################################################################
6            
7 1     1   146 BEGIN {
8 1     1   24005 use LWP::UserAgent;
  1         106986  
  1         40  
9 1     1   2263 use HTTP::Request::Common;
  1         2914  
  1         89  
10             }
11            
12             $VERSION = '3.2';
13            
14             # These are default values
15             my $default_proxy = "http://cabio.nci.nih.gov/cacore32/ws/caCOREService";
16            
17             # CPAN namespace mapping to Java package mapping
18             my %cpan2java;
19             $cpan2java{"CaCORE::Common::Provenance"} = "gov.nih.nci.common.provenance.domain.ws";
20             $cpan2java{"CaCORE::Common"} = "gov.nih.nci.common.domain.ws";
21             $cpan2java{"CaCORE::CaDSR::UMLProject"} = "gov.nih.nci.cadsr.umlproject.domain.ws";
22             $cpan2java{"CaCORE::CaDSR"} = "gov.nih.nci.cadsr.domain.ws";
23             $cpan2java{"CaCORE::CaBIO"} = "gov.nih.nci.cabio.domain.ws";
24             $cpan2java{"CaCORE::EVS"} = "gov.nih.nci.evs.domain.ws";
25            
26             # CPAN namespace mapping to webservice
27             my %cpan2ws;
28             $cpan2ws{"CaCORE::Common::Provenance"} = "urn:ws.domain.provenance.common.nci.nih.gov";
29             $cpan2ws{"CaCORE::Common"} = "urn:ws.domain.common.nci.nih.gov";
30             $cpan2ws{"CaCORE::CaDSR::UMLProject"} = "urn:ws.domain.umlproject.cadsr.nci.nih.gov";
31             $cpan2ws{"CaCORE::CaDSR"} = "urn:ws.domain.cadsr.nci.nih.gov";
32             $cpan2ws{"CaCORE::CaBIO"} = "urn:ws.domain.cabio.nci.nih.gov";
33             $cpan2ws{"CaCORE::EVS"} = "urn:ws.domain.evs.nci.nih.gov";
34            
35            
36             # instance()
37             # Module constructor. Creates an singleton ApplicationService instance
38             # if one doesn't already exist. The instance reference is stored in the
39             # _instance variable of the $class package.
40             #
41             # Returns a reference to the existing, or a newly created singleton
42             # object. If the _new_instance() method returns an undefined value
43             # then the constructer is deemed to have failed.
44             sub instance {
45 0     0     my $class = shift;
46            
47             # get a reference to the _instance variable in the $class package
48 1     1   17 no strict 'refs';
  1         3  
  1         1292  
49 0           my $instance = \${ "$class\::_instance" };
  0            
50            
51 0 0         defined $$instance
52             ? $$instance
53             : ($$instance = $class->_new_instance(@_));
54             }
55            
56             # _new_instance(...)
57             # Simple constructor
58             sub _new_instance {
59 0     0     my $class = shift;
60 0           my $self = {};
61 0           bless $self, $class;
62             # set the proxy, if not available, use default
63 0 0         if( $#_ >= 0 ){ $self->{proxy} = shift;}
  0            
64 0           else{ $self->{proxy} = $default_proxy; }
65 0           return $self;
66             }
67            
68             # construct a SOAP request to the caCORE server
69             sub queryObject {
70 0     0     my $self = shift;
71 0           my $pTgt = shift;
72 0           my $pSrc = shift;
73            
74 0           return $self->do_query("queryObject", $pTgt, $pSrc, "", "");
75             }
76            
77             # construct a SOAP request to the caCORE server
78             sub query {
79 0     0     my $self = shift;
80 0           my $pTgt = shift;
81 0           my $pSrc = shift;
82 0           my $start = shift;
83 0           my $size = shift;
84            
85 0           return $self->do_query("query", $pTgt, $pSrc, $start, $size);
86             }
87            
88             # construct a SOAP request to the caCORE server
89             sub do_query {
90 0     0     my $self = shift;
91 0           my $method = shift;
92 0           my $pTgt = shift;
93 0           my $pSrc = shift;
94 0           my $start = shift;
95 0           my $size = shift;
96            
97             # test value
98            
99 0           my $proxy = $self->{proxy};
100 0           my $uri='caCOREService';
101 0           my $action = "$uri/$method";
102            
103 0           my $userAgent = LWP::UserAgent->new(agent => 'PerlSOAP');
104            
105 0           my $msg_prefix = "";
106 0           my $msg_suffix = "";
107 0           my $api_body_prefix = "";
108            
109             # param 1: the navigational path
110             # translate the domain object to the Java fully qualified name
111 0           my @pathlets = split(",", $pTgt);
112 0           my $javapath = "";
113             # use these next 2 vars to contruct an instance of return object type, final target is first object in path
114 0           my $firstpkgname = "";
115 0           my $firstobjname = "";
116 0           foreach my $pathlet (@pathlets) {
117 0           $pathlet =~ s/ //g; # remove whitespace
118             # todo: add package name # not needed for now, require user to provide full name
119 0           my $objname = $pathlet;
120 0           $objname =~ s/^.*:://;
121 0           my $pkgname = $pathlet;
122 0           $pkgname =~ s/::${objname}//;
123 0 0         if( $javapath eq "" ){
124 0           $javapath .= $cpan2java{$pkgname} . "." . $objname ;
125             } else {
126 0           $javapath .= "," . $cpan2java{$pkgname} . "." . $objname ;
127             }
128 0 0         if( $firstpkgname eq "" ){ $firstpkgname = $pkgname; }
  0            
129 0 0         if( $firstobjname eq "" ){ $firstobjname = $objname; }
  0            
130             }
131            
132             #my $arg1_body = "gov.nih.nci.cabio.domain.ws.ChromosomeImpl";
133 0           my $arg1_body = $javapath;
134            
135 0           my $args = "";
136            
137 0 0         if ($start) {
138             # param 3: start inex
139 0           $args .= "$start";
140             }
141            
142 0 0         if ($size) {
143             # param 4: requested resultset size
144 0           $args .= "$size";
145             }
146            
147 0           my $api_body_suffix = "$args";
148            
149             # param 2 definition: the WSDL xml representation of the domain object
150 0           my $arg2_body;
151 0           my $idx = 0;
152 0           my $gbl = 1;
153 0           my %worklist;
154 0           ($arg2_body, $gbl, %worklist) = $pSrc->toWebserviceXML($arg2_body, $idx, $gbl, \%worklist);
155             # this should only apply to EVS objects
156 0           my @workkeys = keys(%worklist);
157 0           while( $#workkeys >= 0 ) {
158             # get next key from work list
159 0           $assigned_id = $workkeys[0];
160             # get next object from worklist
161 0           $obj = $worklist{$assigned_id};
162             # delete key/object from worklist
163 0           delete $worklist{$assigned_id};
164            
165 0           ($arg2_body, $gbl, %worklist) = $obj->toWebserviceXML($arg2_body, $assigned_id, $gbl, \%worklist);
166 0           @workkeys = keys(%worklist);
167             }
168            
169 0           my $message = $msg_prefix . $api_body_prefix . $arg1_body . $api_body_suffix . $arg2_body . $msg_suffix;
170             #print"Request:\n$message\n";
171            
172 0           my $response = $userAgent->request(POST $proxy,
173             Content_Type => 'text/xml',
174             SOAPAction => $action,
175             Content => $message);
176            
177             #print $response->as_string;
178 0 0         if( $response->is_success ){
179             # sometimes the server returns an empty body, check it
180 0 0         if( $response->content eq "" ) { return ();}
  0            
181            
182             # construct a object of target instance
183 0           my $fac = CaCORE::DomainObjectFac->instance;
184            
185 0           my $parser = new XML::DOM::Parser;
186 0           my $docnode = $parser->parse($response->content);
187 0           my $root = $docnode->getFirstChild->getFirstChild->getFirstChild->getFirstChild->getFirstChild;
188 0           my $typeNode = $root->getAttributeNode("xsi:type")->getValue;
189 0           my ($pkgref,$objname) = split /:/,$typeNode;
190            
191             # TODO: lookup pkgref and use that for the package
192            
193 0           my $doi = $fac->create($firstpkgname, $objname);
194 0           return $doi->fromWebserviceXML($response->content);
195             } else {
196 0           die $response->content;
197             }
198             }
199            
200            
201             ##########################################################################################
202             package CaCORE::DomainObjectI;
203             ##########################################################################################
204             # common interface for all domain objects
205            
206             # This allows declaration use CaCORE::Util::DomainObjectI ':all';
207             our %EXPORT_TAGS = ( 'all' => [ qw(
208            
209             ) ] );
210            
211             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
212            
213             our @EXPORT = qw(
214             toWebserviceXML
215             fromWebserviceXML
216             );
217            
218             @ISA = qw(Exporter);
219            
220             # create an xml string based on my attributes
221 0     0     sub toWebserviceXML() {
222             }
223            
224             # populate my own attributs given a webservice result
225 0     0     sub fromWebserviceXML() {
226             }
227            
228            
229             ##########################################################################################
230             package CaCORE::DomainObjectFac;
231             ##########################################################################################
232             # factory pattern for creating domain objects
233            
234             # This allows declaration use caCORE::util::DomainObjectI ':all';
235             our %EXPORT_TAGS = ( 'all' => [ qw(
236            
237             ) ] );
238            
239             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
240            
241             our @EXPORT = qw(
242             toWebserviceXML
243             fromWebserviceXML
244             );
245            
246 1     1   82 use CaCORE::ApplicationService;
  1         2  
  1         32  
247 1     1   835 use CaCORE::Common;
  0            
  0            
248             use CaCORE::Common::Provenance;
249             use CaCORE::CaBIO;
250             use CaCORE::CaDSR;
251             use CaCORE::EVS;
252            
253             @ISA = qw(Exporter);
254            
255             # instance()
256             # Module constructor. Creates an singleton ApplicationService instance
257             # if one doesn't already exist. The instance reference is stored in the
258             # _instance variable of the $class package.
259             #
260             # Returns a reference to the existing, or a newly created singleton
261             # object. If the _new_instance() method returns an undefined value
262             # then the constructer is deemed to have failed.
263             sub instance {
264             my $class = shift;
265            
266             # get a reference to the _instance variable in the $class package
267             no strict 'refs';
268             my $instance = \${ "$class\::_instance" };
269            
270             defined $$instance
271             ? $$instance
272             : ($$instance = $class->_new_instance(@_));
273             }
274            
275             # _new_instance(...)
276             # Simple constructor
277             sub _new_instance {
278             my $class = shift;
279             bless {}, $class;
280             }
281            
282             # create an instance of a DomainObjectI
283             # param 1: package name
284             # param 2: domain object name
285             # returns: an instance of the domain object
286             sub create {
287             my ($self, $pkgname, $objname) = @_;
288             my $newobj;
289             #print "pkg=".$pkgname." obj=".$objname."\n";
290            
291             if( 1 == 2 ) { }
292             ## begin DOMAIN OBJECT creator ##
293             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "HashSet") {
294             $newobj = new CaCORE::EVS::HashSet;
295             }
296             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "EdgeProperties") {
297             $newobj = new CaCORE::EVS::EdgeProperties;
298             }
299             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "TreeNode") {
300             $newobj = new CaCORE::EVS::TreeNode;
301             }
302             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Vocabulary") {
303             $newobj = new CaCORE::EVS::Vocabulary;
304             }
305             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "DescLogicConcept") {
306             $newobj = new CaCORE::EVS::DescLogicConcept;
307             }
308             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Silo") {
309             $newobj = new CaCORE::EVS::Silo;
310             }
311             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "SemanticType") {
312             $newobj = new CaCORE::EVS::SemanticType;
313             }
314             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "MetaThesaurusConcept") {
315             $newobj = new CaCORE::EVS::MetaThesaurusConcept;
316             }
317             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "AttributeSetDescriptor") {
318             $newobj = new CaCORE::EVS::AttributeSetDescriptor;
319             }
320             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Source") {
321             $newobj = new CaCORE::EVS::Source;
322             }
323             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Definition") {
324             $newobj = new CaCORE::EVS::Definition;
325             }
326             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Property") {
327             $newobj = new CaCORE::EVS::Property;
328             }
329             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "History") {
330             $newobj = new CaCORE::EVS::History;
331             }
332             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "HistoryRecord") {
333             $newobj = new CaCORE::EVS::HistoryRecord;
334             }
335             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Association") {
336             $newobj = new CaCORE::EVS::Association;
337             }
338             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "EditActionDate") {
339             $newobj = new CaCORE::EVS::EditActionDate;
340             }
341             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Role") {
342             $newobj = new CaCORE::EVS::Role;
343             }
344             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Atom") {
345             $newobj = new CaCORE::EVS::Atom;
346             }
347             elsif ($pkgname eq "CaCORE::EVS" && $objname eq "Qualifier") {
348             $newobj = new CaCORE::EVS::Qualifier;
349             }
350             elsif ($pkgname eq "CaCORE::Security" && $objname eq "SecurityToken") {
351             $newobj = new CaCORE::Security::SecurityToken;
352             }
353             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "SNP") {
354             $newobj = new CaCORE::CaBIO::SNP;
355             }
356             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Taxon") {
357             $newobj = new CaCORE::CaBIO::Taxon;
358             }
359             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Chromosome") {
360             $newobj = new CaCORE::CaBIO::Chromosome;
361             }
362             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Gene") {
363             $newobj = new CaCORE::CaBIO::Gene;
364             }
365             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Protocol") {
366             $newobj = new CaCORE::CaBIO::Protocol;
367             }
368             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Tissue") {
369             $newobj = new CaCORE::CaBIO::Tissue;
370             }
371             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Library") {
372             $newobj = new CaCORE::CaBIO::Library;
373             }
374             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Clone") {
375             $newobj = new CaCORE::CaBIO::Clone;
376             }
377             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "CloneRelativeLocation") {
378             $newobj = new CaCORE::CaBIO::CloneRelativeLocation;
379             }
380             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "NucleicAcidSequence") {
381             $newobj = new CaCORE::CaBIO::NucleicAcidSequence;
382             }
383             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Location") {
384             $newobj = new CaCORE::CaBIO::Location;
385             }
386             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "PhysicalLocation") {
387             $newobj = new CaCORE::CaBIO::PhysicalLocation;
388             }
389             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "DiseaseOntology") {
390             $newobj = new CaCORE::CaBIO::DiseaseOntology;
391             }
392             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GeneRelativeLocation") {
393             $newobj = new CaCORE::CaBIO::GeneRelativeLocation;
394             }
395             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "PopulationFrequency") {
396             $newobj = new CaCORE::CaBIO::PopulationFrequency;
397             }
398             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "HomologousAssociation") {
399             $newobj = new CaCORE::CaBIO::HomologousAssociation;
400             }
401             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Cytoband") {
402             $newobj = new CaCORE::CaBIO::Cytoband;
403             }
404             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GeneOntology") {
405             $newobj = new CaCORE::CaBIO::GeneOntology;
406             }
407             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "OrganOntology") {
408             $newobj = new CaCORE::CaBIO::OrganOntology;
409             }
410             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Histopathology") {
411             $newobj = new CaCORE::CaBIO::Histopathology;
412             }
413             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "ProteinSequence") {
414             $newobj = new CaCORE::CaBIO::ProteinSequence;
415             }
416             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Protein") {
417             $newobj = new CaCORE::CaBIO::Protein;
418             }
419             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "ProteinAlias") {
420             $newobj = new CaCORE::CaBIO::ProteinAlias;
421             }
422             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Target") {
423             $newobj = new CaCORE::CaBIO::Target;
424             }
425             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GeneAlias") {
426             $newobj = new CaCORE::CaBIO::GeneAlias;
427             }
428             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GenericArray") {
429             $newobj = new CaCORE::CaBIO::GenericArray;
430             }
431             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Vocabulary") {
432             $newobj = new CaCORE::CaBIO::Vocabulary;
433             }
434             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "OrganOntologyRelationship") {
435             $newobj = new CaCORE::CaBIO::OrganOntologyRelationship;
436             }
437             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Anomaly") {
438             $newobj = new CaCORE::CaBIO::Anomaly;
439             }
440             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Agent") {
441             $newobj = new CaCORE::CaBIO::Agent;
442             }
443             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "ClinicalTrialProtocol") {
444             $newobj = new CaCORE::CaBIO::ClinicalTrialProtocol;
445             }
446             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "ProtocolAssociation") {
447             $newobj = new CaCORE::CaBIO::ProtocolAssociation;
448             }
449             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GeneOntologyRelationship") {
450             $newobj = new CaCORE::CaBIO::GeneOntologyRelationship;
451             }
452             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "GenericReporter") {
453             $newobj = new CaCORE::CaBIO::GenericReporter;
454             }
455             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "Pathway") {
456             $newobj = new CaCORE::CaBIO::Pathway;
457             }
458             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "DiseaseOntologyRelationship") {
459             $newobj = new CaCORE::CaBIO::DiseaseOntologyRelationship;
460             }
461             elsif ($pkgname eq "CaCORE::CaBIO" && $objname eq "CytogeneticLocation") {
462             $newobj = new CaCORE::CaBIO::CytogeneticLocation;
463             }
464             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Context") {
465             $newobj = new CaCORE::CaDSR::Context;
466             }
467             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "AdministeredComponent") {
468             $newobj = new CaCORE::CaDSR::AdministeredComponent;
469             }
470             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DerivationType") {
471             $newobj = new CaCORE::CaDSR::DerivationType;
472             }
473             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ConceptDerivationRule") {
474             $newobj = new CaCORE::CaDSR::ConceptDerivationRule;
475             }
476             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ConceptualDomain") {
477             $newobj = new CaCORE::CaDSR::ConceptualDomain;
478             }
479             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ObjectClass") {
480             $newobj = new CaCORE::CaDSR::ObjectClass;
481             }
482             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Property") {
483             $newobj = new CaCORE::CaDSR::Property;
484             }
485             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DataElementConcept") {
486             $newobj = new CaCORE::CaDSR::DataElementConcept;
487             }
488             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Representation") {
489             $newobj = new CaCORE::CaDSR::Representation;
490             }
491             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ValueDomain") {
492             $newobj = new CaCORE::CaDSR::ValueDomain;
493             }
494             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "EnumeratedValueDomain") {
495             $newobj = new CaCORE::CaDSR::EnumeratedValueDomain;
496             }
497             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "NonenumeratedValueDomain") {
498             $newobj = new CaCORE::CaDSR::NonenumeratedValueDomain;
499             }
500             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DataElement") {
501             $newobj = new CaCORE::CaDSR::DataElement;
502             }
503             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DerivedDataElement") {
504             $newobj = new CaCORE::CaDSR::DerivedDataElement;
505             }
506             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "FormElement") {
507             $newobj = new CaCORE::CaDSR::FormElement;
508             }
509             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Form") {
510             $newobj = new CaCORE::CaDSR::Form;
511             }
512             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Module") {
513             $newobj = new CaCORE::CaDSR::Module;
514             }
515             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "QuestionCondition") {
516             $newobj = new CaCORE::CaDSR::QuestionCondition;
517             }
518             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Question") {
519             $newobj = new CaCORE::CaDSR::Question;
520             }
521             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Concept") {
522             $newobj = new CaCORE::CaDSR::Concept;
523             }
524             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ValueMeaning") {
525             $newobj = new CaCORE::CaDSR::ValueMeaning;
526             }
527             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "PermissibleValue") {
528             $newobj = new CaCORE::CaDSR::PermissibleValue;
529             }
530             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ValueDomainPermissibleValue") {
531             $newobj = new CaCORE::CaDSR::ValueDomainPermissibleValue;
532             }
533             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ValidValue") {
534             $newobj = new CaCORE::CaDSR::ValidValue;
535             }
536             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ClassificationScheme") {
537             $newobj = new CaCORE::CaDSR::ClassificationScheme;
538             }
539             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ClassificationSchemeItem") {
540             $newobj = new CaCORE::CaDSR::ClassificationSchemeItem;
541             }
542             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ClassSchemeClassSchemeItem") {
543             $newobj = new CaCORE::CaDSR::ClassSchemeClassSchemeItem;
544             }
545             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Definition") {
546             $newobj = new CaCORE::CaDSR::Definition;
547             }
548             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DefinitionClassSchemeItem") {
549             $newobj = new CaCORE::CaDSR::DefinitionClassSchemeItem;
550             }
551             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Designation") {
552             $newobj = new CaCORE::CaDSR::Designation;
553             }
554             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DesignationClassSchemeItem") {
555             $newobj = new CaCORE::CaDSR::DesignationClassSchemeItem;
556             }
557             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DataElementRelationship") {
558             $newobj = new CaCORE::CaDSR::DataElementRelationship;
559             }
560             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ClassificationSchemeRelationship") {
561             $newobj = new CaCORE::CaDSR::ClassificationSchemeRelationship;
562             }
563             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ClassificationSchemeItemRelationship") {
564             $newobj = new CaCORE::CaDSR::ClassificationSchemeItemRelationship;
565             }
566             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ComponentLevel") {
567             $newobj = new CaCORE::CaDSR::ComponentLevel;
568             }
569             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "AdministeredComponentClassSchemeItem") {
570             $newobj = new CaCORE::CaDSR::AdministeredComponentClassSchemeItem;
571             }
572             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Organization") {
573             $newobj = new CaCORE::CaDSR::Organization;
574             }
575             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ReferenceDocument") {
576             $newobj = new CaCORE::CaDSR::ReferenceDocument;
577             }
578             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Person") {
579             $newobj = new CaCORE::CaDSR::Person;
580             }
581             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "QuestionRepetition") {
582             $newobj = new CaCORE::CaDSR::QuestionRepetition;
583             }
584             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Instruction") {
585             $newobj = new CaCORE::CaDSR::Instruction;
586             }
587             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Function") {
588             $newobj = new CaCORE::CaDSR::Function;
589             }
590             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DataElementDerivation") {
591             $newobj = new CaCORE::CaDSR::DataElementDerivation;
592             }
593             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "AdministeredComponentContact") {
594             $newobj = new CaCORE::CaDSR::AdministeredComponentContact;
595             }
596             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ValueDomainRelationship") {
597             $newobj = new CaCORE::CaDSR::ValueDomainRelationship;
598             }
599             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "DataElementConceptRelationship") {
600             $newobj = new CaCORE::CaDSR::DataElementConceptRelationship;
601             }
602             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ConditionMessage") {
603             $newobj = new CaCORE::CaDSR::ConditionMessage;
604             }
605             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ContactCommunication") {
606             $newobj = new CaCORE::CaDSR::ContactCommunication;
607             }
608             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "QuestionConditionComponents") {
609             $newobj = new CaCORE::CaDSR::QuestionConditionComponents;
610             }
611             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ComponentConcept") {
612             $newobj = new CaCORE::CaDSR::ComponentConcept;
613             }
614             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "TriggerAction") {
615             $newobj = new CaCORE::CaDSR::TriggerAction;
616             }
617             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "ObjectClassRelationship") {
618             $newobj = new CaCORE::CaDSR::ObjectClassRelationship;
619             }
620             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Address") {
621             $newobj = new CaCORE::CaDSR::Address;
622             }
623             elsif ($pkgname eq "CaCORE::CaDSR" && $objname eq "Protocol") {
624             $newobj = new CaCORE::CaDSR::Protocol;
625             }
626             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "UMLGeneralizationMetadata") {
627             $newobj = new CaCORE::CaDSR::UMLProject::UMLGeneralizationMetadata;
628             }
629             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "Project") {
630             $newobj = new CaCORE::CaDSR::UMLProject::Project;
631             }
632             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "SubProject") {
633             $newobj = new CaCORE::CaDSR::UMLProject::SubProject;
634             }
635             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "UMLPackageMetadata") {
636             $newobj = new CaCORE::CaDSR::UMLProject::UMLPackageMetadata;
637             }
638             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "UMLClassMetadata") {
639             $newobj = new CaCORE::CaDSR::UMLProject::UMLClassMetadata;
640             }
641             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "AttributeTypeMetadata") {
642             $newobj = new CaCORE::CaDSR::UMLProject::AttributeTypeMetadata;
643             }
644             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "UMLAttributeMetadata") {
645             $newobj = new CaCORE::CaDSR::UMLProject::UMLAttributeMetadata;
646             }
647             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "UMLAssociationMetadata") {
648             $newobj = new CaCORE::CaDSR::UMLProject::UMLAssociationMetadata;
649             }
650             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "SemanticMetadata") {
651             $newobj = new CaCORE::CaDSR::UMLProject::SemanticMetadata;
652             }
653             elsif ($pkgname eq "CaCORE::CaDSR::UMLProject" && $objname eq "TypeEnumerationMetadata") {
654             $newobj = new CaCORE::CaDSR::UMLProject::TypeEnumerationMetadata;
655             }
656             elsif ($pkgname eq "CaCORE::Common" && $objname eq "DatabaseCrossReference") {
657             $newobj = new CaCORE::Common::DatabaseCrossReference;
658             }
659             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "Source") {
660             $newobj = new CaCORE::Common::Provenance::Source;
661             }
662             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "PublicationSource") {
663             $newobj = new CaCORE::Common::Provenance::PublicationSource;
664             }
665             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "SourceReference") {
666             $newobj = new CaCORE::Common::Provenance::SourceReference;
667             }
668             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "WebServicesSourceReference") {
669             $newobj = new CaCORE::Common::Provenance::WebServicesSourceReference;
670             }
671             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "URLSourceReference") {
672             $newobj = new CaCORE::Common::Provenance::URLSourceReference;
673             }
674             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "InternetSource") {
675             $newobj = new CaCORE::Common::Provenance::InternetSource;
676             }
677             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "ResearchInstitutionSource") {
678             $newobj = new CaCORE::Common::Provenance::ResearchInstitutionSource;
679             }
680             elsif ($pkgname eq "CaCORE::Common::Provenance" && $objname eq "Provenance") {
681             $newobj = new CaCORE::Common::Provenance::Provenance;
682             }
683             ## end DOMAIN OBJECT creator ##
684            
685             return $newobj;
686             }
687            
688             1;
689            
690             __END__