亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? primarykeyfilter.java

?? 采用 Java 編寫(xiě)的數(shù)據(jù)庫(kù)系統(tǒng)單元測(cè)試程序。
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

    // first, obtain the current allowed ids for that table
    Set currentAllowedIds = (Set) this.allowedPKsPerTable.get( table );
    if ( currentAllowedIds == null ) {
      currentAllowedIds = new HashSet();
      this.allowedPKsPerTable.put( table, currentAllowedIds );
    }
    // then, add the new ids, but checking if it should be allowed to add them
    Set forcedAllowedPKs = (Set) this.allowedPKsInput.get( table );
    if ( forcedAllowedPKs == null || forcedAllowedPKs.isEmpty() ) {
      currentAllowedIds.addAll( newAllowedPKs );
    } else {
      Iterator iterator = newAllowedPKs.iterator();
      while ( iterator.hasNext() ) {
        Object id = iterator.next();
        if ( forcedAllowedPKs.contains(id) ) {
          currentAllowedIds.add(id);
        } else {
          if ( this.logger.isDebugEnabled() ) {
            this.logger.debug( "Discarding id " + id + " of table " + table + 
              " as it was not included in the input!" );
          }
        }
      }
    }
  }
  
  private void scanPKs( String table, String pkColumn, Set allowedIds ) throws SQLException {
        logger.debug("scanPKs(table=" + table + ", pkColumn=" + pkColumn + ", allowedIds=" + allowedIds + ") - start");

    Set fkEdges = (Set) this.fkEdgesPerTable.get( table );
    if ( fkEdges == null || fkEdges.isEmpty() ) {
      return;
    }
    // we need a temporary list as there is no warranty about the set order...
    List fkTables = new ArrayList( fkEdges.size() );
    Iterator iterator = fkEdges.iterator();
    StringBuffer colsBuffer = new StringBuffer();
    while ( iterator.hasNext() ) {
      ForeignKeyRelationshipEdge edge = (ForeignKeyRelationshipEdge) iterator.next();
      fkTables.add( edge.getTo() );
      colsBuffer.append( edge.getFKColumn() );
      if ( iterator.hasNext() ) {
        colsBuffer.append( ", " );
      }
    }
    // NOTE: make sure the query below is compatible standard SQL
    String sql = "SELECT " + colsBuffer + " FROM " + table + 
    " WHERE " + pkColumn + " = ? ";
    if ( this.logger.isDebugEnabled() ) {
      this.logger.debug( "SQL: " + sql );
    }
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
      pstmt = this.connection.getConnection().prepareStatement( sql );
      iterator = allowedIds.iterator();
      while( iterator.hasNext() ) {
        Object pk = iterator.next(); // id being scanned
        if ( this.logger.isDebugEnabled() ) {
          this.logger.debug("Executing sql for ? = " + pk );
        }
        pstmt.setObject( 1, pk );
        rs = pstmt.executeQuery();
        while( rs.next() ) {
          for ( int i=0; i<fkTables.size(); i++ ) {
            String newTable = (String) fkTables.get(i);
            Object fk = rs.getObject(i+1);
            if ( fk != null ) {
              if ( this.logger.isDebugEnabled() ) {
                this.logger.debug("New ID: " + newTable + "->" + fk  );
              }
              addPKToScan( newTable, fk );
            } else {
              this.logger.warn( "Found null FK for relationship  " + 
                  table + "=>" + newTable );
            }
          }
        }
      }
    } catch (SQLException e) {
      logger.error("scanPKs()", e);
      SQLHelper.close( rs, pstmt );
    }        
  }
  
  private void scanReversePKs(String table, Set pksToScan) throws SQLException {
        logger.debug("scanReversePKs(table=" + table + ", pksToScan=" + pksToScan + ") - start");

    if ( ! this.reverseScan ) {
      return; 
    }
    Set fkReverseEdges = (Set) this.fkReverseEdgesPerTable.get( table );
    if ( fkReverseEdges == null || fkReverseEdges.isEmpty() ) {
      return;
    }
    Iterator iterator = fkReverseEdges.iterator();
    while ( iterator.hasNext() ) {
      ForeignKeyRelationshipEdge edge = (ForeignKeyRelationshipEdge) iterator.next();
      addReverseEdge( edge, pksToScan );
    }
  }

  private void addReverseEdge(ForeignKeyRelationshipEdge edge, Set idsToScan) throws SQLException {
        logger.debug("addReverseEdge(edge=" + edge + ", idsToScan=" + idsToScan + ") - start");

    String fkTable = (String) edge.getFrom();
    String fkColumn = edge.getFKColumn();
    String pkColumn = getPKColumn( fkTable );
    // NOTE: make sure the query below is compatible standard SQL
    String sql = "SELECT " + pkColumn + " FROM " + fkTable + " WHERE " + fkColumn + " = ? ";
    
    PreparedStatement pstmt = null;
    try {
      if ( this.logger.isDebugEnabled() ) {
        this.logger.debug( "Preparing SQL query '" + sql + "'" );
      }
      pstmt = this.connection.getConnection().prepareStatement( sql );
    } catch (SQLException e) {
      logger.error("addReverseEdge()", e);
      SQLHelper.close( pstmt );
    }        
    ResultSet rs = null;
    Iterator iterator = idsToScan.iterator();
    try {
      while ( iterator.hasNext() ) {
        Object pk = iterator.next();
        if ( this.logger.isDebugEnabled() ) {
          this.logger.debug( "executing query '" + sql + "' for ? = " + pk );
        }
        pstmt.setObject( 1, pk );
        rs = pstmt.executeQuery();
        while( rs.next() ) {
          Object fk = rs.getObject(1);
          addPKToScan( fkTable, fk );
        }
      } 
    } finally {
      SQLHelper.close( rs, pstmt );
    }
  }

  // TODO: support PKs with multiple values
  private String getPKColumn( String table ) throws SQLException {
        logger.debug("getPKColumn(table=" + table + ") - start");

    String pkColumn = (String) this.pkColumnPerTable.get( table );
    if ( pkColumn == null ) {
      pkColumn = SQLHelper.getPrimaryKeyColumn( this.connection.getConnection(), table );
      this.pkColumnPerTable.put( table, pkColumn );
    }
    return pkColumn;
  }
  
  private void removePKsToScan(String table, Set ids) {
        logger.debug("removePKsToScan(table=" + table + ", ids=" + ids + ") - start");

    Set pksToScan = (Set) this.pksToScanPerTable.get(table);
    if ( pksToScan != null ) {
      if ( pksToScan == ids ) {   
        throw new RuntimeException( "INTERNAL ERROR on removeIdsToScan() for table " + table );
      } else {
        pksToScan.removeAll( ids );
      }
    }    
  }

  private void addPKToScan(String table, Object pk) {
        logger.debug("addPKToScan(table=" + table + ", pk=" + pk + ") - start");

    // first, check if it wasn't added yet
    Set scannedIds = (Set) this.allowedPKsPerTable.get( table );
    if ( scannedIds != null && scannedIds.contains(pk)) {
      if ( this.logger.isDebugEnabled() ) {
        this.logger.debug( "Discarding already scanned id=" + pk + " for table " + table );
      }
      return;
    }
    
    Set pksToScan = (Set) this.pksToScanPerTable.get(table);
    if ( pksToScan == null ) {
      pksToScan = new HashSet();
      this.pksToScanPerTable.put( table, pksToScan );
    }
    pksToScan.add( pk );
  }

  private class FilterIterator implements ITableIterator {

        /**
         * Logger for this class
         */
        private final Logger logger = LoggerFactory.getLogger(FilterIterator.class);

    private final ITableIterator _iterator;

    public FilterIterator(ITableIterator iterator) {
      
      _iterator = iterator;
    }

    ////////////////////////////////////////////////////////////////////////////
    // ITableIterator interface

    public boolean next() throws DataSetException {
      if ( logger.isDebugEnabled() ) {
        logger.debug("Iterator.next()" );
      }      
      while (_iterator.next()) {
        if (accept(_iterator.getTableMetaData().getTableName())) {
          return true;
        }
      }
      return false;
    }

    public ITableMetaData getTableMetaData() throws DataSetException {
      if ( logger.isDebugEnabled() ) {
        logger.debug("Iterator.getTableMetaData()" );
      }      
      return _iterator.getTableMetaData();
    }

    public ITable getTable() throws DataSetException {
      if ( logger.isDebugEnabled() ) {
        logger.debug("Iterator.getTable()" );
      }
      ITable table = _iterator.getTable();
      String tableName = table.getTableMetaData().getTableName();
      Set allowedPKs = (Set) allowedPKsPerTable.get( tableName );
      if ( allowedPKs != null ) {
        return new PrimaryKeyFilteredTableWrapper(table, allowedPKs);
      }
      return table;
    }
  }

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品大尺度| 国产在线精品不卡| 一区二区在线免费观看| 国产欧美日韩在线视频| 日本一区二区综合亚洲| 国产日韩欧美高清| 国产欧美日韩综合精品一区二区| 2021久久国产精品不只是精品| 亚洲精品一区二区三区香蕉| 日韩免费一区二区三区在线播放| 91麻豆精品国产自产在线 | 成人激情小说乱人伦| 国产成人精品免费| 成人国产亚洲欧美成人综合网| 福利一区二区在线| 成人av电影免费观看| 99麻豆久久久国产精品免费| aa级大片欧美| 欧美性猛交一区二区三区精品| 欧美日韩美少妇| 日韩丝袜情趣美女图片| 2020国产精品自拍| 国产精品福利在线播放| 亚洲另类在线一区| 日韩中文字幕区一区有砖一区| 视频一区国产视频| 极品瑜伽女神91| 成人av在线播放网站| 91丨九色丨蝌蚪富婆spa| 欧美综合欧美视频| 日韩精品一区二区三区四区视频| 国产天堂亚洲国产碰碰| 亚洲视频一区二区免费在线观看 | 成人av电影在线网| 欧美色电影在线| 日韩欧美第一区| 国产欧美视频一区二区三区| 亚洲美女精品一区| 蜜臀久久99精品久久久久宅男| 国产精品系列在线观看| 91亚洲精华国产精华精华液| 欧美乱妇20p| 国产亚洲一区二区三区四区| 1区2区3区精品视频| 性做久久久久久免费观看| 久久精品国产色蜜蜜麻豆| 99久久伊人久久99| 日韩一区二区在线观看| 国产精品美女久久久久久久| 午夜一区二区三区视频| 国产激情视频一区二区三区欧美 | 色网站国产精品| 欧美一区二区网站| 国产精品蜜臀在线观看| 丝袜美腿亚洲一区二区图片| 大桥未久av一区二区三区中文| 欧美日韩午夜在线| 欧美激情自拍偷拍| 五月天丁香久久| 99视频精品全部免费在线| 日韩限制级电影在线观看| 日韩码欧中文字| 经典三级一区二区| 欧美视频一区二区三区四区| 国产亚洲精品资源在线26u| 亚洲高清在线视频| 成人激情午夜影院| 精品国产一二三区| 亚洲一二三四久久| 成人av网址在线| www日韩大片| 奇米888四色在线精品| 色激情天天射综合网| 久久综合国产精品| 日韩av电影免费观看高清完整版在线观看| 成人av高清在线| 久久麻豆一区二区| 久草这里只有精品视频| 欧美日本一区二区| 亚洲精品福利视频网站| 成人黄色电影在线 | 秋霞av亚洲一区二区三| 91啦中文在线观看| 久久久精品影视| 久久国产剧场电影| 3atv一区二区三区| 五月婷婷欧美视频| 欧美中文字幕一二三区视频| 中文字幕佐山爱一区二区免费| 成人小视频在线观看| 国产亚洲综合性久久久影院| 久久精品国产秦先生| 正在播放一区二区| 五月婷婷激情综合| 欧美久久久一区| 图片区小说区区亚洲影院| 日本国产一区二区| 亚洲欧美激情插| 色94色欧美sute亚洲线路一ni| 亚洲日本在线视频观看| www.欧美精品一二区| 欧美激情一区二区三区四区| 国产精品99久久久| 欧美国产日韩在线观看| 国产高清一区日本| 国产精品三级视频| caoporn国产精品| 综合电影一区二区三区| 99国产精品久久久久| 18欧美乱大交hd1984| 一本色道综合亚洲| 亚洲影院在线观看| 欧美日韩黄色一区二区| 午夜欧美电影在线观看| 欧美一区二区美女| 精品午夜一区二区三区在线观看| 欧美精品一区二区三区四区| 韩国欧美国产1区| 国产亚洲1区2区3区| 成人性生交大片免费看中文| 国产精品理论在线观看| 色网站国产精品| 日日骚欧美日韩| 日韩欧美一级片| 国产69精品久久777的优势| 亚洲图片激情小说| 欧美日韩一区二区三区高清| 日本免费在线视频不卡一不卡二 | 秋霞国产午夜精品免费视频| 日韩精品一区二| 高清av一区二区| 亚洲综合激情另类小说区| 欧美狂野另类xxxxoooo| 久久91精品国产91久久小草| 国产精品视频看| 欧美日韩在线播| 国产最新精品免费| 亚洲天堂福利av| 欧美一区二区国产| 国产成人综合视频| 亚洲小说欧美激情另类| 日韩欧美一级特黄在线播放| 国产.欧美.日韩| 亚洲成在人线免费| 精品国产精品网麻豆系列 | 欧美韩国日本不卡| 91免费观看在线| 美女国产一区二区三区| 国产精品网友自拍| 欧美日韩在线播放三区四区| 激情五月婷婷综合网| 亚洲欧美一区二区久久| 91精品国产综合久久精品麻豆 | 99亚偷拍自图区亚洲| 婷婷丁香激情综合| 久久久久久久久久看片| 在线视频一区二区三区| 韩国午夜理伦三级不卡影院| 综合久久国产九一剧情麻豆| 日韩一区二区不卡| 欧美一级在线观看| 91蜜桃视频在线| 精品在线你懂的| 一级中文字幕一区二区| 久久蜜桃av一区二区天堂 | 精品国产一区二区亚洲人成毛片 | 久久一区二区三区四区| 在线看国产一区| 成熟亚洲日本毛茸茸凸凹| 日韩高清一区二区| 国产精品萝li| 日韩欧美黄色影院| 欧美亚洲动漫制服丝袜| 成人开心网精品视频| 九色综合狠狠综合久久| 亚洲成年人影院| 国产精品成人免费精品自在线观看| 日韩欧美一级二级| 欧美色精品在线视频| eeuss鲁片一区二区三区| 国产乱国产乱300精品| 日日摸夜夜添夜夜添精品视频| 亚洲人亚洲人成电影网站色| 国产婷婷色一区二区三区四区| 日韩精品一区二区三区在线| 欧美三级乱人伦电影| 色哟哟一区二区三区| 风间由美一区二区三区在线观看 | 欧洲日韩一区二区三区| 豆国产96在线|亚洲| 精品一区二区三区在线观看国产| 亚洲国产美国国产综合一区二区| 国产精品国产精品国产专区不片| 久久亚洲精精品中文字幕早川悠里| 7777精品伊人久久久大香线蕉| 91久久线看在观草草青青 | 精品国产91九色蝌蚪| 欧美一区在线视频| 欧美日韩国产美女| 欧美三级乱人伦电影|