NumberMappingReader.java :  » Search » galagosearch » org » galagosearch » core » mergeindex » parallel » Java Open Source

Java Open Source » Search » galagosearch 
galagosearch » org » galagosearch » core » mergeindex » parallel » NumberMappingReader.java
// BSD License (http://www.galagosearch.org/license)
package org.galagosearch.core.mergeindex.parallel;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.HashMap;
import org.galagosearch.tupleflow.Parameters;

/**
 *
 * @author sjh
 */
public class NumberMappingReader {
  String mappingFolder;
  HashMap<Integer, ByteBuffer> fileReaders = new HashMap();

  public NumberMappingReader(Parameters p){
    mappingFolder = p.get("filename");
  }

  public NumberMappingReader(String filename){
    mappingFolder = filename;
  }

  public int getNewDocNumber(int indexId, int oldDocId) throws IOException{
    if( ! fileReaders.containsKey(indexId) ){
      String filename = mappingFolder + File.separator + indexId;
      RandomAccessFile file = new RandomAccessFile(new File(filename), "r");
      FileChannel channel = file.getChannel();
      ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
      fileReaders.put(indexId, buffer);
    }

    ByteBuffer buffer = fileReaders.get(indexId);
    
    assert (oldDocId * 4) < buffer.capacity();

    return buffer.getInt(oldDocId * 4);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.