We will perform the below listed task in order to complete our assignment
1. Create Object(Table or Tables)
2. Create Application Module
3. Create EO
4. Create VO
5 Create Page
6. Create Controller
7. Test Page
--------------------------------------------------
Create table.
create table apps.xx_import_csv_data
(
column1 varchar2(100 byte),
column2 varchar2(100 byte),
column3 varchar2(100 byte),
column4 varchar2(100 byte),
column5 varchar2(100 byte),
last_update_date date not null,
last_updated_by number not null,
creation_date date not null,
created_by number not null,
last_update_login number
)
tablespace apps_ts_tx_data
pctused 0
pctfree 10
initrans 1
maxtrans 255
storage (
initial 128k
next 128k
maxsize unlimited
minextents 1
maxextents unlimited
pctincrease 0
buffer_pool default
)
logging
nocompress
nocache
noparallel
monitoring;
-------------------------------------------
Create Application Module
Navigation:
Right Click on Project -->New -->Business Tier -->ADF Business Components -->Application Module --> Press OK button.
New Window will appear to you which contains 5 steps
Step 1:
Specify Package called path where you want to save your application Module
E.g : Package: oracle.apps.fnd.server
Specify package name
E.g: Name:ImportcsvAM
Press Next Button
Step 2: Make sure in Data Model your Application Module is appearing and Press Button Next
Step 3:Press Button Next
Step 4: Check the Generate Java File(s) checkbox in Application Module Class: ImportcsvAMImpl to generate the ImportcsvAMImpl java class. (It is already checked by default.)
Step 5: In Finish window, Press Finish Button
-------------------------------------------
Create Entity Object
Navigation:
Right Click on Project -->New -->Business Tier -->ADF Business Components -->Entity Object --> Press OK button.
New Window will appear to you which contains 6 steps
Step 1: Specify the Entity Object Name
E.g : ImportcsvEO
Specify Package or Path oracle.apps.fnd.schema
Select Database object
E.g: XX_IMPORT_CSV_DATA
Press Button Next
Step 2: Press Button Next
Step 3: Press Button Next
Now popup message will appear front of you as we did not define any primary key. Therefore, it will consider ROWID as primary key. Press Yes
Step 4: Check Create Method, Remove Method and Validate Method
Press Button Next.
Step 5: Here you have a option to VO belongs to EO but we will not create and we will Press Button Next.
Step 6: In Finish window, Press Finish Button.
-------------------------------------------
Create View Object
Navigation:
Right Click on Project -->New -->Business Tier -->ADF Business Components -->View Object --> Press OK button.
New Window will appear to you which contains 8 steps
Step 1: Specify the View Object Name
E.g : ImportcsvVO
Specify Package or Path oracle.apps.fnd.server
select Radio Button Updatable Access through Entity Objects
Press Button Next
Step 2: In Available list go to Oracle.apps.fnd.schema and shuffle ImportcsvEO to selected list
Press Button Next
Step 3: Shuffle the required columns to selected list and Press Button Next
Step 4: Press Button Next
Step 5: Press Button Next
Step 6: Press Button Next
Step 7: Check the checkbox View Row Class: ImportcsvVORowImpl for both the Generate Java File and Accessors checkbox
Step 8: In Finish window, Press Finish Button.
Linking the view object to the application
module(VO to AM)
To link the view object to the application
module, perform the following steps:
- In the Application Navigator tab, double-click the ImportcsvAM
- In the Application Module Editor select the Data Model node.
- Expand the oracle.apps.fnd.server package, and click on the ImportcsvVO view object.
- Shift the ImportcsvVO from Available View Objects: to Data Model: by clicking on the > button
Create Page
Right Click on Project -->New -->Web Tier -->OA Components -->Page --> Press OK button.
New Window will appear, here you need to Name your page and specify package.
Name: ImportcsvPG
Package: oracle.apps.fnd.webui
Press Buttons OK
Renaming the default region (PG)
- In the Application Navigator tab, click on the ImportcsvPG.xml page
- In the Structure pane, click on the item ImportcsvPG --> region1 node.
- Now in the Property Inspector, set the following properties ID: PageLayoutRN
AM Definition: oracle.apps.fnd.server.ImportcsvAM
Window Title: Import CSV File Window
Title: Import CSV File - Click on the Save All button from the toolbar. Run the page
- Click the ImportcsvPG.xml in the Applications Manager and the page
components will appear in the Structure pane. - In the Structure pane, right-click PageLayoutRN and select New | Region from
the pop-up menu. - In the Property Inspector, set the following properties:
ID: ImportcsvRN
Region Style: defaultSingleColumn - Click on the Save All button from the toolbar.
Navigation:
Right Click on PagePayoutRN -->New -->Item
Setting item properties
In the Structure pane, click on the Item attribute and set the following properties:
ID: MessageFileUpload
Item Style: MessageFileUpload
Navigation:
Right Click on PagePayoutRN -->New -->Item
Setting item properties
In the Structure pane, click on the Item attribute and set the following properties:
ID: Go
Item Style: SubmitButton
Attribute Set :/oracle/apps/fnd/attributesets/Buttons/Go
Create Controller
Navigation:
Right Click on PagePayoutRN -->Set New Controller
New Window will appear to you, you need to specify Package and Name
Package: oracle.apps.fnd.webui
Name: ImportcsvCO
Add below listed code in processFormRequest
OAApplicationModule am = (OAApplicationModule) pageContext.getApplicationModule(webBean);
OAViewObjectImpl vo =
(OAViewObjectImpl)am.findViewObject("ImportcsvVO1");
OAViewObjectImpl csvVO =
(OAViewObjectImpl)am.findViewObject("ImportcsvVO1");
if (pageContext.getParameter("Go") != null) {
//Get Data of uploaded CSV file
DataObject csvUploadData =
pageContext.getNamedDataObject("MessageFileUpload");
//Declare Variable that will be used in reading uploaded file
String fileName = null;
String contentType = null;
Long fileCapacity = null;
BlobDomain uploadStream = null;
BufferedReader inReader = null;
try {
fileName =
(String)csvUploadData.selectValue(null, "UPLOAD_FILE_NAME");
contentType =
(String)csvUploadData.selectValue(null, "UPLOAD_FILE_MIME_TYPE");
uploadStream =
(BlobDomain)csvUploadData.selectValue(null, fileName);
inReader =
new BufferedReader(new InputStreamReader(uploadStream.getBinaryStream()));
fileCapacity = new Long(uploadStream.getLength());
} catch (NullPointerException ex) {
throw new OAException("Please Select an CSV File to Upload it to Database!!!",
OAException.ERROR);
}
try {
String wholeLine = "";
long counter = 0;
String[] seperatedCells;
while (((wholeLine = inReader.readLine()) != null))
{
//Split the deliminated data and
if (wholeLine.trim().length() > 0) {
//split whole line to cells
seperatedCells = wholeLine.split(",");
Row row = vo.createRow();
vo.insertRow(row);
row.setNewRowState(Row.STATUS_INITIALIZED);
row.setAttribute("Column1",seperatedCells[0]);
row.setAttribute("Column2", seperatedCells[1]);
row.setAttribute("Column3",seperatedCells[2]);
row.setAttribute("Column4", seperatedCells[3]);
row.setAttribute("Column5", seperatedCells[4]);
}
}
} catch (IOException e) {
throw new OAException(e.getMessage(), OAException.ERROR);
}
am.getTransaction().commit();
pageContext.forwardImmediately(
"OA.jsp?page=/oracle/apps/fnd/webui/ImportcsvPG",
null, OAWebBeanConstants.KEEP_MENU_CONTEXT,
null,
null,
true,
OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
throw new OAException("CSV File Uploaded SuccessFully!!!",
OAException.CONFIRMATION);
}
-------------------------------------------
Test Page
Navigation:
Right Click on ImportcsvPG -->Run
how to handle when there is comma in data??
ReplyDeleteThank you for the code, but for large files connection is failing, any help?
ReplyDeleteWhat could be the maximum number of fields a .csv file can have to import data to a table.
ReplyDelete