Changeset 3664


Ignore:
Timestamp:
Aug 14, 2007, 2:50:43 PM (16 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #722: Create DynamicReporterQuery?

Location:
trunk/src
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/migrate/net/sf/basedb/clients/migrate/ReporterProxy.java

    r2614 r3664  
    4343  private final int id;
    4444
     45  ReporterProxy(int id)
     46  {
     47    this.id = id;
     48  }
     49 
    4550  ReporterProxy(ReporterData reporter)
    4651  {
  • trunk/src/clients/migrate/net/sf/basedb/clients/migrate/ReporterTransfer.java

    r3663 r3664  
    2626
    2727import net.sf.basedb.core.BaseException;
    28 import net.sf.basedb.core.DataQuery;
    29 import net.sf.basedb.core.DataResultIterator;
     28import net.sf.basedb.core.DatabaseException;
    3029import net.sf.basedb.core.DbControl;
     30import net.sf.basedb.core.DynamicReporterQuery;
     31import net.sf.basedb.core.DynamicResultIterator;
    3132import net.sf.basedb.core.Reporter;
    3233import net.sf.basedb.core.ReporterBatcher;
    3334import net.sf.basedb.core.data.ReporterData;
    34 import net.sf.basedb.core.query.Hql;
     35import net.sf.basedb.core.query.Dynamic;
    3536import net.sf.basedb.core.query.Orders;
     37import net.sf.basedb.core.query.SqlResult;
    3638import net.sf.basedb.util.timer.PerformanceTimer;
    3739
     
    4648BASE 2.
    4749
    48 @author Gregory, Martin
     50@author Gregory, Martin, Nicklas
    4951@version 2.0
    5052@base.modified $Date$
    5153*/
    5254
    53 public class ReporterTransfer extends Transfer
     55public class ReporterTransfer
     56  extends Transfer
    5457{
    5558 
     
    140143      int batchSize = getBatchSize();
    141144
    142       DataQuery<ReporterData> query = Reporter.getQuery();
    143       query.order(Orders.asc(Hql.property("id")));
     145      DynamicReporterQuery query = Reporter.getDynamicQuery();
     146      query.select(Dynamic.selectReporter("id"));
     147      query.select(Dynamic.selectReporter("externalId"));
     148      query.order(Orders.asc(Dynamic.reporter("id")));
    144149      query.setMaxResults(batchSize);
    145150      while (start < count)
     
    214219  }
    215220
    216   private void mapMigratedReporters(DbControl dc, DataQuery<ReporterData> query)
    217   {
    218     DataResultIterator<ReporterData> result = null;
     221  private void mapMigratedReporters(DbControl dc, DynamicReporterQuery query)
     222  {
     223//    DataResultIterator<ReporterData> result = null;
     224    DynamicResultIterator result = null;
    219225    PerformanceTimer timer = new PerformanceTimer(
    220226      "iterate()", "hasNext()", "next()", "HashMap.get()", "HashMap.put()", "other");
     
    227233      {
    228234        timer.stopStart(1, 2);
    229         ReporterData reporter = result.next();
     235        SqlResult reporter = result.next();
     236        String externalId = reporter.getString(2);
    230237        timer.stopStart(2, 3);
    231         Integer base1Id = externalIdMap.get(reporter.getExternalId());
     238        Integer base1Id = externalIdMap.get(externalId);
    232239        timer.stopStart(3, 4);
    233         reporterMap.put(base1Id, new ReporterProxy(reporter));
     240        reporterMap.put(base1Id, new ReporterProxy(reporter.getInt(1)));
    234241        timer.stopStart(4, 5);
    235242        progress.increase();
    236243        if (log.isDebugEnabled())
    237244        {
    238           log.debug("Reporter: " + reporter.getExternalId() +
     245          log.debug("Reporter: " + externalId +
    239246            " has been mapped to BASE 1 ID="+base1Id);
    240247        }
     
    246253        log.info("\n"+timer.toString());
    247254      }
     255    }
     256    catch (SQLException ex)
     257    {
     258      throw new DatabaseException(ex);
    248259    }
    249260    finally
  • trunk/src/core/net/sf/basedb/core/AbstractEntityQuery.java

    r2722 r3664  
    389389 
    390390  /**
     391    If queries are using the stateless Hibernate session or the regular
     392    session.
     393    @return TRUE if the stateless session is used, FALSE otherwise
     394    @since 2.4
     395  */
     396  protected boolean isStateless()
     397  {
     398    return stateless;
     399  }
     400 
     401  /**
    391402    Enable runtime query filters for the query.
    392403    @see #disableFilters(DbControl)
  • trunk/src/core/net/sf/basedb/core/DataQuery.java

    r2474 r3664  
    9090    ScrollIterator<I> result = HibernateUtil.loadIterator(dataClass,  getMainHqlQuery(dc));
    9191    disableFilters(dc);
    92     return new DataResultIterator<I>(result, dc, dataClass, totalCount);
     92    return new DataResultIterator<I>(result, dc.getSessionControl(),
     93        isStateless() ? null : dc.getHibernateSession(), dataClass, totalCount);
    9394  }
    94  
    95  
    9695
    9796}
  • trunk/src/core/net/sf/basedb/core/DataResultIterator.java

    r2474 r3664  
    3131  of iterator is only used for batchable items like reporter and raw data.
    3232  It is expected that the query uses the stateless Hibernate session available
    33   from {@link DbControl#getStatelessSession()}. If
    34   The returned objects are automatically disconnected from the Hibernate session
     33  from {@link DbControl#getStatelessSession()}. If not,
     34  the returned objects are automatically disconnected from the Hibernate session
    3535  to avoid memory problems and bypassing permission checks.
    3636 
     
    4949
    5050  /**
    51     The DbControl that was used in the query, if it used the regular
    52     Hibernate session, null otherwise.
     51    The Hibernate Session that was used in the query, null if a stateless
     52    session is used.
    5353  */
    54   private final DbControl dc;
     54  private final org.hibernate.Session session;
    5555
     56  /**
     57    The SessionControl
     58  */
    5659  private final SessionControl sc;
    5760 
     
    7174  private final Item itemType;
    7275
    73   DataResultIterator(ScrollIterator<I> data, DbControl dc, Class<I> dataClass, long totalCount)
     76  DataResultIterator(ScrollIterator<I> data, SessionControl sc, org.hibernate.Session session,
     77    Class<I> dataClass, long totalCount)
    7478  {
    7579    assert data != null : "data == null";
    7680    this.data = data;
    77     this.dc = dc;
    78     this.sc = dc.getSessionControl();
     81    this.sc = sc;
     82    this.session = session;
    7983    this.dataClass = dataClass;
    8084    this.itemType = Item.fromDataClass(dataClass);
     
    116120    sc.updateLastAccess();
    117121    I dataObject = data.next();
    118     if (dc != null)
     122    if (session != null)
    119123    {
    120       HibernateUtil.evictData(dc.getHibernateSession(), dataObject);
     124      HibernateUtil.evictData(session, dataObject);
    121125    }
    122126    return dataObject;
  • trunk/src/core/net/sf/basedb/core/Reporter.java

    r3471 r3664  
    129129
    130130  /**
     131    Get a dynamic query object configured to retrieve reporter information.
     132    You must add columns/expressions to select with
     133    {@link net.sf.basedb.core.query.Query#select(net.sf.basedb.core.query.Select)}
     134    @return A {@link DynamicReporterQuery} object
     135    @since 2.4
     136  */
     137  public static DynamicReporterQuery getDynamicQuery()
     138  {
     139    return new DynamicReporterQuery();
     140  }
     141 
     142  /**
    131143    Get the reporter type item from a reporter data object.
    132144   
Note: See TracChangeset for help on using the changeset viewer.