ADF txt文件数据导入table


创建表

   CREATE TABLE ALS_STAFF  
   (  
     ID            NUMBER(3,0),  
     FIRST_NAME    VARCHAR2(20 BYTE),  
     LAST_NAME     VARCHAR2(30 BYTE),  
     EMAIL_ADDRESS VARCHAR2(100 BYTE), 
     CONSTRAINT ALS_STF_PK PRIMARY KEY(ID)ENABLE  
   ) 




txt文件数据导入模板:

ID,FRST_NAME,LAST_NAME,EMAIL               
100,Peter,Jones,testmail@mycompany.org       
101,John,Janssen,a-testmail@mycompany.org    
102,Thomas,Higgins,b-testmail@mycompany.org


页面设计如下:

table绑定UploadFileBean中staffTable

inputFile  valueChangeListener属性绑定UploadFileBean类fileUploaded()方法





java代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import javax.faces.event.ValueChangeEvent;
import oracle.adf.model.binding.DCIteratorBinding;
import oracle.adf.view.rich.component.rich.data.RichTable;
import oracle.adf.view.rich.context.AdfFacesContext;
import oracle.jbo.Row;
import oracle.jbo.uicli.binding.JUCtrlHierBinding;
import org.apache.myfaces.trinidad.model.CollectionModel;
import org.apache.myfaces.trinidad.model.UploadedFile;

public class UploadFileBean{

    private RichTable staffTable;

    //验证文件格式
     public static boolean isTxt(String fileName) {
         if (fileName == null) {
             return false;
         }
         String tmpName =
             fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
             if ("txt".equals(tmpName.toLowerCase())) {
                 return true;
             }
         return false;
     }

    public Boolean fileUploaded(ValueChangeEvent valueChangeEvent) {
        // Add event code here...
        UploadedFile file = (UploadedFile)valueChangeEvent.getNewValue();
        try {
            //判断格式
            if (!this.isTxt(file.getFilename())) {
                System.out.println("格式不正确");
                return false;
            }
            //判断大小
            if (file.getLength() >= 1024000) {
                System.out.println("文件不能超过1M");
                return false;
            }
            parseFile(file.getInputStream());
            AdfFacesContext.getCurrentInstance().addPartialTarget(staffTable);
        } catch (IOException e) {
            // TODO
        }
        return true;
    }

    public void parseFile(java.io.InputStream file) {
        BufferedReader reader =
            new BufferedReader(new InputStreamReader(file));
        String strLine = "";
        int lineNumber = 0, tokenNumber = 0;
        Row rw = null;
        CollectionModel _tableModel = (CollectionModel)staffTable.getValue();
        JUCtrlHierBinding _adfTableBinding =
            (JUCtrlHierBinding)_tableModel.getWrappedData();
        DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
        try {
            while ((strLine = reader.readLine()) != null) {
                lineNumber++;

                if (lineNumber > 1) {
                    rw = it.getNavigatableRowIterator().createRow();
                    rw.setNewRowState(Row.STATUS_INITIALIZED);
                    it.getNavigatableRowIterator().insertRow(rw);
                }

                StringTokenizer st = new StringTokenizer(strLine, ",");
                while (st.hasMoreTokens()) {

                    tokenNumber++;
                    String theToken = st.nextToken();
                    System.out.println("Line # " + lineNumber + ", Token # " +
                                       tokenNumber + ", Token : " + theToken);
                    if (lineNumber > 1) {

                        switch (tokenNumber) {
                        case 1:
                            rw.setAttribute("Id", theToken);
                        case 2:
                            rw.setAttribute("FirstName", theToken);
                        case 3:
                            rw.setAttribute("LastName", theToken);
                        case 4:
                            rw.setAttribute("EmailAddress", theToken);
                        }
                    }
                }

                tokenNumber = 0;
            }
        } catch (IOException e) {

            System.out.println("上传文件内容错误");
        } catch (Exception e) {
            System.out.println("上传文件数据错误");
        }
    }

    public void setStaffTable(RichTable staffTable) {
        this.staffTable = staffTable;
    }

    public RichTable getStaffTable() {
        return staffTable;
    }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值