|
From: David F. <dw...@la...> - 2004-08-05 22:01:33
|
I'm interested in what you did to deal with existing database schema. This=
is what Gerrit had to do with the "pass thru" COAS implementation. I thin=
k it could be improved along the lines you describe.=0D
=0D
Dave=0D
=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 1:05 PM=0D
Subject: Re: [OpenEMed-developer] Re: Your contributions=0D
David Forslund wrote:=0D
=0D
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.=0D
I know, but several issues came up when I tried to reuse the OpenEMed imple=
mentation for some existing database schema. For example, the making of Sea=
rchFilter is schema specific because you have to refer to the column names.=
An other example is about traits. Traits are stored in a seperate table in=
OpenEMed but are stored as columns of the Identity table in our case. Thus=
, the access of traits has to be replaced too.=0D
=0D
I'm not saying that we always want general implementations, but there seems=
a way to create a persistent access layer based on the conceptual model of=
observations and identities/traits and implement this layer using the data=
base layer of OpenEMed.=0D
=0D
=0D
A potentially big advantage of using the model is the inheritance that is p=
resent in the model but is not reflected in the COAS IDL. =0D
=0D
That's right.=0D
=0D
Cheers,=0D
Joncheng=0D
=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
=
|