Java抽象 - 定义DAO接口

时间:2013-07-02 08:22:28

标签: java performance jdbc

大家早上好,

我必须解析几个“Excel”文件,如CSV,XLSX,XLS,ODS ......,以便在数据库中添加其内容。我几天前已经实施了一个解决方案,到目前为止它还运行良好。实际上,我有一个抽象类的抽象类,如“插入表”,“创建表”或“准备查询”,这些方法是在daugthers类(XLS,CSV ...)中实现的,因为它们是特定于文件和您阅读它的方式。

然后我(几乎)试图优化和分解代码。实际上,几乎每行代码(在每个daugther类中)都是相同的,唯一不同的是读取文件(如何获取单元格值或如何获取单元格类型......)。使用这些值,我只需要使用我准备好的语句实例调用“set Object”方法。

这就是问题:我创建了一个抽象方法(setObjectStatement():见下文),它在子类中实现,以便读取特定文件并使用语句(在参数中)调用setObject。它仍然有效,但它比以前长得多(代码冗余)。代码完全相同,我只是在通用方法中复制/粘贴它。

我哪里错了?在大循环中调用方法是否昂贵?我可以修复它还是必须处理代码冗余?

//Inserting in table (mother class) : 
for (int col=colonneDepart-1;col<colonneFin;col++,ligneJtable++) {
     //some conditions here which are independent from the file I read
     //...
     setStatementObject(statement,donnees,col,nRowIndex,nbrCol,ligneJtable);
     System.out.println(statement);
}
//Also some methods call which are the same for every files

这是我的一个daugther方法(用于XLS)

//setStatementObject for XLS files (daugther class)
Cell cellDonnee = sheet.getCell(nColIndex,nRowIndex);
CellType type = cellDonnee.getType();
if (type == CellType.LABEL) {
   try {
       int x = Integer.parseInt(cellDonnee.getContents());
       statement.setObject(nObjectIndex,x);
    }
    catch(NumberFormatException e){
         String s = cellDonnee.getContents();
         if(s.equals("")){
        statement.setObject(nObjectIndex,0.0);
         }
         else {
            s = s.trim();
            statement.setObject(nObjectIndex,s);
        }
     }
  } else if ( ) {
        //...
  }

感谢您的回答,我为我的英语错误道歉,或者您有一些问题需要了解我。

0 个答案:

没有答案