|
From: David F. <dw...@la...> - 2004-08-05 18:28:20
|
The implementation of query interfaces in PidServer and COAS isn't that tie=
d to a specific persistence implemention. It only uses the interfaces prov=
ided by the DatabaseMgr. Using the COAS information model would be a good=
idea. I've removed some of the CORBA dependencies, but haven't taken on t=
he larger task of using the conceptual model. A potentially big advantage =
of using the model is the inheritance that is present in the model but is n=
ot reflected in the COAS IDL. =0D
=0D
=0D
Dave=0D
------------Original Message------------=0D
From: Joncheng Kuo <ck...@sy...>=0D
To: "David Forslund" <dw...@la...>=0D
Cc: ope...@li...=0D
Date: Thu, Aug-5-2004 9:42 AM=0D
Subject: Re: [OpenEMed-developer] Re: Your contributions=0D
David Forslund wrote:=0D
=0D
Don't worry too much about it, but people have been asking for a Web Servic=
es interface to OpenEMed. One way I have begun accommodating that is to t=
reat the CORBA layer has a translation from simple Java rather than having =
CORBA embedded too deeply in the code. This way it is fairly easy to expo=
se the Java code to Web Services. The CORBA layer could be translated to =
Web Services, too, but this is somewhat less efficient.=0D
OpenEMed has a persistent layer (gov.lanl.Database) that is indepedent from=
specific persistent storage. However, the implementation of query interfac=
es in PidServer and COAS is somewhat tied into the specific presistent obje=
ct implementation. On the other hand, the non-persistent object returned by=
PersistentObject.toObject() is basically tied into CORBA specific data str=
ucture (e.g., ObservationDataStruct) or interfaces (e.g., IdentityCore). A =
better approach will be to create an interface (or framework of interfaces)=
that is based the conceptual model of the non-persistent object such as th=
e COAS Information Model described in COAS Chapter 2.=0D
=0D
Joncheng=0D
=0D
=0D
=0D
Dave=0D
=0D
=0D
Joncheng=0D
=0D
Thanks,=0D
=0D
Dave=0D
=0D
=0D
------------Original Message------------=0D
From: Joncheng Kuo <ck...@sy...>=0D
To: "David Forslund" <dw...@la...>=0D
Cc: ope...@li...=0D
Date: Wed, Aug-4-2004 9:29 PM=0D
Subject: [OpenEMed-developer] Re: Your contributions=0D
=0D
David Forslund wrote:=0D
=0D
=0D
it might be a good idea if you pass by me the structure that you are =0D
=0D
going to submit, so I can make sure that it fits it with the overall =0D
design (that might not be that clear).=0D
=0D
I will. I've been thinking about the design and changes needed for a =0D
few =0D
days. Here are some thoughts that I'm considering.=0D
=0D
1. Create an interface called "PersistentObservationAccess" (see the =0D
attached file).=0D
This interface is neutral to specific database schema. It is basically =0D
the replacement for the retrieveObservations() method in =0D
QueryAccessImpl. In this way, QueryAccessImpl will be independent from =0D
any particular database schema. We can configure the actual class =0D
implementing this interface depending on any specific database =0D
schema/structure.=0D
=0D
2. Create a "remote" package under gov.lanl.COAS and implement =0D
interfaces related to ObservationRemote such as ObservedSubject, =0D
ObservationRemoteIterator, etc. in this package. The BrowseAccessImpl =0D
class will be still under gov.lanl.COAS, but it'll use classes =0D
implemented in this "remote" package.=0D
=0D
Besides, I found that the done() method is not adequately implemented. =0D
We have to deactivate objects like ObservationDataIterator from their =0D
POA or they never get removed. Both COAS and PIDS will need to use this =
=0D
=0D
deactivate code.=0D
=0D
Joncheng=0D
=0D
=0D
Thanks,=0D
=0D
Dave=0D
=0D
=0D
=0D
=0D
=0D
=0D
=0D
=0D
// PersistentObservationAccess.java=0D
=0D
/**=0D
* ***********************************=0D
* Copyright Notice=0D
* Copyright (c) 1999, 2000, 2001, 2002 Regents of the University of =0D
California. All rights reserved.=0D
*=0D
* DISCLAIMER=0D
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' =0D
AND ANY EXPRESS=0D
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED =0D
WARRANTIES OF=0D
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. =
=0D
IN NO EVENT=0D
* SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, =0D
INDIRECT, INCIDENTAL,=0D
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT =0D
LIMITED TO,=0D
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR =0D
PROFITS; OR=0D
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF =0D
LIABILITY, WHETHER IN=0D
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR =0D
OTHERWISE) ARISING IN=0D
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE =0D
POSSIBILITY OF SUCH=0D
* DAMAGE.=0D
* ************************************=0D
*/=0D
package gov.lanl.COAS;=0D
=0D
import org.omg.CORBA.Any;=0D
import org.omg.DsObservationAccess.*;=0D
import org.omg.PersonIdService.QualifiedPersonId;=0D
=0D
import java.util.ArrayList;=0D
=0D
/**=0D
* This interface specifies the methods for accessing the persistent =0D
storage=0D
* of observations. It provides an interface that is indepedant from =0D
actual=0D
* database schema for storing observations.=0D
*/=0D
public interface PersistentObservationAccess=0D
{=0D
/**=0D
* Initialize this observation access object.=0D
*/=0D
public void init(=0D
gov.lanl.Database.DatabaseMgr dbMgr,=0D
gov.lanl.Database.PersistentObjectFactory persObjFact,=0D
gov.lanl.Database.CodeMapper codeMapper,=0D
gov.lanl.COAS.PolicyMgr policyMgr);=0D
=0D
/**=0D
* Retrieve one observation with its observation ID.=0D
* @param observation_id the observation ID=0D
* @return the observation that matches the given observation ID.=0D
* @exception InvalidOids if the observation cannot be found.=0D
*/=0D
public PersistentCOAS retrieveObservation(=0D
ObservationId observation_id=0D
) throws=0D
InvalidOids;=0D
=0D
/**=0D
* Count observations based on the specified policy.=0D
*=0D
* @param who=0D
* @param what=0D
* @param when=0D
* @param qualifiers=0D
* @param policy=0D
*=0D
* @return the number of observations satisfying the specified =0D
policy=0D
*/=0D
public int countObservationsWithPolicy(=0D
QualifiedPersonId[] who, String[] what,=0D
TimeSpan when, Any[] qualifiers,=0D
NameValuePair[] policy=0D
) throws=0D
InvalidIds, DuplicateIds, InvalidCodes, DuplicateCodes,=0D
InvalidTimeSpan, InvalidQualifiers, DuplicateQualifiers,=0D
InvalidPolicies, DuplicatePolicies;=0D
=0D
/**=0D
* Retrieve observations based on the specified policy.=0D
*=0D
* @param who=0D
* @param what=0D
* @param when=0D
* @param qualifiers=0D
* @param policy=0D
*=0D
* @return a vector of objects implementing the {@link =0D
PersistentCOAS}=0D
* interface.=0D
*/=0D
public ArrayList retrieveObservationsWithPolicy(=0D
QualifiedPersonId[] who, String[] what,=0D
TimeSpan when, Any[] qualifiers,=0D
NameValuePair[] policy);=0D
=0D
}=0D
=0D
=0D
=0D
=0D
=0D
=0D
=0D
-------------------------------------------------------=0D
This SF.Net email is sponsored by OSTG. Have you noticed the changes on=0D
Linux.com, ITManagersJournal and NewsForge in the past few weeks? Now,=0D
one more big change to announce. We are now OSTG- Open Source Technology=
=0D
Group. Come see the changes on the new OSTG site. www.ostg.com=0D
_______________________________________________=0D
OpenMed-developer mailing list=0D
Ope...@li...=0D
https://lists.sourceforge.net/lists/listinfo/openmed-developer=0D
=0D
=0D
=0D
=
|