Android Open Source - DKO Tmp Table Builder






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;
//from  w w w. j  a va2  s  . co  m
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.sql.DataSource;

import org.kered.dko.Field.FK;

class TmpTableBuilder {

  private final String tmpTableName = "NOSCO_"+ Math.round(Math.random() * Integer.MAX_VALUE);
  private final List<Field<?>> fields;
  private final List<Object[]> rows = new ArrayList<Object[]>();

  private final Table table = new Table() {

    @Override
    protected void __NOSCO_PRIVATE_preExecute(final SqlContext context, final Connection conn) throws SQLException {
      final StringBuilder sbCreate = new StringBuilder();
      if (context.dbType == Constants.DB_TYPE.SQLSERVER) {
        sbCreate.append("CREATE TABLE #"+ tmpTableName);
      } else {
        sbCreate.append("CREATE TABLE "+ tmpTableName);
      }
      sbCreate.append(" (");
      final StringBuilder sbPS = new StringBuilder();
      sbPS.append("insert into "+ tmpTableName +" values (");
      for (int i=0; i<fields.size(); ++i) {
        final Field<?> field = fields.get(i);
        sbCreate.append(field.NAME +" "+ field.SQL_TYPE +",");
        sbPS.append("?,");
      }
      sbCreate.delete(sbCreate.length()-1, sbCreate.length());
      sbCreate.append(")");
      sbPS.delete(sbPS.length()-1, sbPS.length());
      sbPS.append(")");
      Statement stmt = null;
      PreparedStatement ps = null;
      try {
        stmt = conn.createStatement();
        final String sqlCreate = sbCreate.toString();
        final String sqlPS = sbPS.toString();
        Util.log(sqlCreate, null);
        stmt.execute(sqlCreate);
        ps = conn.prepareStatement(sqlPS);
        int i = 0;
        int added = 0;
        for (final Object[] row : rows) {
          ++i;
          for (int j=0; j<row.length; ++j) {
            final Object t = row[j];
            Util.setBindingWithTypeFixes(ps, j+1, t);
          }
          ps.addBatch();
          if (i%64 == 0) for (final int x : ps.executeBatch()) added += x;
        }
        if (i%64 != 0) {
          for (final int x : ps.executeBatch()) {
            added += x;
          }
        }
        System.err.println("TmpTableBuilder added "+ added);
      } catch (final SQLException e) {
        throw e;
      } finally {
        try {
          if (stmt!=null && !stmt.isClosed()) stmt.close();
        } catch (final SQLException e) {
          e.printStackTrace();
        }
        try {
          if (ps!=null && !ps.isClosed()) ps.close();
        } catch (final SQLException e) {
          e.printStackTrace();
        }
      }



    }

    @Override
    protected void __NOSCO_PRIVATE_postExecute(final SqlContext context, final Connection conn) throws SQLException {
      if (context.dbType == Constants.DB_TYPE.HSQL) return;
      if (conn!=null && !conn.isClosed()) {
        Statement stmt = null;
        try {
          stmt = conn.createStatement();
          final String sql = "DROP TABLE "+ tmpTableName;
          Util.log(sql, null);
          stmt.execute(sql);
        } catch (final SQLException e) {
          throw e;
        } finally {
          try {
            if (stmt!=null && !stmt.isClosed()) stmt.close();
          } catch (final SQLException e) {
            e.printStackTrace();
          }
        }
      }
    }

    @Override
    public String SCHEMA_NAME() {
      return null;
    }

    @Override
    public String TABLE_NAME() {
      return tmpTableName;
    }

    @Override
    public List<Field<?>> fields() {
      return fields;
    }

    @Override
    protected FK[] FKS() {
      return new FK[0];
    }

    @Override
    public <S> S get(final Expression.Select<S> field) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public <S> Table set(final Expression.Select<S> field, final S value) {
      return this;
      // TODO Auto-generated method stub

    }

    @Override
    public boolean insert() throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean update() throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean delete() throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean save() throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean exists() throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean insert(final DataSource ds) throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean update(final DataSource ds) throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean delete(final DataSource ds) throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean save(final DataSource ds) throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    public boolean exists(final DataSource ds) throws SQLException {
      // TODO Auto-generated method stub
      return false;
    }

    @Override
    protected Object __NOSCO_PRIVATE_mapType(final Object o) {
      return null;
    }

  };

  TmpTableBuilder(final Field<?>... fields) {
    final List<Field<?>> tmp = new ArrayList<Field<?>>();
    for (final Field<?> f : fields) tmp.add(f);
    this.fields = Collections.unmodifiableList(tmp);
    final StringBuilder sb = new StringBuilder();
  }

  Table buildTable() {
    return table ;
  }

  void addRow(final Object... row) {
    rows.add(row);
  }

  void clear() {
    rows.clear();
  }

}




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