2025-11-28 00:35:46 +09:00

255 lines
6.0 KiB
C++

/* **************************************************************************
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
File: AzAppGroup.cpp
Abstract:
Routines performing the migration for the AppGroup object
History:
***************************************************************************/
#include "AzAppGroup.h"
CAzAppGroup::CAzAppGroup(void):CAzBase<IAzApplicationGroup>()
{
}
CAzAppGroup::~CAzAppGroup(void)
{
}
CAzAppGroup::CAzAppGroup(IAzApplicationGroup *pNative,bool pisNew):CAzBase<IAzApplicationGroup>(pNative,pisNew){
}
/*++
Routine description:
This method copies properties from the source app group to *this* app
Group which are specific to version 1.2
Arguments: Source App Group
Return Value:
Returns success, appropriate failure value of the get/set methods done within
this method
--*/
HRESULT CAzAppGroup::CopyVersion2Constructs(CAzAppGroup &srcAppGroup) {
static unsigned int rgProperties[]={AZ_PROP_GROUP_BIZRULE,AZ_PROP_GROUP_BIZRULE_LANGUAGE,AZ_PROP_GROUP_BIZRULE_IMPORTED_PATH};
CComVariant cVVar;
HRESULT hr=S_OK;
if (!CAzGlobalOptions::m_bVersionTwo)
goto lDone;
for (long i=0;i<3;i++) {
hr=srcAppGroup.m_native->GetProperty(rgProperties[i],CComVariant(), &cVVar);
CAzLogging::Log(hr,_TEXT("Getting IAzApplicationGroup Property ID:"),COLE2T(srcAppGroup.getName()),rgProperties[i]);
if (SUCCEEDED(hr) && (SysStringByteLen(cVVar.bstrVal))!=0) {
hr=m_native->SetProperty(rgProperties[i],cVVar,CComVariant());
CAzLogging::Log(hr,_TEXT("Setting IAzApplicationGroup Property ID:"),COLE2T(getName()),rgProperties[i]);
cVVar.Clear();
}
}
lDone:
return hr;
}
/*++
Routine description:
This method copies properties from the source app group to *this* app
Group
Arguments: Source App Group
Return Value:
Returns success, appropriate failure value of the get/set methods done within
this method
--*/
HRESULT CAzAppGroup::Copy(CAzAppGroup &srcAppGroup) {
CAzLogging::Entering(_TEXT("Copy"));
CComBSTR bstrData;
CComVariant cVVar;
LONG lType;
HRESULT hr=srcAppGroup.m_native->get_Description(&bstrData);
CAzLogging::Log(hr,_TEXT("Getting Description for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=m_native->put_Description(bstrData);
CAzLogging::Log(hr,_TEXT("Setting Description for App Group"),COLE2T(getName()));
bstrData.Empty();
}
hr=srcAppGroup.m_native->get_Type(&lType);
CAzLogging::Log(hr,_TEXT("Getting Type for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=m_native->put_Type(lType);
CAzLogging::Log(hr,_TEXT("Setting Type for App Group"),COLE2T(getName()));
}
hr=srcAppGroup.m_native->get_LdapQuery(&bstrData);
CAzLogging::Log(hr,_TEXT("Getting LDAPQuery for App Group"),COLE2T(srcAppGroup.getName()));
// THe length check is reqd below as adding an empty string
// LDAP Query returns an error
if (SUCCEEDED(hr) && bstrData.Length()!=0) {
hr=m_native->put_LdapQuery(bstrData);
CAzLogging::Log(hr,_TEXT("Setting LDAPQuery for App Group"),COLE2T(getName()));
bstrData.Empty();
}
if (CAzGlobalOptions::m_bVersionTwo) {
hr = CopyVersion2Constructs(srcAppGroup);
CAzLogging::Log(hr,_TEXT("Copying bizrule properties for App Group"),COLE2T(srcAppGroup.getName()));
}
if (!CAzGlobalOptions::m_bIgnoreMembers) {
hr=srcAppGroup.m_native->get_Members(&cVVar);
CAzLogging::Log(hr,_TEXT("Getting Members for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=InitializeUsingSafeArray(cVVar,&IAzApplicationGroup::AddMember);
CAzLogging::Log(hr,_TEXT("Setting Members for App Group"),COLE2T(getName()));
cVVar.Clear();
}
hr=srcAppGroup.m_native->get_NonMembers(&cVVar);
CAzLogging::Log(hr,_TEXT("Getting Non Members for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=InitializeUsingSafeArray(cVVar,&IAzApplicationGroup::AddNonMember );
CAzLogging::Log(hr,_TEXT("Setting Non Members for App Group"),COLE2T(getName()));
cVVar.Clear();
}
}
hr=m_native->Submit(0,CComVariant());
CAzLogging::Log(hr,_TEXT("Submitting App Group"),COLE2T(getName()));
CAzLogging::Exiting(_TEXT("Copy"));
return hr;
}
/*++
Routine description:
This method copies links found in the source app group to *this* app
Group
Arguments: Source App Group
Return Value:
Returns success, appropriate failure value of the get/set methods done within
this method
--*/
HRESULT CAzAppGroup::CopyLinks(CAzAppGroup &srcAppGroup) {
CAzLogging::Entering(_TEXT("CopyLinks"));
CComVariant cVVar;
HRESULT hr;
hr=srcAppGroup.m_native->get_AppMembers(&cVVar);
CAzLogging::Log(hr,_TEXT("Getting App Members for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=InitializeUsingSafeArray(cVVar,&IAzApplicationGroup::AddAppMember );
CAzLogging::Log(hr,_TEXT("Setting App Members for App Group"),COLE2T(getName()));
cVVar.Clear();
}
hr=srcAppGroup.m_native->get_AppNonMembers(&cVVar);
CAzLogging::Log(hr,_TEXT("Getting App Non Members for App Group"),COLE2T(srcAppGroup.getName()));
if (SUCCEEDED(hr)) {
hr=InitializeUsingSafeArray(cVVar,&IAzApplicationGroup::AddAppNonMember );
CAzLogging::Log(hr,_TEXT("Setting App Non Members for App Group"),COLE2T(getName()));
cVVar.Clear();
}
hr=m_native->Submit(0,CComVariant());
CAzLogging::Log(hr,_TEXT("Submitting for App Group"),COLE2T(getName()));
CAzLogging::Exiting(_TEXT("CopyLinks"));
return hr;
}