Android Open Source - DKO Usage Stats






From Project

Back to project page DKO.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project DKO 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 org.kered.dko;
//w  w w. ja va  2s .co  m
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import javax.sql.DataSource;

import org.kered.dko.persistence.QuerySize;

class UsageStats {

  private static final int SIX_MONTHS_AGO = 1000 * 60 * 60 * 24 * 265 / 2;
  private static Map<Integer, QuerySize> cache = null;
  private static long median = 0;
  private static final Logger log = Logger.getLogger("org.kered.dko.UsageStats");

  public static long estimateRowCount(final Query<? extends Table> q1) {
    if (cache == null) init();
    final int hashCode = q1.hashCode();
    QuerySize qs = cache.get(hashCode);
    if (qs==null) {
      try {
        qs = new QuerySize();
        qs.setId((long) hashCode);
        qs.setHashCode(hashCode);
        qs.setRowCount(q1.count());
        qs.setLastSeen(System.currentTimeMillis());
        final Class<? extends Table> type = q1.getType();
        try {
          qs.setSchemaName(Util.getSchemaName(type));
          qs.setTableName(Util.getTableName(type));
        } catch (final Exception e) {
          log.warning("could not get schema or table info from type: "+ type +" --- "+ e);
        }
        qs.save();
      } catch (final SQLException e) {
        log.warning("could not get count (reverting to median): "+ e);
        return (long) (median + Math.random()*10);
      }
    }
    return qs.getRowCount();
  }

  private synchronized static void init() {
    if (cache != null) return;
    try {
      //DataSource ds = (DataSource) Class.forName("org.kered.dko.persistence.Util").getMethod("getDS", null).invoke(null);
      cache = QuerySize.ALL.where(
          QuerySize.LAST_SEEN.gt(System.currentTimeMillis()
              - SIX_MONTHS_AGO)).mapBy(QuerySize.HASH_CODE);
      final List<QuerySize> values = new ArrayList<QuerySize>(cache.values());
      final int count = values.size();
      final long[] rowCounts = new long[count];
      for (int i = 0; i < count; ++i) {
        rowCounts[i] = values.get(i).getRowCount();
      }
      Arrays.sort(rowCounts);
      median = median(rowCounts);
    } catch (final SQLException e) {
      e.printStackTrace();
    }
  }

  private static long median(final long[] a) {
    if (a.length==0) return 0;
    final int m = a.length / 2;
    if (a.length%2 == 1) return a[m];
    else return (a[m-1] + a[m]) / 2;
  }

}




Java Source Code List

.HelloWorld.java
org.kered.contactlensfinder.DB.java
org.kered.contactlensfinder.MainActivity.java
org.kered.contactlensfinder.ViewManufacturersActivity.java
org.kered.contactlensfinder.ViewProductsActivity.java
org.kered.contactlensfinder.ViewPropertiesActivity.java
org.kered.dko.AbstractQuery.java
org.kered.dko.Bulk.java
org.kered.dko.CSV.java
org.kered.dko.ClosableIterator.java
org.kered.dko.Condition.java
org.kered.dko.Constants.java
org.kered.dko.Context.java
org.kered.dko.DBQuery.java
org.kered.dko.DBRowIterator.java
org.kered.dko.Diff.java
org.kered.dko.DualIterator.java
org.kered.dko.Expression.java
org.kered.dko.Field.java
org.kered.dko.FilteringQuery.java
org.kered.dko.Function.java
org.kered.dko.InMemoryQuery.java
org.kered.dko.Join.java
org.kered.dko.LazyCacheIterable.java
org.kered.dko.LocalJoin.java
org.kered.dko.M.java
org.kered.dko.Main.java
org.kered.dko.MatryoshkaQuery.java
org.kered.dko.PeekableClosableIterator.java
org.kered.dko.PeekableIterator.java
org.kered.dko.QueryAddField.java
org.kered.dko.QueryFactory.java
org.kered.dko.QuerySnapshot.java
org.kered.dko.Query.java
org.kered.dko.SQLFunction.java
org.kered.dko.SelectAsMapIterable.java
org.kered.dko.SelectFromOAI.java
org.kered.dko.SelectSingleColumn.java
org.kered.dko.SoftJoinUtil.java
org.kered.dko.SoftJoin.java
org.kered.dko.SqlContext.java
org.kered.dko.Statistics.java
org.kered.dko.SubQueryField.java
org.kered.dko.TableInfo.java
org.kered.dko.TableWrapper.java
org.kered.dko.Table.java
org.kered.dko.TemporaryTableFactory.java
org.kered.dko.TmpTableBuilder.java
org.kered.dko.Tuple.java
org.kered.dko.UsageMonitor.java
org.kered.dko.UsageStats.java
org.kered.dko.Util.java
org.kered.dko.ant.ClassGenerator.java
org.kered.dko.ant.CodeGeneratorBase.java
org.kered.dko.ant.CodeGenerator.java
org.kered.dko.ant.DataSourceGenerator.java
org.kered.dko.ant.GsonGenerator.java
org.kered.dko.ant.JoinGenerator.java
org.kered.dko.ant.Main.java
org.kered.dko.ant.SchemaExtractorBase.java
org.kered.dko.ant.SchemaExtractor.java
org.kered.dko.ant.Util.java
org.kered.dko.datasource.CheapConnectionPoolingDataSource.java
org.kered.dko.datasource.ConnectionCountingDataSource.java
org.kered.dko.datasource.JDBCDriverDataSource.java
org.kered.dko.datasource.MatryoshkaDataSource.java
org.kered.dko.datasource.MirroredDataSource.java
org.kered.dko.datasource.ReflectedDataSource.java
org.kered.dko.datasource.SingleConnectionDataSource.java
org.kered.dko.datasource.SingleThreadedDataSource.java
org.kered.dko.datasource.UnClosableConnection.java
org.kered.dko.datasource.Util.java
org.kered.dko.json.CDL.java
org.kered.dko.json.CookieList.java
org.kered.dko.json.Cookie.java
org.kered.dko.json.HTTPTokener.java
org.kered.dko.json.HTTP.java
org.kered.dko.json.JSONArray.java
org.kered.dko.json.JSONException.java
org.kered.dko.json.JSONML.java
org.kered.dko.json.JSONObject.java
org.kered.dko.json.JSONString.java
org.kered.dko.json.JSONStringer.java
org.kered.dko.json.JSONTokener.java
org.kered.dko.json.JSONWriter.java
org.kered.dko.json.Pickle.java
org.kered.dko.json.XMLTokener.java
org.kered.dko.json.XML.java
org.kered.dko.junk.DerbyLoadTestSchema.java
org.kered.dko.junk.OracleCreateTestUser.java
org.kered.dko.junk.OracleLoadTestSchema.java
org.kered.dko.persistence.Util.java
org.kered.dko.util.DumpDatabase.java
sakila.Example0.java
sakila.Example1.java
sakila.Example2.java
sakila.Util.java