Sunteți pe pagina 1din 8

Teamcenter Open Gate

#include <ae/ae.h>

#include <ae/datasettype.h>

#include <ae/nxsm.h>

#include <custom.h>

#include <dataset.h>

#include <ecm/ecm.h>

#include <epm/epm.h>

#include <folder.h>

#include <form/form.h>

#include <ict_userservice.h>

#include <item_errors.h>

#include <itk/mem.h>

#include <property/prop.h>

#include <property/prop_errors.h>

#include <property/prop_msg.h>

#include <stdarg.h>

#include <string.h>

#include <tc.h>

#include <tc/emh.h>

#include <tc/emh_const.h>

#include <tc/tc.h>

#include <tccore/aom.h>

#include <tccore/aom_prop.h>

#include <tccore/custom.h>

#include <tccore/item.h>

#include <tccore/item_errors.h>

#include <tccore/method.h>
#include <tccore/tctype.h>

#include <tccore/workspaceobject.h>

#include <tcinit/tcinit.h>

#include <time.h>

#define CALLAPI(expr)ITKCALL(ifail = expr); if(ifail != ITK_ok)return ifail;

static int PrintErrorStack( void )

int iNumErrs = 0;

int *pSevLst = NULL;

int *pErrCdeLst = NULL;

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 save_object (tag_t object_tag)

int ReturnCode;

/* Save the object. */

ReturnCode = AOM_save (object_tag);

if (ReturnCode != ITK_ok)
{

//output_error ("ERROR %d save object.\n", ReturnCode);

return (ReturnCode);

/* Unlock the object. */

ReturnCode = AOM_unlock (object_tag);

return (ReturnCode);

int trim(char *str)

char *ptr = NULL;

int i,j=0;

ptr = (char*)malloc((strlen(str)+1) * 2);

for(i=0;str[i]!='\0';i++)

if (str[i] != ' ' && str[i] != '\t')

ptr[j++]=str[i];

ptr[j]='\0';

str=ptr;

free(ptr);

return 0;

extern int ITK_user_main( int argc, char **argv )

{
char *file1 = NULL;

char *LineRead1 = NULL;

FILE *fp1;

char mystring1 [10000];

char *RqmtID = NULL;

tag_t my_dataset = NULLTAG;

char * new_name1 = NULL;

char * new_name2 = NULL;

char **list;

int ifail;

int n_items =0;

int backVal = 0;

int count= 0;

IMF_file_t fileDescriptor ;

tag_t datasettype_tag= NULLTAG;

tag_t default_tool_tag;

tag_t newfile = NULLTAG;

tag_t newFileTag = NULLTAG;

tag_t imannewFileTag = NULLTAG;

AE_reference_type_t reference_type;

IMF_file_t filedescriptor;

//ITK_initialize_text_services : Initializes the Teamcenter text services. This is necessary to get the
correct

//error strings when you use EMH_get_error_string, or by certain other Teamcenter functions that
make use of text services, like

//forms

//Paramter The value is not used anymore


ITK_initialize_text_services( ITK_BATCH_TEXT_MODE );

ifail = ITK_auto_login ();

new_name1=(char*)MEM_alloc(sizeof(char)*120);

new_name2=(char*)MEM_alloc(sizeof(char)*120);

LineRead1=malloc(30000);

file1=ITK_ask_cli_argument("-i=");

printf("\n Input file1 is--> %s \n ",file1);

fp1=fopen(file1,"r");

//Find the dataset type object for specified type->MSExcel

AE_find_datasettype ("MSExcel",&datasettype_tag);

//Get the defualt tool object for the dataset type

AE_ask_datasettype_def_tool(datasettype_tag,&default_tool_tag);

if(fp1==NULL)

printf("\n Error in opening the file1 \n");

else

printf("\n File1 is successfully opened \n");

while(fgets(mystring1,200000,fp1) !=NULL)

if(mystring1)

{
strcpy(LineRead1,mystring1);

printf("\n mystring1 %s ",mystring1);

printf("\n LineRead1 %s ",LineRead1);

RqmtID=strtok(LineRead1,"\n");

printf("\n RqmtID %s ",RqmtID );

printf("\n Req item%s\n",RqmtID);fflush(stdout);

strcpy(new_name1,RqmtID);

printf("\n new_name1 %s\n",new_name1);fflush(stdout);

backVal = trim(new_name1);

printf("\n new_name1: %s\n",new_name1);fflush(stdout);

strcpy(new_name2,new_name1);

strcat(new_name2,".xls");

printf("\n new_name2: %s\n",new_name2);fflush(stdout);

//Get the dataset with defined criteria

CALLAPI(AE_find_all_datasets(new_name1,&n_items,&item_tags));

if (n_items >= 1)

printf("\nDataset is already avaialbe\n");fflush(stdout);

else

printf("\n 44444444444444444444444 \n");fflush(stdout);

//Create Dataset of specified type(datasettype_tag) and with other attibutes

CALLAPI(AE_create_dataset_with_id(datasettype_tag, new_name1,"Loading Bulk Dataset", 0, 0,


&tDataset));

printf("\n 5555555555555555 \n");fflush(stdout);


//Set dataset format

CALLAPI(AE_set_dataset_format(tDataset,"BINARY_REF"));

//Set the tool(tool with which this dataset to be open) for Specified dataset

CALLAPI(AE_set_dataset_tool(tDataset,default_tool_tag));

//Get the references for the dataset

//In which we insert the actual datset file

CALLAPI(AE_ask_datasettype_refs(datasettype_tag,&count,&list));

//Import the file in Teamcenter

if ( IMF_import_file ("/home/req83/Deliverable.xls",NULL,SS_BINARY,&imannewFileTag,&filedescriptor)
!=ITK_ok ) PrintErrorStack();

//Set the original name property for file

if ( IMF_set_original_file_name(imannewFileTag,new_name2) !=ITK_ok ) PrintErrorStack();

//Save the uploaded file

save_object(imannewFileTag);

//Add the imported file into dataset as named reference

if (AE_add_dataset_named_ref(tDataset,list[0],SS_BINARY,imannewFileTag) !=ITK_ok )
PrintErrorStack();

//if ( AE_import_named_ref (tDataset,"excel","/home/req83/Deliverable.xls",new_name2,SS_BINARY)


!=ITK_ok ) PrintErrorStack();

//Save the dataset

save_object(tDataset);

printf("\nDataset is created\n");fflush(stdout);
}

fclose (fp1);

return ( ITK_ok );

Explanation : Important API


AE_find_datasettype ("MSExcel",&datasettype_tag);
AE_ask_datasettype_def_tool(datasettype_tag,&default_tool_tag);
AE_create_dataset_with_id(datasettype_tag, new_name1,"Loading Bulk Dataset", 0, 0, &tDataset)
AE_set_dataset_format(tDataset,"BINARY_REF")
AE_set_dataset_tool(tDataset,default_tool_tag)
AE_ask_datasettype_refs(datasettype_tag,&count,&list)
IMF_import_file ("/home/req83/Deliverable.xls",NULL,SS_BINARY,&imannewFileTag,&filedescriptor)
IMF_set_original_file_name(imannewFileTag,new_name2)
AE_add_dataset_named_ref(tDataset,list[0],SS_BINARY,imannewFileTag)

S-ar putea să vă placă și