Problem Statement : Get all the item & it's dataset present in teamcneter.
Solution:
POM_enquiry_create (enqid)
POM_enquiry_add_select_attrs (enqid,"Item", 1,select_attrs)
POM_enquiry_execute (enqid, &n_rows, &n_cols,&values)
Solution:
#include"TC_Data_Report.h" #include<iostream> using namespace std; static int PrintErrorStack( void ) { int iNumErrs = 0; const int *pSevLst = 0; const int *pErrCdeLst = 0; const char **pMsgLst = NULL; register int i = 0; EMH_ask_errors( &iNumErrs, &pSevLst, &pErrCdeLst, &pMsgLst ); fprintf( stderr, "Error(s): \n"); for ( i = 0; i < iNumErrs; i++ ) { fprintf( stderr, "\t%6d: %s\n", pErrCdeLst[i], pMsgLst[i] ); } return ITK_ok; } int ITK_user_main ( int argc , char* argv[] ) { //getchar(); char *out_file_name = "Itemdetails.csv"; /* Output file name */ char *out_Datasetfile_name = "DatasetDetails.csv"; /* Output file name */ char *objectname = NULL; char *revisionid = NULL; char *datasetname = NULL; char *item_revision_id = NULL; char *object_desc = NULL; char *owning_user = NULL; char *project_ids = NULL; char *last_mod_user = NULL; char *release_status_list = NULL; char *date_format = NULL; char *lastmoddate_string = NULL; char *creationdate_string = NULL; char *userId = NULL; char *password = NULL; char *group = NULL; char *errormsg = NULL; date_t creation_date = NULLDATE; date_t last_mod_date = NULLDATE; char type_name[TCTYPE_name_size_c+1]; char refname[AE_reference_size_c + 1]; char orig_name[IMF_filename_size_c + 1]; char path_name[SS_MAXPATHLEN]; char relative_path[IMF_relative_path_size_c+1]; FILE *out_file_fp = NULL; /* Output file pointer */ FILE *out_Datasefile_fp = NULL; /* Output file pointer */ tag_t *item_tags = NULLTAG; tag_t *secondary_objects = NULLTAG; tag_t titem_rev = NULLTAG; tag_t objTypeTag = NULLTAG; tag_t refobject = NULLTAG; tag_t towning_user = NULLTAG; tag_t tlast_mod_user = NULLTAG; AE_reference_type_t reftype; (void)argc; (void)argv; int secondaryobjectcount = 0; int referencenumberfound = 0; int statuscount = 0; int istatus = ITK_ok; int n_item = 0; int iFail = ITK_ok; int retcode = ITK_ok; auto t = std::time(nullptr); auto tm = *std::localtime(&t); /* Display help if user asked for it */ /*if ( ITK_ask_cli_argument("-h") ) { display_help(); return EXIT_FAILURE; } */ //validating the arguments names specified through command line //If any of the argumnent name is invalid then user can not proceed /*if ( validate_arguments_name( argc , argv ) == false) { display_help(); return EXIT_FAILURE; } */ std::cout << "\nStart Time :"<<std::put_time(&tm, "%d-%m-%Y %H:%M:%S") << std::endl; userId = ITK_ask_cli_argument( "-u" ); password = ITK_ask_cli_argument( "-p" ); group = ITK_ask_cli_argument( "-g" );//dba userId++;password++;group++;//return argument was containing '=' so pointer incremented if( (!userId) || (!password) ||(!group) ) { printf("\n\n\t\t Enter -u=? -p=? -g=?"); exit(0); } out_file_fp = fopen ( out_file_name , "w" ); out_Datasefile_fp = fopen ( out_Datasetfile_name , "w" ); if ( out_file_fp == NULL || out_Datasefile_fp == NULL ) { fprintf(stdout , "Could not open the output file. \n"); return EXIT_FAILURE; } /*Initializing the text services */ ITK_initialize_text_services( 0 ); istatus = ITK_init_module( userId , password , group ); //istatus = ITK_init_module("infodba","infodba","dba"); if ( istatus != ITK_ok) { EMH_ask_error_text( istatus, &errormsg); printf("Error with ITK_init_module: %s \n",errormsg); MEM_free(errormsg); return istatus; } istatus = Get_Items(&n_item, &item_tags); //cout<<"login status "<<iFail<<endl; if ( istatus == ITK_ok ) { //cout<<"\n Login successful...."<<endl; if ( n_item > 0 ) { for ( int i = 0; i < n_item; i++ ) { if (AOM_ask_value_string(item_tags[i],"object_name",&objectname)!= ITK_ok )PrintErrorStack(); //cout<<"object name is "<<objectname<<endl; ITEM_ask_latest_rev( item_tags[i],&titem_rev ); if (AOM_ask_value_string(titem_rev,"item_revision_id",&revisionid)!= ITK_ok )PrintErrorStack(); //cout<<"Revision id is "<<revisionid<<endl; if (AOM_ask_value_string(titem_rev,"object_desc",&object_desc)!= ITK_ok )PrintErrorStack(); //cout<<"object_desc is "<<object_desc<<endl; if (AOM_ask_value_date(titem_rev,"creation_date",&creation_date)!= ITK_ok )PrintErrorStack(); date_format = (char *) TC_text ("DefaultDateFormat"); DATE_date_to_string ( creation_date , date_format , &creationdate_string); //cout<<"creation_date is "<<creationdate_string<<endl; if (AOM_ask_owner(titem_rev,&towning_user)!= ITK_ok )PrintErrorStack(); AOM_ask_value_string(towning_user,"user_id",&owning_user); //cout<<"owning_user is "<<owning_user<<endl; if (AOM_UIF_ask_value(titem_rev,"project_ids",&project_ids)!= ITK_ok )PrintErrorStack(); //cout<<"project_ids is "<<project_ids<<endl; if (AOM_ask_value_date(titem_rev,"last_mod_date",&last_mod_date)!= ITK_ok )PrintErrorStack(); DATE_date_to_string ( last_mod_date , date_format , &lastmoddate_string); //cout<<"last_mod_date is "<<lastmoddate_string<<endl; if ( AOM_ask_last_modifier(titem_rev,&tlast_mod_user)!= ITK_ok )PrintErrorStack(); AOM_ask_value_string(tlast_mod_user,"user_id",&last_mod_user); ///cout<<"last_mod_user is "<<last_mod_user<<endl; AOM_UIF_ask_value(titem_rev,"last_release_status",&release_status_list); //cout<<"release_status_list is "<<release_status_list<<endl; fprintf (out_file_fp , "%s,%s,%s,%s,%s,%s,%s,%s,%s\n" , objectname,object_desc,revisionid,creationdate_string,owning_user,project_ids,lastmoddate_string,last_mod_user,release_status_list ); GRM_list_secondary_objects_only (titem_rev,NULLTAG,&secondaryobjectcount,&secondary_objects); //cout<<"Dataset count is "<<secondaryobjectcount<<endl; for(int datasetcount=0;datasetcount<secondaryobjectcount;datasetcount++) { if (TCTYPE_ask_object_type(secondary_objects[datasetcount],&objTypeTag)!=ITK_ok)PrintErrorStack(); if (TCTYPE_ask_name(objTypeTag,type_name)!=ITK_ok)PrintErrorStack(); //cout<<"type_name is "<<type_name<<endl; if( (strcmp(type_name,"UGMASTER") == 0)|| (strcmp(type_name,"MSExcelX") ==0 ) || (strcmp(type_name,"DirectModel") == 0 ) ) { if (AE_ask_dataset_ref_count(secondary_objects[datasetcount],&referencenumberfound)!=ITK_ok)PrintErrorStack(); if ( referencenumberfound > 0 ) { AOM_ask_name (secondary_objects[datasetcount],&datasetname); fprintf (out_Datasefile_fp , "%s,%s,%s,", objectname,revisionid,datasetname); for ( int j=0;j<referencenumberfound;j++ ) { strcpy(orig_name,""); strcpy(path_name,""); strcpy(relative_path,""); if (AE_find_dataset_named_ref(secondary_objects[datasetcount],j,refname,&reftype,&refobject)!=ITK_ok)PrintErrorStack(); //cout<<"reftype ="<<reftype<<endl; //cout<<"refname ="<<refname<<endl; if(strcmp(refname,"UGPART-ATTR")!=0) { if ( IMF_ask_original_file_name(refobject,orig_name)!=ITK_ok)PrintErrorStack(); // cout<<"\n orig_name is :%s\n"<<orig_name<<endl; if(IMF_ask_file_pathname(refobject,SS_WNT_MACHINE,path_name)!=ITK_ok)PrintErrorStack(); // cout<<"\n path_name is :%s\n"<<path_name<<endl; fprintf (out_Datasefile_fp , "%s,%s\n" , orig_name,path_name ); } } } } } } } } /* MEM_free(objectname); MEM_free(revisionid); MEM_free(userId); MEM_free(password); MEM_free(group); */ if ( ( out_file_fp != NULL ) && ( out_file_fp != stdout ) ) { fclose ( out_file_fp ); } if ( ( out_Datasefile_fp != NULL ) && ( out_Datasefile_fp != stdout ) ) { fclose ( out_Datasefile_fp ); } tm = *std::localtime(&t); std::cout << "End Time: "<<std::put_time(&tm, "%d-%m-%Y %H:%M:%S") << std::endl; cout<<"output file will be available at exe location with name Itemdetails.csv and DatasetDetails.csv"<<endl; /* Cleanup */ MEM_free(item_revision_id); MEM_free(object_desc); MEM_free(owning_user); MEM_free(project_ids); MEM_free(last_mod_user); MEM_free(release_status_list); MEM_free(date_format); MEM_free(lastmoddate_string); MEM_free(creationdate_string); MEM_free (secondary_objects ); MEM_free ( item_tags ); retcode = ITK_exit_module(true); return EXIT_SUCCESS; } int Get_Items (int *nFound, tag_t** foundTags) { /* Add select attributes. We want the uids of the workspace objects so we can load them: */ const char *select_attrs[] = {"puid"}; const char *name[] = {"Item"}; char *enqid = "find_wso_by_type"; char *value_prop = NULL; char *object_type = NULL; int i; int n_rows, n_cols; void ***values; if (POM_enquiry_create (enqid)!= ITK_ok )PrintErrorStack(); if (POM_enquiry_add_select_attrs (enqid,"Item", 1,select_attrs)!= ITK_ok )PrintErrorStack(); /* Add any attribute expressions. We need two of them – one for the value we are given and another for the attribute we are testing against: */ //CHECK_FAIL(POM_enquiry_set_string_value (enqid, "test",1,name, POM_enquiry_bind_value )); //CHECK_FAIL(POM_enquiry_set_attr_expr (enqid, "expr1","workspaceobject", "object_type",POM_enquiry_equal, "test" )); /* Set the where condition so we only get back matching rows: */ //CHECK_FAIL(POM_enquiry_set_where_expr (enqid, "expr1")); /* Now execute the query: */ if ( POM_enquiry_execute (enqid, &n_rows, &n_cols,&values)!= ITK_ok ) PrintErrorStack(); cout<<"Number of Item object found : "<<n_rows<<endl; if ( n_rows != 0 ) { *foundTags = (tag_t *)MEM_alloc ( n_rows * sizeof( tag_t )); *nFound = n_rows; for ( i =0 ; i < (*nFound) ; i++ ) { (*foundTags )[i] = *((tag_t *)values[i][0]); //if (AOM_ask_value_string((*foundTags )[i],"object_name",&value_prop)!= ITK_ok )PrintErrorStack(); //cout<<"object name is "<<value_prop<<endl; //if (WSOM_ask_object_type2((*foundTags )[i],&object_type)!= ITK_ok )PrintErrorStack(); // cout<<"object type is "<<object_type<<endl; } } if ( POM_enquiry_delete("find_wso_by_type")!= ITK_ok ) PrintErrorStack(); MEM_free( values ); return 0; }Explanation : Important API
POM_enquiry_create (enqid)
POM_enquiry_add_select_attrs (enqid,"Item", 1,select_attrs)
POM_enquiry_execute (enqid, &n_rows, &n_cols,&values)
#include"TC_Data_Report.h"
ReplyDeleteCan you provide this reference?
This comment has been removed by the author.
ReplyDeletecan you please tell me how to input ITK code in Teamcenter
ReplyDeleteI am unable to download latest GATE Notification from the official website can you please provide me method to download Online Test Series it or provide me direct link to download GATE Notification.
ReplyDelete