创建表
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;
}
}