Creating an Application to Load Your Meta Data Model - Teradata Meta Data Services

Teradata Meta Data Services Programmer Guide

Product
Teradata Meta Data Services
Release Number
15.00
Language
English (United States)
Last Update
2018-09-28
Product Category
Teradata Tools and Utilities

Creating an Application to Load Your Meta Data Model

This section describes example code that shows you how you can create an application to load your meta data model into the MDS repository.

In this example each Create call is treated as a separate statement.

Installed in the sample folder is an example file which shows how all model data can be coded in an array and a generic program which loops through the array to use Create to create the model, class, property and relationship descriptions.

HRESULT CreateAutoWorldModel()
{
	HRESULT result;
	CMetaAIM model;
	CMetaClassDesc *AutoCorpClass = NULL;
	CMetaClassDesc *AutoDevisionClass = NULL;
	CMetaClassDesc *AutoClass = NULL;
	CMetaClassDesc *AutoExClass = NULL;
	CMetaClassDesc *BaseTruckClass = NULL;
	CMetaClassDesc *TruckClass = NULL;
	CMetaClassDesc *SportUteClass = NULL;
	CMetaClassDesc *VanClass = NULL;
	CMetaPropertyDesc *pProp = NULL;
	CMetaRelationshipDesc *pCorpHasDivRel = NULL;
	CMetaRelationshipDesc *pDivMakesAutosRel = NULL;
	CMetaRelationshipDesc *pDivMakesTrucksRel = NULL;
	MetaObjectIDVector RelsToProp;
	MetaObjectIDVector superClasses;
 
	result = model.CreateMDSModel(
				NMAUTOWORLD, // Name
				_T("Model for Auto Industry"), //Description
				MODELGUID_AW // GUID
				); 
 
	if (SUCCEEDED(result))
	{
		// Create Auto Class Description
		result = model.CreateMDSClassDesc2(
					AutoClass, // return object
					NMAUTO, //Name
					_T("Class of Autos"), //Description
					MD_UNIQUE, // UniqueNamesFlag
					CLSGUID_Auto, // GUID
					NULLLOID, // use default owner
					NULLLOID, // use default security profile
					false , // a root class
					false, // abstract class
					superClasses
					);
	}
 
 
	// Create DivisionMakesAutos Relationship Description
	if (SUCCEEDED(result)) 
	{
		result =  model.CreateMDSRelationshipDesc(
					pDivMakesAutosRel, // Relationship object
					NMDIVMAKESAUTOS, //Name
					_T("Relationship that links autos to divisions"), //Description
					AutoDevisionClass->GetObjectID(), // Orig Classid
					AutoClass->GetObjectID(), // Dest Classid
					MD_NULL, // UniqueNames Flag
					MD_PROPDEL, // Propagate Delete Flag
					RELGUID_DivMakesAutos, // GUID
					NULLLOID, // use default owner
					NULLLOID // use default security profile
					);
	}
 
	if (AutoDevisionClass)
		delete AutoDevisionClass;
	if (AutoClass)
		delete AutoClass;
	if (pProp)
		delete pProp;
	if (pDivMakesAutosRel)
		delete pDivMakesAutosRel;
 
	return (result);
}