Android Open Source - Jello Vanilla Histogram






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.space;
/*from ww w  .  j  av a2s  .c om*/
import java.util.ArrayList;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;

@Singleton
public class VanillaHistogram implements NextFitHistogram {
  private final short classSize;
  private final ArrayList<Integer> witnesses;
  private final ArrayList<Integer> counts;
  private int count;
  private final int histogramClasses;

  @Inject
  public VanillaHistogram(@Named("pageSize") final short pageSize,
      @Named("nextFitHistogramClasses") int histogramClasses) {

    if (pageSize % histogramClasses != 0)
      throw new IllegalArgumentException(
          "histogramClasses should divide pageSize");

    classSize = (short) (pageSize / histogramClasses);

    histogramClasses++; // empty pages have a separate class

    this.histogramClasses = histogramClasses;
    count = 0;

    witnesses = new ArrayList<Integer>();
    counts = new ArrayList<Integer>();

    for (int i = 0; i < histogramClasses; i++) {
      witnesses.add(-1);
      counts.add(0);
    }

  }

  public short getClassSize() {
    return classSize;
  }

  public int getWitness(final short freeSpace) {
    int loc = classFor(freeSpace);
    loc++;
    if (loc == histogramClasses)
      loc = histogramClasses - 1;

    boolean found = false;

    while (loc < histogramClasses) {
      if (counts.get(loc) > 0) {
        found = true;
        final int w = witnesses.get(loc);
        if (w != -1)
          return w;
      }
      loc++;
    }

    if (found == false)
      return NextFitHistogram.NO_PAGE;

    return NextFitHistogram.NO_WITNESS;
  }

  public void update(final int id, final short previousFreeSpace,
      final short freeSpace) {
    if (previousFreeSpace != -1) {
      final int loc = classFor(previousFreeSpace);
      counts.set(loc, counts.get(loc) - 1);
      if (witnesses.get(loc) == id)
        witnesses.set(loc, -1);

      count--;
    }

    if (freeSpace == -1)
      return;

    final int loc = classFor(freeSpace);
    counts.set(loc, counts.get(loc) + 1);
    witnesses.set(loc, id);
    count++;
  }

  private int classFor(final int freeSpace) {
    return freeSpace / classSize;
  }
}




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