Android Open Source - Jello Paged File R A F






From Project

Back to project page Jello.

License

The source code is released under:

Apache License

If you think the Android project Jello listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.atteo.jello.store;
/*from  w w w .j a  v a2  s .com*/
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

import com.atteo.jello.Jello;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;

@Singleton
public class PagedFileRAF implements PagedFile {
  final File file;

  private boolean readOnly;
  private final int pageSize;
  private int pages;
  private RandomAccessFile raf;

  @Inject
  PagedFileRAF(@Named("pageSize") final short pageSize,
      @Named("fullpath") final String fullpath) {
    this.pageSize = pageSize;

    file = new File(fullpath);
  }

  public int addPages(final int count) {
    pages += count;
    try {
      raf.setLength(pages * pageSize);
    } catch (final IOException e) {
      e.printStackTrace();
    }
    return pages - 1;
  }

  public void close() {
    try {
      raf.close();
    } catch (final IOException e) {
      e.printStackTrace();
    }
  }

  public boolean create() {
    file.getParentFile().mkdirs();
    if (!file.getParentFile().exists())
      return false;
    try {
      file.createNewFile();
    } catch (final IOException e) {
      e.printStackTrace();
      return false;
    }

    return true;
  }

  public boolean exists() {
    return file.exists();
  }

  public long getFileLength() {
    long len = 0;
    try {
      len = raf.length();
    } catch (final IOException e) {
      e.printStackTrace();
    }
    return len;
  }

  public int getPageCount() {
    return pages;
  }

  public boolean isReadOnly() {
    return readOnly;
  }

  public int open() {
    if (!exists())
      return Jello.OPEN_FAILED;

    if (!file.canRead())
      return Jello.OPEN_FAILED;

    readOnly = !file.canWrite();

    String mode;
    if (readOnly)
      mode = "r";
    else
      mode = "rw";

    try {
      raf = new RandomAccessFile(file, mode);
    } catch (final FileNotFoundException e1) {
      e1.printStackTrace();
      return Jello.OPEN_FAILED;

    }

    try {
      pages = (int) (raf.length() / pageSize);
    } catch (final IOException e) {
      e.printStackTrace();
      return Jello.OPEN_FAILED;

    }

    if (readOnly)
      return Jello.OPEN_READONLY;
    else
      return Jello.OPEN_SUCCESS;
  }

  public void readPage(final Page page) {
    try {
      raf.seek(page.getId() * pageSize);
      raf.readFully(page.getData());
    } catch (final IOException e) {
      e.printStackTrace();
    }

  }

  public void remove() {
    file.delete();
  }

  public void removePages(final int count) {
    pages -= count;
    if (pages < 0)
      pages = 0;
    try {
      raf.setLength(pages * pageSize);
    } catch (final IOException e) {
      e.printStackTrace();
    }

  }

  public void syncAll() {

  }

  public void syncPages(final int startPage, final int count) {

  }

  public void writePage(final Page page) {
    try {
      raf.seek(page.getId() * pageSize);
      raf.write(page.getData());
    } catch (final IOException e) {
      e.printStackTrace();
    }
  }

}




Java Source Code List

android.util.FinitePool.java
android.util.Pool.java
android.util.PoolableManager.java
android.util.Poolable.java
android.util.Pools.java
android.util.SynchronizedPool.java
com.atteo.jello.DatabaseFile.java
com.atteo.jello.Expression.java
com.atteo.jello.JelloModule.java
com.atteo.jello.Jello.java
com.atteo.jello.PageUsage.java
com.atteo.jello.RecordPoolableManager.java
com.atteo.jello.Record.java
com.atteo.jello.StorableCollection.java
com.atteo.jello.StorableFactory.java
com.atteo.jello.StorableInfo.java
com.atteo.jello.Storable.java
com.atteo.jello.associations.BelongsTo.java
com.atteo.jello.associations.DatabaseField.java
com.atteo.jello.associations.HasMany.java
com.atteo.jello.index.BTree.java
com.atteo.jello.index.IndexFactory.java
com.atteo.jello.index.IndexModule.java
com.atteo.jello.index.Index.java
com.atteo.jello.index.PagePoolProxy.java
com.atteo.jello.klass.KlassManager.java
com.atteo.jello.klass.SimpleKlassManager.java
com.atteo.jello.schema.SchemaManagerFactory.java
com.atteo.jello.schema.SchemaManager.java
com.atteo.jello.schema.SchemaModule.java
com.atteo.jello.schema.Schema.java
com.atteo.jello.schema.SimpleSchemaManager.java
com.atteo.jello.schema.StorableWriter.java
com.atteo.jello.schema.VanillaStorableWriter.java
com.atteo.jello.space.AppendOnlyCacheNative.java
com.atteo.jello.space.AppendOnlyCache.java
com.atteo.jello.space.AppendOnly.java
com.atteo.jello.space.Hybrid.java
com.atteo.jello.space.NextFitHistogramNative.java
com.atteo.jello.space.NextFitHistogram.java
com.atteo.jello.space.NextFit.java
com.atteo.jello.space.SpaceManagerNative.java
com.atteo.jello.space.SpaceManagerPolicy.java
com.atteo.jello.space.SpaceManager.java
com.atteo.jello.space.SpaceModule.java
com.atteo.jello.space.VanillaHistogram.java
com.atteo.jello.store.HeaderPage.java
com.atteo.jello.store.ListPage.java
com.atteo.jello.store.PagePoolableManager.java
com.atteo.jello.store.PageSizeProvider.java
com.atteo.jello.store.Page.java
com.atteo.jello.store.PagedFileNative.java
com.atteo.jello.store.PagedFileRAF.java
com.atteo.jello.store.PagedFile.java
com.atteo.jello.store.StoreModule.java
com.atteo.jello.transaction.LockManager.java
com.atteo.jello.transaction.SimpleLockManager.java
com.atteo.jello.transaction.SimpleTransactionManager.java
com.atteo.jello.transaction.TransactionManager.java
com.atteo.jello.transaction.TransactionModule.java