[GME-commit]
GMESRC/GME/Mga MgaProject.cpp,1.54,1.55 MgaProject.h,1.25,1.26
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Tue Jul 20 12:01:42 CDT 2004
Update of /var/lib/gme/GMESRC/GME/Mga
In directory braindrain:/tmp/cvs-serv9303/GME/Mga
Modified Files:
MgaProject.cpp MgaProject.h
Log Message:
Version based paradigm registration
CVS User: volgy
Index: MgaProject.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Mga/MgaProject.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -C2 -d -r1.54 -r1.55
*** MgaProject.cpp 20 Jul 2004 10:48:30 -0000 1.54
--- MgaProject.cpp 20 Jul 2004 16:01:39 -0000 1.55
***************
*** 89,92 ****
--- 89,93 ----
// check if meta is valid
CoreObj dataroot, rootfolder;
+ CComBSTR parversion;
// set values in
***************
*** 95,98 ****
--- 96,101 ----
dataroot[ATTRID_PARADIGM] = paradigmname;
dataroot[ATTRID_MGAVERSION] = mgaversion;
+ COMTHROW(metapr->get_Version(&parversion));
+ dataroot[ATTRID_PARVERSION] = parversion;
dataroot[ATTRID_NAME] = rootname;
if( guid.vt != (VT_UI1 | VT_ARRAY) || GetArrayLength(guid) != sizeof(GUID) )
***************
*** 145,148 ****
--- 148,164 ----
}
+
+ STDMETHODIMP CMgaProject::OpenParadigm(BSTR s, BSTR ver) {
+ COMTRY {
+ CComVariant vguid;
+ {
+ CComPtr<IMgaRegistrar> mgareg;
+ COMTHROW(mgareg.CoCreateInstance(OLESTR("MGA.MgaRegistrar")));
+ COMTHROW(EDEF(mgareg->GUIDFromVersion(s, ver, &vguid, REGACCESS_PRIORITY), E_MGA_PARADIGM_NOTREG));
+ }
+ COMTHROW(OpenParadigm(s,&vguid));
+ } COMCATCH(;);
+ }
+
STDMETHODIMP CMgaProject::CreateEx(BSTR projectname, BSTR paradigmname, VARIANT paradigmGUID) {
COMTRY {
***************
*** 212,215 ****
--- 228,232 ----
CComBSTR s;
CComVariant pGUID;
+ CComBSTR ver;
CComPtr<ICoreMetaProject> genericproject;
CreateCoreMetaProject(genericproject);
***************
*** 234,237 ****
--- 251,255 ----
pGUID=CComVariant(dataroot[ATTRID_PARGUID]);
+ ver = dataroot[ATTRID_PARVERSION];
COMTHROW(lm->Flush());
COMTHROW(CommitTransaction());
***************
*** 246,257 ****
if(paradigmname) {
s = paradigmname;
}
if(paradigmGUID.vt != VT_EMPTY) {
if(CComVariant(true) == paradigmGUID) pGUID = NULLVARIANT;
else pGUID = paradigmGUID;
}
if(s.Length()) {
! COMTHROW(OpenParadigm(s, &pGUID));
bool guidchanged = false;
if(guidcmp(soldguid, pGUID)) {
--- 264,285 ----
if(paradigmname) {
+ ver.Empty();
s = paradigmname;
}
if(paradigmGUID.vt != VT_EMPTY) {
+ ver.Empty();
if(CComVariant(true) == paradigmGUID) pGUID = NULLVARIANT;
else pGUID = paradigmGUID;
}
if(s.Length()) {
! if (ver.Length()) {
! // Version string has precedence
! COMTHROW(OpenParadigm(s,ver));
! COMTHROW(metapr->get_GUID(&pGUID));
! }
! else {
! COMTHROW(OpenParadigm(s,&pGUID));
! COMTHROW(metapr->get_Version(&ver));
! }
bool guidchanged = false;
if(guidcmp(soldguid, pGUID)) {
***************
*** 277,280 ****
--- 305,309 ----
dataroot[ATTRID_PARADIGM] = s;
dataroot[ATTRID_PARGUID] = pGUID;
+ dataroot[ATTRID_PARVERSION] = ver;
COMTHROW(CommitTransaction());
opened = CHANGED;
***************
*** 319,322 ****
--- 348,352 ----
CComBSTR s;
CComVariant pGUID;
+ CComBSTR ver;
CComPtr<ICoreMetaProject> genericproject;
CreateCoreMetaProject(genericproject);
***************
*** 340,343 ****
--- 370,374 ----
pGUID=CComVariant(dataroot[ATTRID_PARGUID]);
+ ver=dataroot[ATTRID_PARVERSION];
COMTHROW(lm->Flush());
COMTHROW(CommitTransaction());
***************
*** 349,355 ****
if(s.Length()) {
! COMTHROW(OpenParadigm(s,&pGUID));
}
else COMTHROW(E_MGA_MODULE_INCOMPATIBILITY);
COMTHROW(RegisterActiveObject((IMgaProject *)this,CLSID_MgaProject,ACTIVEOBJECT_STRONG,&rot));
StartAutoAddOns();
--- 380,410 ----
if(s.Length()) {
! if (ver.Length()) {
! // Version string has precedence
! COMTHROW(OpenParadigm(s,ver));
! }
! else {
! COMTHROW(OpenParadigm(s,&pGUID));
! }
}
else COMTHROW(E_MGA_MODULE_INCOMPATIBILITY);
+
+ CComVariant nGUID;
+ COMTHROW(metapr->get_GUID(&nGUID));
+ if(guidcmp(pGUID, nGUID) && (*ro_mode == VARIANT_FALSE)) {
+ COMTHROW(BeginTransaction(lm, TRANSACTION_GENERAL));
+ try {
+ CoreObj dataroot;
+ COMTHROW(dataproject->get_RootObject(&dataroot.ComPtr()));
+ dataroot[ATTRID_PARGUID] = nGUID;
+ COMTHROW(CommitTransaction());
+ opened = CHANGED;
+ guidstat = DIRTY;
+ } catch(hresult_exception &e) {
+ lm->Flush();
+ AbortTransaction();
+ throw e;
+ }
+ }
COMTHROW(RegisterActiveObject((IMgaProject *)this,CLSID_MgaProject,ACTIVEOBJECT_STRONG,&rot));
StartAutoAddOns();
***************
*** 379,382 ****
--- 434,438 ----
STDMETHODIMP CMgaProject::QueryProjectInfo(BSTR projectname, long *mgaversion,
BSTR *paradigmname,
+ BSTR *parversion,
VARIANT *paradigmGUID,
VARIANT_BOOL *ro_mode)
***************
*** 387,390 ****
--- 443,447 ----
CHECK_OUTPAR(mgaversion);
CHECK_OUTSTRPAR(paradigmname);
+ CHECK_OUTSTRPAR(parversion);
CHECK_OUTPAR(paradigmGUID);
CHECK_OUTPAR(ro_mode);
***************
*** 406,409 ****
--- 463,467 ----
COMTHROW(dp->get_RootObject(&dataroot.ComPtr()));
*paradigmname = CComBSTR(dataroot[ATTRID_PARADIGM]).Detach();
+ *parversion = CComBSTR(dataroot[ATTRID_PARVERSION]).Detach();
CComVariant(dataroot[ATTRID_PARGUID]).Detach(paradigmGUID);
*mgaversion = dataroot[ATTRID_MGAVERSION];
Index: MgaProject.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Mga/MgaProject.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** MgaProject.h 19 Jul 2004 08:42:30 -0000 1.25
--- MgaProject.h 20 Jul 2004 16:01:39 -0000 1.26
***************
*** 70,73 ****
--- 70,74 ----
STDMETHOD(OpenParadigm)(BSTR s, VARIANT *pGUID);
+ STDMETHOD(OpenParadigm)(BSTR s, BSTR ver);
STDMETHOD(Create)(BSTR projectname, BSTR paradigmname) { return CreateEx(projectname, paradigmname, NULLVARIANT); }
STDMETHOD(CreateEx)(BSTR projectname, BSTR paradigmname, VARIANT parguid);
***************
*** 147,150 ****
--- 148,152 ----
STDMETHOD(QueryProjectInfo)(BSTR projectname, long *mgaversion,
BSTR *paradigmname,
+ BSTR *parversion,
VARIANT *paradigmGUID,
VARIANT_BOOL *ro_mode);
More information about the GME-commit
mailing list