You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.2 KiB
89 lines
3.2 KiB
//Copyright 2020 Siemens Digital Industries Software
|
|
//==================================================
|
|
//Copyright $2015.
|
|
//Siemens Product Lifecycle Management Software Inc.
|
|
//All Rights Reserved.
|
|
//==================================================
|
|
//Copyright 2020 Siemens Digital Industries Software
|
|
|
|
/**
|
|
@file
|
|
|
|
This file contains the declaration for the ImpliedEffectivityCalc
|
|
|
|
*/
|
|
|
|
#ifndef TEAMCENTER_CFM_IMPLIEDEFFECTIVITYCALC
|
|
#define TEAMCENTER_CFM_IMPLIEDEFFECTIVITYCALC
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <cfm/libcfm_exports.h>
|
|
|
|
/**
|
|
@brief A convenient C++ class to calculate implied effectivity of item revisions.
|
|
|
|
<br>This is required if the caller wish to calculate implied effectivity of item revisions.
|
|
|
|
|
|
Use as follows :
|
|
try catch is required as it throw the IFail exception.
|
|
@code
|
|
try
|
|
{
|
|
vector< string > effecs;
|
|
ImpliedEffectivityCalc::getImpliedEffectivity( revRule, items, effecs);
|
|
}
|
|
catch( const IFail& ex )
|
|
{
|
|
|
|
}
|
|
|
|
|
|
@endcode
|
|
*/
|
|
|
|
namespace Teamcenter
|
|
{
|
|
class CFM_API ImpliedEffectivityCalc
|
|
{
|
|
public:
|
|
/**
|
|
Calculates the Implied Effectivity of the each input Item Revision.
|
|
<br/>To do so, it retrieves the Effectivity from the Release Status (Has Status, Any Status) objects of each Item Revision.
|
|
@throws IFail exception with following errors.
|
|
<ul>
|
|
<li>#CFM_rev_rule_not_supported if the specified Revision Rule does not have "Has Status" or "Any Status" clause.
|
|
<li>#PROP_invalid_object if an invalid object instance is used in conjunction with the property.
|
|
</ul>
|
|
*/
|
|
static void getImpliedEffectivity(
|
|
tag_t revRule, /**< (I) Revison Rule based on which the Effectivities are to be calculated */
|
|
const std::vector<tag_t>& itemRevs, /**< (I) Item Revisions for which the Effectivities needs to be calculated */
|
|
std::vector< std::string >& effectivities /**< (O) Array of Effectivities for the Item Revision */
|
|
);
|
|
private:
|
|
|
|
/**
|
|
Creates pair of item revision and release status object, pairs belong to one item are put into one vector.
|
|
@throws IFail exception with following errors.
|
|
<ul>
|
|
<li>#CFM_rev_rule_not_supported if the specified Revision Rule does not have "Has Status" or "Any Status" clause.
|
|
<li>#PROP_invalid_object if an invalid object instance is used in conjunction with the property.
|
|
</ul>
|
|
*/
|
|
static void populateStatusWithRevision(
|
|
tag_t revisionRule, /**< (I) Revison Rule based on which effectivity will be calculated */
|
|
const std::vector<tag_t>& items, /**< (I) Array of Items */
|
|
std::vector< std::vector< std::pair< tag_t, tag_t > > >& revStats /**< (O) This will be populated by this function. Each vector will contain pairs (item revision - release status) belong to one item */
|
|
);
|
|
|
|
};
|
|
}
|
|
|
|
|
|
#include <cfm/libcfm_undef.h>
|
|
#endif
|
|
|