Hello,
I want to create a structure where in I have a source class which has got 2 funtions: MySourceClass.GetData() As Datatable and MySourceClass.GetSchema() As Datatable.
When this functions are called from my code it should accordingly go to the interface class and read data from the user selected file. For example, if the user selects an excel file then when calling MySourceClass.GetData() it should read the excel file object class and get the data however if the CSV file object class is selected then when calling MySourceClass.GetData() it should read data from CSV file.
All in all what I want to achieve is that a call to SourceClass.GetData would go and fetch the datatable by reading the appropriate file using the interface class and the interface class dictates which type of file is to be read and I dont have to pass any values into the MySourceClass,GetData() function like FileName, FilePath, FileType, HasHeaderRow, Connection String etc... as the interface class would already have all that information...
I am quite new and thick to this and would therefore appreciate some kind of example to explain how can I achieve this....
Something like this
Public Interface ReadFile
Function GetData() As Datatable
End Interface
Class ReadCsV
implements ReadFileEnd Class
Class ReadExcel
implements ReadFileEnd Class
Class MySource
Public Function GetData() as Datatable
'This would read the interface and
'decide wether to read from CSV file or
'from excel file and accordingly returm the datatable
End Class
The reason for this whole exercise is because all I want to finally achieve is that user can select multiple sources like a combination of CSV file, excel file, delimited file, database tables and I allow them to map this data to the existing database tables and save the data from the file in that table.
Therefore creating a object structure which has Import Job at the topmost level, within it a Import Task Collection object which has import task object containg Source Class, Field Mapping Collection Class, Destination table details class.
Therefore what would happen is when i do ImportJob.ImportTaskCollection(i).ImportTask.DataSource.GetData() it will read the appropriate file and return the datatable
From reading a bit I understand that the ReadCsv should have a function, GetData, that looks at a CSV file and loads the data into a DataTable, which it returns. It will know the path, because I will pass in the path via the constructor.
Similarly, ReadExcel will have a GetData function that returns a DataTable that was populated by reading in from an Excel file found at the path passed into the constructor.
The MySource class would hold an instance of a class (ReadCsv or ReadExcel) that implements the ReadFile interface. From MySource.GetData, you would call the GetData function on the ReadFile variable I have a reference to. I will have to set that instance to either the ReadCsv or ReadExcel earlier on based on whatever conditions I like.
Knowing all this is fine theoretically but how do i put it in code is what I am failing to understand...
Can anybody please post me a code example for me to understand this properly???
Thanks.