Subversion Repositories DevTools

Rev

Rev 4212 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4212 Rev 4280
Line 144... Line 144...
144
  private int mRunLevelIndex = -1;
144
  private int mRunLevelIndex = -1;
145
 
145
 
146
  /**collection of ReleaseConfig objects
146
  /**collection of ReleaseConfig objects
147
   * @attribute
147
   * @attribute
148
   */
148
   */
149
  private Vector<ReleaseConfig> mReleaseConfigCollection = new Vector<ReleaseConfig>();
149
  public Vector<ReleaseConfig> mReleaseConfigCollection = new Vector<ReleaseConfig>();
150
 
150
 
151
  /**database connection string
151
  /**database connection string
152
   * @attribute
152
   * @attribute
153
   */
153
   */
154
  private static String mConnectionString = new String();
154
  private static String mConnectionString = new String();
Line 216... Line 216...
216
    {
216
    {
217
      String sql = new String("");
217
      String sql = new String("");
218
      
218
      
219
      if ( daemonMode )
219
      if ( daemonMode )
220
      {
220
      {
221
        sql = "select gm.gbe_value " +
221
        sql = "select gm.gbe_value" +
222
              "from release_manager.release_config rc, release_manager.gbe_machtype gm " +
222
              " from release_manager.release_config rc, release_manager.gbe_machtype gm" +
223
              "where rc.rtag_id=" + baseline + " and gm.gbe_id=rc.gbe_id";
223
              " where rc.rtag_id=" + baseline + " and gm.gbe_id=rc.gbe_id";
224
      }
224
      }
225
      else
225
      else
226
      {
226
      {
227
        sql = 
-
 
228
        "select gm.gbe_value " +
227
        sql = "select gm.gbe_value" +
229
          "from deployment_manager.boms b, release_manager.release_config rc, release_manager.gbe_machtype gm " +
228
              " from deployment_manager.boms b, release_manager.release_config rc, release_manager.gbe_machtype gm" +
230
          "where b.bom_id=" + baseline +
229
              " where b.bom_id=" + baseline +  " and gm.gbe_id=rc.gbe_id" +
231
          " and rc.rtag_id=b.rtag_id_fk "+
230
              " and rc.rtag_id=b.rtag_id_fk ";
232
          " and gm.gbe_id=rc.gbe_id";
-
 
233
      }
231
      }
234
 
232
 
235
      try
233
      try
236
      {
234
      {
237
        CallableStatement stmt = mConnection.prepareCall(sql);
235
        CallableStatement stmt = mConnection.prepareCall(sql);
Line 1766... Line 1764...
1766
          
1764
          
1767
          // get planned package build info
1765
          // get planned package build info
1768
          mLogger.warn("queryPackageVersions: stmt3");
1766
          mLogger.warn("queryPackageVersions: stmt3");
1769
          CallableStatement stmt3 = mConnection.prepareCall(
1767
          CallableStatement stmt3 = mConnection.prepareCall(
1770
          "select pl.pv_id, bm.bm_name, bsa.bsa_name, pv.modified_stamp " +
1768
          "select pl.pv_id, bm.bm_name, bsa.bsa_name, pv.modified_stamp " +
-
 
1769
          "from release_manager.planned pl," +
-
 
1770
          "     release_manager.package_versions pv," +
-
 
1771
          "     release_manager.package_build_info pbi," +
-
 
1772
          "     release_manager.build_machines bm," +
1771
          "from release_manager.planned pl, release_manager.package_versions pv, release_manager.package_build_info pbi, release_manager.build_machines bm, release_manager.build_standards_addendum bsa " +
1773
          "     release_manager.build_standards_addendum bsa " +
-
 
1774
          "where pl.rtag_id=" + baseline + 
1772
          "where pl.rtag_id=" + baseline + " and pv.build_type='A' and pv.dlocked='A' " +
1775
          "     and pv.build_type='A' and pv.dlocked='A' " +
-
 
1776
          "     and pv.pv_id = pl.pv_id" +
-
 
1777
          "     and pbi.pv_id=pv.pv_id" +
-
 
1778
          "     and bm.bm_id=pbi.bm_id" +
1773
          "and pv.pv_id = pl.pv_id and pbi.pv_id=pv.pv_id and bm.bm_id=pbi.bm_id and bsa.bsa_id=pbi.bsa_id " +
1779
          "     and bsa.bsa_id=pbi.bsa_id " +
1774
          "order by pv.modified_stamp"
1780
          "order by pv.modified_stamp"
1775
          );
1781
          );
1776
          ResultSet rset3 = stmt3.executeQuery();
1782
          ResultSet rset3 = stmt3.executeQuery();
1777
             
1783
             
1778
          while( rset3.next() )
1784
          while( rset3.next() )
Line 1923... Line 1929...
1923
 
1929
 
1924
          // view based
1930
          // view based
1925
          mLogger.warn("queryPackageVersions: stmt5");
1931
          mLogger.warn("queryPackageVersions: stmt5");
1926
          CallableStatement stmt5 = mConnection.prepareCall(
1932
          CallableStatement stmt5 = mConnection.prepareCall(
1927
          "select pl.pv_id, u.user_email, pv.modified_stamp " +
1933
          "select pl.pv_id, u.user_email, pv.modified_stamp " +
-
 
1934
          " from release_manager.planned pl, " +
-
 
1935
          "      release_manager.release_tags rt, " +
-
 
1936
          "      release_manager.package_versions pv, " +
1928
          "from release_manager.planned pl, release_manager.release_tags rt, release_manager.package_versions pv, release_manager.autobuild_failure af, release_manager.members_group mg, release_manager.users u " +
1937
          "      release_manager.autobuild_failure af, " +
-
 
1938
          "      release_manager.members_group mg, " +
-
 
1939
          "      release_manager.users u " +
-
 
1940
          " where pl.rtag_id=" + baseline + 
-
 
1941
          "      and rt.rtag_id=pl.rtag_id" +
1929
          "where pl.rtag_id=" + baseline + " and rt.rtag_id=pl.rtag_id and pv.build_type='A' and pv.dlocked='A' " +
1942
          "      and pv.build_type='A' and pv.dlocked='A' " +
-
 
1943
          "      and pv.pv_id = pl.pv_id " +
-
 
1944
          "      and af.view_id=pl.view_id " +
1930
          "and pv.pv_id = pl.pv_id and af.view_id=pl.view_id and mg.group_email_id=af.group_email_id and u.user_id=mg.user_id and af.proj_id=rt.proj_id " +
1945
          "      and mg.group_email_id=af.group_email_id " +
-
 
1946
          "      and u.user_id=mg.user_id " +
-
 
1947
          "      and af.proj_id=rt.proj_id " +
1931
          "order by pv.modified_stamp"
1948
          " order by pv.modified_stamp"
1932
          );
1949
          );
1933
          ResultSet rset5 = stmt5.executeQuery();
1950
          ResultSet rset5 = stmt5.executeQuery();
1934
              
1951
              
1935
          while( rset5.next() )
1952
          while( rset5.next() )
1936
          {
1953
          {
Line 2270... Line 2287...
2270
           
2287
           
2271
          // get released package build info
2288
          // get released package build info
2272
          mLogger.warn("queryPackageVersions: stmt10");
2289
          mLogger.warn("queryPackageVersions: stmt10");
2273
          CallableStatement stmt10 = mConnection.prepareCall(
2290
          CallableStatement stmt10 = mConnection.prepareCall(
2274
          "select rc.pv_id, bm.bm_name, bsa.bsa_name " +
2291
          "select rc.pv_id, bm.bm_name, bsa.bsa_name " +
-
 
2292
          "from release_manager.release_content rc," +
-
 
2293
          "     release_manager.package_versions pv," +
-
 
2294
          "     release_manager.package_build_info pbi," +
-
 
2295
          "     release_manager.build_machines bm," +
2275
          "from release_manager.release_content rc, release_manager.package_versions pv, release_manager.package_build_info pbi, release_manager.build_machines bm, release_manager.build_standards_addendum bsa " +
2296
          "     release_manager.build_standards_addendum bsa " +
2276
          "where rc.rtag_id=" + baseline +
2297
          "where rc.rtag_id=" + baseline +
-
 
2298
          "     and pv.pv_id = rc.pv_id" +
-
 
2299
          "     and pbi.pv_id=pv.pv_id" +
-
 
2300
          "     and bm.bm_id=pbi.bm_id" +
2277
          " and pv.pv_id = rc.pv_id and pbi.pv_id=pv.pv_id and bm.bm_id=pbi.bm_id and bsa.bsa_id=pbi.bsa_id " +
2301
          "     and bsa.bsa_id=pbi.bsa_id " +
2278
          "order by rc.pv_id"
2302
          "order by rc.pv_id"
2279
          );
2303
          );
2280
          ResultSet rset10 = stmt10.executeQuery();
2304
          ResultSet rset10 = stmt10.executeQuery();
2281
              
2305
              
2282
          while( rset10.next() )
2306
          while( rset10.next() )
Line 2700... Line 2724...
2700
  
2724
  
2701
                // get planned package build info
2725
                // get planned package build info
2702
                mLogger.warn("queryPackageVersions: stmt17");
2726
                mLogger.warn("queryPackageVersions: stmt17");
2703
                CallableStatement stmt17 = mConnection.prepareCall(
2727
                CallableStatement stmt17 = mConnection.prepareCall(
2704
                "select bm.bm_name, bsa.bsa_name " +
2728
                "select bm.bm_name, bsa.bsa_name " +
-
 
2729
                "from release_manager.work_in_progress wip," +
-
 
2730
                "     release_manager.package_versions pv," +
-
 
2731
                "     release_manager.package_build_info pbi," +
-
 
2732
                "     release_manager.build_machines bm," +
2705
                "from release_manager.work_in_progress wip, release_manager.package_versions pv, release_manager.package_build_info pbi, release_manager.build_machines bm, release_manager.build_standards_addendum bsa " +
2733
                "     release_manager.build_standards_addendum bsa " +
2706
                "where wip.rtag_id=" + baseline +
2734
                "where wip.rtag_id=" + baseline +
2707
                " and wip.pv_id=" + testBuildPvId +
2735
                "   and wip.pv_id=" + testBuildPvId +
2708
                " and pv.pv_id=" + testBuildPvId +
2736
                "   and pv.pv_id=" + testBuildPvId +
-
 
2737
                "   and pbi.pv_id=pv.pv_id" +
-
 
2738
                "   and bm.bm_id=pbi.bm_id" +
2709
                " and pbi.pv_id=pv.pv_id and bm.bm_id=pbi.bm_id and bsa.bsa_id=pbi.bsa_id "
2739
                "   and bsa.bsa_id=pbi.bsa_id"
2710
                );
2740
                );
2711
                ResultSet rset17 = stmt17.executeQuery();
2741
                ResultSet rset17 = stmt17.executeQuery();
2712
                   
2742
                   
2713
                while( rset17.next() )
2743
                while( rset17.next() )
2714
                {
2744
                {
Line 3294... Line 3324...
3294
    {
3324
    {
3295
      try
3325
      try
3296
      {
3326
      {
3297
        CallableStatement stmt = mConnection.prepareCall(
3327
        CallableStatement stmt = mConnection.prepareCall(
3298
        "select bm.bm_name, bsa.bsa_name " +
3328
        "select bm.bm_name, bsa.bsa_name " +
-
 
3329
        "from release_manager.package_versions pv," +
-
 
3330
        "     release_manager.package_build_info pbi," +
-
 
3331
        "     release_manager.build_machines bm," +
3299
        "from release_manager.package_versions pv, release_manager.package_build_info pbi, release_manager.build_machines bm, release_manager.build_standards_addendum bsa " +
3332
        "     release_manager.build_standards_addendum bsa " +
-
 
3333
        "where pv.pv_id=" + p.mId + 
-
 
3334
        "   and pbi.pv_id=pv.pv_id" +
-
 
3335
        "   and bm.bm_id=pbi.bm_id" +
3300
        "where pv.pv_id=" + p.mId + " and pbi.pv_id=pv.pv_id and bm.bm_id=pbi.bm_id and bsa.bsa_id=pbi.bsa_id " +
3336
        "   and bsa.bsa_id=pbi.bsa_id " +
3301
        "order by pv.pv_id"
3337
        "order by pv.pv_id"
3302
        );
3338
        );
3303
        ResultSet rset = stmt.executeQuery();
3339
        ResultSet rset = stmt.executeQuery();
3304
         
3340
         
3305
        while( rset.next() )
3341
        while( rset.next() )
Line 4335... Line 4371...
4335
    }
4371
    }
4336
  }
4372
  }
4337
 
4373
 
4338
  /**Representation of a row in the RELEASE_CONFIG table
4374
  /**Representation of a row in the RELEASE_CONFIG table
4339
   */
4375
   */
4340
  private class ReleaseConfig
-
 
4341
  {
-
 
4342
    /**rtag_id column value
-
 
4343
     * @attribute
-
 
4344
     */
-
 
4345
    private int mRtag_id;
-
 
4346
 
-
 
4347
    /**rcon_id column value
-
 
4348
     * @attribute
-
 
4349
     */
-
 
4350
    private int mRcon_id;
-
 
4351
 
-
 
4352
    /**daemon_mode column value
-
 
4353
     * @attribute
-
 
4354
     */
-
 
4355
    private char mDaemon_mode;
-
 
4356
 
-
 
4357
    /**constructor
-
 
4358
     */
-
 
4359
    ReleaseConfig(int rtag_id, int rcon_id, char daemon_mode)
-
 
4360
    {
-
 
4361
      mLogger.debug("ReleaseConfig rtag_id " + rtag_id + " rcon_id " + rcon_id + " daemon_mode " + daemon_mode );
-
 
4362
      mRtag_id = rtag_id;
-
 
4363
      mRcon_id = rcon_id;
-
 
4364
      mDaemon_mode = daemon_mode;
-
 
4365
    }
-
 
4366
 
-
 
4367
    /**accessor method
-
 
4368
     */
-
 
4369
    int get_rtag_id()
-
 
4370
    {
-
 
4371
      mLogger.debug("get_rtag_id");
-
 
4372
      mLogger.info("get_rtag_id returned " + mRtag_id);
-
 
4373
      return mRtag_id;
-
 
4374
    }
-
 
4375
 
-
 
4376
    /**accessor method
-
 
4377
     */
-
 
4378
    int get_rcon_id()
-
 
4379
    {
-
 
4380
      mLogger.debug("get_rcon_id");
-
 
4381
      mLogger.info("get_rcon_id returned " + mRcon_id);
-
 
4382
      return mRcon_id;
-
 
4383
    }
-
 
4384
 
-
 
4385
    /**accessor method
-
 
4386
     */
-
 
4387
    char get_daemon_mode()
-
 
4388
    {
-
 
4389
      mLogger.debug("get_daemon_mode");
-
 
4390
      mLogger.info("get_daemon_mode returned " + mDaemon_mode);
-
 
4391
      return mDaemon_mode;
-
 
4392
    }
-
 
4393
  }
-
 
4394
 
4376
 
4395
  /**Representation of a row in the RUN_LEVEL table
4377
  /**Representation of a row in the RUN_LEVEL table
4396
   */
4378
   */
4397
  private class RunLevel
4379
  private class RunLevel
4398
  {
4380
  {
4399
    /**rcon_id column value
4381
    /**rcon_id column value
Line 4416... Line 4398...
4416
     */
4398
     */
4417
    private boolean mPause;
4399
    private boolean mPause;
4418
 
4400
 
4419
    /**constructor
4401
    /**constructor
4420
     */
4402
     */
4421
    RunLevel(int rcon_id, String current_build_file, int current_run_level, 
4403
    RunLevel(int rcon_id, String current_build_file, int current_run_level, boolean pause)
4422
             boolean pause)
-
 
4423
    {
4404
    {
4424
      mLogger.debug("RunLevel");
4405
      mLogger.debug("RunLevel");
4425
      mRcon_id = rcon_id;
4406
      mRcon_id = rcon_id;
4426
      mCurrent_build_file = current_build_file;
4407
      mCurrent_build_file = current_build_file;
4427
      mCurrent_run_level = current_run_level;
4408
      mCurrent_run_level = current_run_level;
Line 4704... Line 4685...
4704
    
4685
    
4705
    mLogger.info("getFirstReleaseConfig 2 returning " + retVal);
4686
    mLogger.info("getFirstReleaseConfig 2 returning " + retVal);
4706
    return retVal;
4687
    return retVal;
4707
  }
4688
  }
4708
 
4689
 
4709
  /**returns true if the mRunLevelCollection is not empty and returns the rcon_id and current_run_level of the first element
-
 
4710
   */
-
 
4711
  public boolean getFirstRunLevel(MutableInt rcon_id, 
-
 
4712
                                  MutableInt current_run_level)
-
 
4713
  {
-
 
4714
    mLogger.debug("getFirstRunLevel");
-
 
4715
    boolean retVal = true;
-
 
4716
    
-
 
4717
    try
-
 
4718
    {
-
 
4719
      mRunLevelIndex = 0;
-
 
4720
      RunLevel rl = mRunLevelCollection.get( mRunLevelIndex );
-
 
4721
      rcon_id.value = rl.get_rcon_id();
-
 
4722
      current_run_level.value = rl.get_current_run_level();
-
 
4723
    }
-
 
4724
    catch( ArrayIndexOutOfBoundsException e )
-
 
4725
    {
-
 
4726
      retVal = false;
-
 
4727
    }
-
 
4728
    
-
 
4729
    mLogger.info("getFirstRunLevel returning " + retVal);
-
 
4730
    return retVal;
-
 
4731
  }
-
 
4732
 
-
 
4733
  /**returns true if the mReleaseConfigCollection contains a next element and returns the rcon_id of the next element
4690
  /**returns true if the mReleaseConfigCollection contains a next element and returns the rcon_id of the next element
4734
   */
4691
   */
4735
  public boolean getNextReleaseConfig(MutableInt rcon_id)
4692
  public boolean getNextReleaseConfig(MutableInt rcon_id)
4736
  {
4693
  {
4737
    mLogger.debug("getNextReleaseConfig 1");
4694
    mLogger.debug("getNextReleaseConfig 1");
Line 4776... Line 4733...
4776
    
4733
    
4777
    mLogger.info("getNextReleaseConfig 2 returning " + retVal);
4734
    mLogger.info("getNextReleaseConfig 2 returning " + retVal);
4778
    return retVal;
4735
    return retVal;
4779
  }
4736
  }
4780
 
4737
 
-
 
4738
  /**returns true if the mRunLevelCollection is not empty and returns the rcon_id and current_run_level of the first element
-
 
4739
   */
-
 
4740
  public boolean getFirstRunLevel(MutableInt rcon_id, 
-
 
4741
                                  MutableInt current_run_level)
-
 
4742
  {
-
 
4743
    mLogger.debug("getFirstRunLevel");
-
 
4744
    boolean retVal = true;
-
 
4745
    
-
 
4746
    try
-
 
4747
    {
-
 
4748
      mRunLevelIndex = 0;
-
 
4749
      RunLevel rl = mRunLevelCollection.get( mRunLevelIndex );
-
 
4750
      rcon_id.value = rl.get_rcon_id();
-
 
4751
      current_run_level.value = rl.get_current_run_level();
-
 
4752
    }
-
 
4753
    catch( ArrayIndexOutOfBoundsException e )
-
 
4754
    {
-
 
4755
      retVal = false;
-
 
4756
    }
-
 
4757
    
-
 
4758
    mLogger.info("getFirstRunLevel returning " + retVal);
-
 
4759
    return retVal;
-
 
4760
  }
-
 
4761
 
4781
  /**returns true if the mRunLevelCollection contains a next element and returns the rcon_id and current_run_level of the next element
4762
  /**returns true if the mRunLevelCollection contains a next element and returns the rcon_id and current_run_level of the next element
4782
   */
4763
   */
4783
  public boolean getNextRunLevel(MutableInt rcon_id, 
4764
  public boolean getNextRunLevel(MutableInt rcon_id, 
4784
                                 MutableInt current_run_level)
4765
                                 MutableInt current_run_level)
4785
  {
4766
  {
Line 4958... Line 4939...
4958
    
4939
    
4959
    mLogger.info("queryReleaseConfig 1 returning " + retVal);
4940
    mLogger.info("queryReleaseConfig 1 returning " + retVal);
4960
    return retVal;
4941
    return retVal;
4961
  }
4942
  }
4962
 
4943
 
4963
  /**queries the RELEASE_CONFIG table using the rcon_id primary key for the gbebuildfilter
-
 
4964
   */
-
 
4965
  public void queryBuildFilter(final int rcon_id, 
-
 
4966
                               MutableString gbebuildfilter) throws SQLException, Exception
-
 
4967
  {
-
 
4968
    mLogger.debug("queryBuildFilter");
-
 
4969
    
-
 
4970
    if ( !mUseDatabase )
-
 
4971
    {
-
 
4972
      mLogger.info("queryBuildFilter !mUseDatabase");
-
 
4973
    }
-
 
4974
    else
-
 
4975
    {
-
 
4976
      try
-
 
4977
      {
-
 
4978
        connect();
-
 
4979
        String sql = new String("select gbe_buildfilter from release_manager.release_config where rcon_id=" + rcon_id );
-
 
4980
        CallableStatement stmt = mConnection.prepareCall( sql );
-
 
4981
        ResultSet rset = stmt.executeQuery();
-
 
4982
        int rsetSize = 0;
-
 
4983
        
-
 
4984
        while( rset.next() )
-
 
4985
        {
-
 
4986
          rsetSize++;
-
 
4987
          gbebuildfilter.value = rset.getString("gbe_buildfilter");
-
 
4988
        }
-
 
4989
        
-
 
4990
        rset.close();
-
 
4991
        stmt.close();
-
 
4992
 
-
 
4993
        if ( rsetSize > 1 )
-
 
4994
        {
-
 
4995
          mLogger.fatal("queryBuildFilter rsetSize > 1");
-
 
4996
          // show stopper
-
 
4997
          throw new Exception("queryBuildFilter rsetSize > 1");
-
 
4998
        }
-
 
4999
      }
-
 
5000
      catch ( SQLException e )
-
 
5001
      {
-
 
5002
        if ( mConnection == null || ( mConnection != null && !mConnection.isValid(10) ) )
-
 
5003
        {
-
 
5004
          mLogger.error("queryBuildFilter database access error only");
-
 
5005
          throw new SQLException();
-
 
5006
        }
-
 
5007
        else
-
 
5008
        {
-
 
5009
          mLogger.fatal("queryBuildFilter show stopper");
-
 
5010
          throw new Exception("queryBuildFilter show stopper");
-
 
5011
        }
-
 
5012
      }
-
 
5013
      finally
-
 
5014
      {
-
 
5015
        // this block is executed regardless of what happens in the try block
-
 
5016
        // even if an exception is thrown
-
 
5017
        // ensure disconnect
-
 
5018
        disconnect();
-
 
5019
      }
-
 
5020
    }
-
 
5021
  }
-
 
5022
 
-
 
5023
  /**removes all elements from the mReleaseConfigCollection
4944
  /**removes all elements from the mReleaseConfigCollection
5024
   * handles database connection and disconnection
4945
   * handles database connection and disconnection
5025
   * queries the RELEASE_CONFIG table using the rtag_id
4946
   * queries the RELEASE_CONFIG table using the rtag_id
5026
   * populates the mReleaseConfigCollection with the query result set
4947
   * populates the mReleaseConfigCollection with the query result set
5027
   * partially implements the sequence diagrams coordinate slave threads generate build files
4948
   * partially implements the sequence diagrams coordinate slave threads generate build files 
-
 
4949
   *  
-
 
4950
   * Used by Master Thread to determine the build machines that will be a part 
-
 
4951
   * of the Slave-Sync process. 
5028
   */
4952
   */
5029
  public void queryReleaseConfig(final int rtag_id) throws SQLException, Exception
4953
  public void queryReleaseConfig(final int rtag_id) throws SQLException, Exception
5030
  {
4954
  {
5031
    mLogger.debug("queryReleaseConfig 2");
4955
    mLogger.debug("queryReleaseConfig 2");
5032
    mReleaseConfigCollection.removeAllElements();
4956
    mReleaseConfigCollection.removeAllElements();
5033
    
4957
    
5034
    if ( !mUseDatabase )
4958
    if ( !mUseDatabase )
5035
    {
4959
    {
5036
      mLogger.info("queryReleaseConfig 2 !mUseDatabase");
4960
      mLogger.info("queryReleaseConfig 2 !mUseDatabase");
5037
      ReleaseConfig releaseConfig = new ReleaseConfig(1,1,'M');
4961
      ReleaseConfig releaseConfig = new ReleaseConfig(1,1,'M', "DummyHost1","DummyTarget1", "DummyMachtype1", "Win32");
5038
      mReleaseConfigCollection.add(releaseConfig);
4962
      mReleaseConfigCollection.add(releaseConfig);
5039
      releaseConfig = new ReleaseConfig(1,2,'S');
4963
      releaseConfig = new ReleaseConfig(1,2,'S', "DummyHost2","DummyTarget2", "DummyMachtype1", "Linux");
5040
      mReleaseConfigCollection.add(releaseConfig);
4964
      mReleaseConfigCollection.add(releaseConfig);
5041
    }
4965
    }
5042
    else
4966
    else
5043
    {
4967
    {
5044
      try
4968
      try
5045
      {
4969
      {
5046
        connect();
4970
        connect();
5047
        
4971
        
5048
        CallableStatement stmt = mConnection.prepareCall(
4972
        CallableStatement stmt = mConnection.prepareCall(
5049
            "select rc.rcon_id, rc.daemon_mode, rl.pause" +
4973
            " select rc.rcon_id, rc.daemon_mode, rl.pause, bc.machine_hostname, rc.gbe_buildfilter, mt.gbe_value, bm.bm_name" +
5050
            " from release_manager.release_config rc, release_manager.run_level rl" +
4974
            "    from release_manager.release_config rc, " +
-
 
4975
            "         release_manager.run_level rl, " +
-
 
4976
            "         release_manager.build_machine_config bc, " +
-
 
4977
            "         release_manager.gbe_machtype mt," +
-
 
4978
            "         release_manager.build_machines bm" +
-
 
4979
            "    where rc.rtag_id=" + rtag_id +
5051
            " where rc.rtag_id=" + rtag_id + " and rl.rcon_id=rc.rcon_id");
4980
            "        and rl.rcon_id=rc.rcon_id " +
-
 
4981
            "        and bc.machine_hostname=rc.daemon_hostname " +
-
 
4982
            "        and mt.gbe_id=bc.gbe_id" +
-
 
4983
            "        and mt.bm_id=bm.bm_id"
-
 
4984
            );
5052
 
4985
 
5053
        ResultSet rset = stmt.executeQuery();
4986
        ResultSet rset = stmt.executeQuery();
5054
        
4987
        
5055
        while( rset.next() )
4988
        while( rset.next() )
5056
        {
4989
        {
Line 5074... Line 5007...
5074
            {
5007
            {
5075
              dm = 'M';
5008
              dm = 'M';
5076
            }
5009
            }
5077
          }
5010
          }
5078
 
5011
 
-
 
5012
          String machine_hostname = rset.getString("machine_hostname");
-
 
5013
          if (machine_hostname == null)
-
 
5014
          {
-
 
5015
              mLogger.fatal("queryReleaseConfig 2 null machine_hostname " + rtag_id);
-
 
5016
              throw new Exception("queryReleaseConfig 2 null machine_hostname " + rtag_id);
-
 
5017
          }
-
 
5018
 
-
 
5019
          String gbe_buildfilter = rset.getString("gbe_buildfilter");
-
 
5020
 
-
 
5021
          String gbe_machtype = rset.getString("gbe_value");
-
 
5022
          if (gbe_machtype == null)
-
 
5023
          {
-
 
5024
              mLogger.fatal("queryReleaseConfig 2 null gbe_value " + rtag_id);
-
 
5025
              throw new Exception("queryReleaseConfig 2 null gbe_value " + rtag_id);
-
 
5026
          }
-
 
5027
 
-
 
5028
          String gbe_machclass = rset.getString("bm_name");
-
 
5029
          if (gbe_machclass == null)
-
 
5030
          {
-
 
5031
              mLogger.fatal("queryReleaseConfig 2 null bm_name " + rtag_id);
-
 
5032
              throw new Exception("queryReleaseConfig 2 null bm_name " + rtag_id);
-
 
5033
          }
-
 
5034
 
5079
          //
5035
          //
5080
          //  Pause: null -> 0 == Run
5036
          //  Pause: null -> 0 == Run
5081
          //         1         == Pause
5037
          //         1         == Pause
5082
          //         2         == Disabled
5038
          //         2         == Disabled
5083
          //
5039
          //
5084
          int pause = rset.getInt("pause");
5040
          int pause = rset.getInt("pause");
5085
          if ( rset.wasNull() )
5041
          if ( rset.wasNull() )
5086
          {
5042
          {
5087
            pause = 0;
5043
            pause = 0;
5088
          }
5044
          }
5089
          mLogger.info("queryReleaseConfig 2: " + rtag_id + ", " + rcon_id + ", "+ dm + ", " + pause );
5045
          mLogger.info("queryReleaseConfig 2: " + rtag_id + ", " + rcon_id + ", "+ dm + ", " + pause + 
5090
 
-
 
-
 
5046
                       ", " + machine_hostname + ", " + gbe_buildfilter + ", " + gbe_machtype + ", + " + gbe_machclass );
5091
 
5047
 
-
 
5048
          //
-
 
5049
          // Do not include build daemons that are disabled
-
 
5050
          //
5092
          if ( pause <= 1 )
5051
          if ( pause <= 1 )
5093
          {
5052
          {
5094
            ReleaseConfig releaseConfig = new ReleaseConfig( rtag_id, rcon_id, dm );
5053
            ReleaseConfig releaseConfig = new ReleaseConfig( rtag_id, rcon_id, dm, machine_hostname, gbe_buildfilter, gbe_machtype, gbe_machclass);
5095
            mReleaseConfigCollection.add(releaseConfig);
5054
            mReleaseConfigCollection.add(releaseConfig);
5096
          }
5055
          }
5097
        }
5056
        }
5098
        
5057
        
5099
        
5058
        
Line 5125... Line 5084...
5125
 
5084
 
5126
  /**removes all elements from the mReleaseConfigCollection
5085
  /**removes all elements from the mReleaseConfigCollection
5127
   * handles database connection and disconnection
5086
   * handles database connection and disconnection
5128
   * queries the RELEASE_CONFIG table using the daemon_hostname
5087
   * queries the RELEASE_CONFIG table using the daemon_hostname
5129
   * populates the mReleaseConfigCollection with the query result set
5088
   * populates the mReleaseConfigCollection with the query result set
5130
   * partially implements the sequence diagram spawn thread
5089
   * partially implements the sequence diagram spawn thread 
-
 
5090
   *  
-
 
5091
   * Used by each build thread to determine daemons to start and stop
5131
   */
5092
   */
5132
  public void queryReleaseConfig(final String hostname) throws SQLException, Exception
5093
  public void queryReleaseConfig(final String hostname) throws SQLException, Exception
5133
  {
5094
  {
5134
    mLogger.debug("queryReleaseConfig 3 " + hostname);
5095
    mLogger.debug("queryReleaseConfig 3 " + hostname);
5135
    mReleaseConfigCollection.removeAllElements();
5096
    mReleaseConfigCollection.removeAllElements();
5136
    
5097
    
5137
    if ( mConnectionString.compareTo("unit test spawn thread") == 0)
5098
    if ( mConnectionString.compareTo("unit test spawn thread") == 0)
5138
    {
5099
    {
5139
      mLogger.info("queryReleaseConfig 3 unit test spawn thread");
5100
      mLogger.info("queryReleaseConfig 3 unit test spawn thread");
5140
      // specifying a gbebuildfilter of unit test is designed to invoke a benign thread for unit test purposes
5101
      // specifying a gbebuildfilter of unit test is designed to invoke a benign thread for unit test purposes
5141
      ReleaseConfig releaseConfig = new ReleaseConfig(1,1,'M');
5102
      ReleaseConfig releaseConfig = new ReleaseConfig(1,1,'M', "DummyHost1","DummyTarget1", "DummyMachtype1", "Win32");
5142
      mReleaseConfigCollection.add(releaseConfig);
5103
      mReleaseConfigCollection.add(releaseConfig);
5143
      releaseConfig = new ReleaseConfig(2,2,'S');
5104
      releaseConfig = new ReleaseConfig(2,2,'S', "DummyHost2","DummyTarget2", "DummyMachtype2", "Linux");
5144
      mReleaseConfigCollection.add(releaseConfig);
5105
      mReleaseConfigCollection.add(releaseConfig);
5145
    }
5106
    }
5146
    else
5107
    else
5147
    {
5108
    {
5148
      try
5109
      try
5149
      {
5110
      {
5150
        connect();
5111
        connect();
5151
        CallableStatement stmt = mConnection.prepareCall(
5112
        CallableStatement stmt = mConnection.prepareCall(
5152
            "select rc.rtag_id, rc.rcon_id, rc.daemon_mode, rl.pause " +
5113
            "select rc.rtag_id, rc.rcon_id, rc.daemon_mode, rl.pause, bc.machine_hostname, rc.gbe_buildfilter, mt.gbe_value, bm.bm_name" +
5153
            "from release_manager.release_config rc, release_manager.release_tags rt, release_manager.run_level rl " +
5114
            "    from release_manager.release_config rc," +
-
 
5115
            "       release_manager.release_tags rt," +
-
 
5116
            "       release_manager.run_level rl," +
-
 
5117
            "       release_manager.build_machine_config bc," +
-
 
5118
            "       release_manager.gbe_machtype mt," +
-
 
5119
            "       release_manager.build_machines bm " +
5154
            "where rc.daemon_hostname='" + hostname + "'" +
5120
            "    where rc.daemon_hostname='"+ hostname +"'" +
5155
            "  and rt.rtag_id=rc.rtag_id" +
5121
            "      and rt.rtag_id=rc.rtag_id" +
5156
            "  and rl.rcon_id=rc.rcon_id" +
5122
            "      and rl.rcon_id=rc.rcon_id" +
-
 
5123
            "      and bc.machine_hostname=rc.daemon_hostname" +
-
 
5124
            "      and mt.gbe_id=bc.gbe_id" +
-
 
5125
            "      and mt.bm_id=bm.bm_id" +
5157
            "  and (rt.official = 'N' or rt.official='R' or rt.official='C')"
5126
            "      and (rt.official = 'N' or rt.official='R' or rt.official='C')"
5158
            );
5127
            );
-
 
5128
 
-
 
5129
 
5159
        ResultSet rset = stmt.executeQuery();
5130
        ResultSet rset = stmt.executeQuery();
5160
        
5131
        
5161
        while( rset.next() )
5132
        while( rset.next() )
5162
        {
5133
        {
5163
          int rtag_id = rset.getInt("rtag_id");
5134
          int rtag_id = rset.getInt("rtag_id");
Line 5172... Line 5143...
5172
          int rcon_id = rset.getInt("rcon_id");
5143
          int rcon_id = rset.getInt("rcon_id");
5173
          
5144
          
5174
          if ( rset.wasNull() )
5145
          if ( rset.wasNull() )
5175
          {
5146
          {
5176
            mLogger.fatal("queryReleaseConfig 3 null rcon_id");
5147
            mLogger.fatal("queryReleaseConfig 3 null rcon_id");
5177
            // show stopper
-
 
5178
            throw new Exception("queryReleaseConfig 3 null rcon_id");
5148
            throw new Exception("queryReleaseConfig 3 null rcon_id");
5179
          }
5149
          }
5180
 
5150
 
5181
          char dm = 'S';          
5151
          char dm = 'S';          
5182
          String daemon_mode = rset.getString("daemon_mode");
5152
          String daemon_mode = rset.getString("daemon_mode");
Line 5188... Line 5158...
5188
            if ( daemon_mode.compareTo("M") == 0 )
5158
            if ( daemon_mode.compareTo("M") == 0 )
5189
            {
5159
            {
5190
              dm = 'M';
5160
              dm = 'M';
5191
            }
5161
            }
5192
          }
5162
          }
-
 
5163
 
-
 
5164
          String machine_hostname = rset.getString("machine_hostname");
-
 
5165
          if (machine_hostname == null)
-
 
5166
          {
-
 
5167
              mLogger.fatal("queryReleaseConfig 3 null machine_hostname " + rtag_id);
-
 
5168
              throw new Exception("queryReleaseConfig 3 null machine_hostname " + rtag_id);
-
 
5169
          }
-
 
5170
 
-
 
5171
          String gbe_buildfilter = rset.getString("gbe_buildfilter");
-
 
5172
 
-
 
5173
          String gbe_machtype = rset.getString("gbe_value");
-
 
5174
          if (gbe_machtype == null)
-
 
5175
          {
-
 
5176
              mLogger.fatal("queryReleaseConfig 3 null gbe_value " + rtag_id);
-
 
5177
              throw new Exception("queryReleaseConfig 3 null gbe_value " + rtag_id);
-
 
5178
          }
-
 
5179
 
-
 
5180
          String gbe_machclass = rset.getString("bm_name");
-
 
5181
          if (gbe_machclass == null)
-
 
5182
          {
-
 
5183
              mLogger.fatal("queryReleaseConfig 3 null bm_name " + rtag_id);
-
 
5184
              throw new Exception("queryReleaseConfig 3 null bm_name " + rtag_id);
-
 
5185
          }
5193
          
5186
          
5194
          //
5187
          //
5195
          //  Pause: null -> 0 == Run
5188
          //  Pause: null -> 0 == Run
5196
          //         1         == Pause
5189
          //         1         == Pause
5197
          //         2         == Disabled
5190
          //         2         == Disabled
Line 5199... Line 5192...
5199
          int pause = rset.getInt("pause");
5192
          int pause = rset.getInt("pause");
5200
          if ( rset.wasNull() )
5193
          if ( rset.wasNull() )
5201
          {
5194
          {
5202
            pause = 0;
5195
            pause = 0;
5203
          }
5196
          }
5204
          mLogger.info("queryReleaseConfig 3: " + rtag_id + ", " + rcon_id + ", "+ dm + ", " + pause );
-
 
5205
 
5197
 
-
 
5198
          mLogger.info("queryReleaseConfig 3: " + rtag_id + ", " + rcon_id + ", "+ dm + ", " + pause + 
-
 
5199
                       ", " + machine_hostname + ", " + gbe_buildfilter + ", " + gbe_machtype + ", + " + gbe_machclass );
5206
 
5200
 
-
 
5201
          //
-
 
5202
          // Do not include build daemons that are disabled
-
 
5203
          // Only those that are running or paused
-
 
5204
          //
5207
          if ( pause <= 1 )
5205
          if ( pause <= 1 )
5208
          {
5206
          {
5209
            ReleaseConfig releaseConfig = new ReleaseConfig( rtag_id, rcon_id, dm );
5207
            ReleaseConfig releaseConfig = new ReleaseConfig( rtag_id, rcon_id, dm, machine_hostname, gbe_buildfilter, gbe_machtype, gbe_machclass);
5210
            mReleaseConfigCollection.add(releaseConfig);
5208
            mReleaseConfigCollection.add(releaseConfig);
5211
          }
5209
          }
5212
        }
5210
        }
5213
        
5211
        
5214
        rset.close();
5212
        rset.close();
Line 5238... Line 5236...
5238
  }
5236
  }
5239
 
5237
 
5240
  /**queries the RUN_LEVEL table using the rcon_id primary key
5238
  /**queries the RUN_LEVEL table using the rcon_id primary key
5241
   * handles database connection and disconnection
5239
   * handles database connection and disconnection
5242
   * returns the current_build_files
5240
   * returns the current_build_files
5243
   * implements the sequence diagram consume build files
5241
   * implements the sequence diagram consume build files 
-
 
5242
   *  
-
 
5243
   * Used by the Slave Daemon 
5244
   */
5244
   */
5245
  public void queryRunLevel(int rcon_id, MutableString currentBuildFiles) throws SQLException, Exception
5245
  public void queryRunLevel(int rcon_id, MutableString currentBuildFiles) throws SQLException, Exception
5246
  {
5246
  {
5247
    mLogger.debug("queryRunLevel 1 rcon_id " + rcon_id);
5247
    mLogger.debug("queryRunLevel 1 rcon_id " + rcon_id);
5248
    if ( !mUseDatabase )
5248
    if ( !mUseDatabase )
Line 5305... Line 5305...
5305
  /**removes all elements from the mRunLevelCollection
5305
  /**removes all elements from the mRunLevelCollection
5306
   * handles database connection and disconnection
5306
   * handles database connection and disconnection
5307
   *   select rl.rcon_id, rl.current_run_level from release_manager.release_config rc, release_manager.run_level rl
5307
   *   select rl.rcon_id, rl.current_run_level from release_manager.release_config rc, release_manager.run_level rl
5308
   *   where rc.rtag_id=<rtag_id> and rl.rcon_id=rc.rcon_id;
5308
   *   where rc.rtag_id=<rtag_id> and rl.rcon_id=rc.rcon_id;
5309
   * populates the mRunLevelCollection with the query result set
5309
   * populates the mRunLevelCollection with the query result set
5310
   * refer to sequence diagram coordinate slave threads
5310
   * refer to sequence diagram coordinate slave threads 
-
 
5311
   *  
-
 
5312
   * Used by the Master Daemon 
5311
   */
5313
   */
5312
  public void queryRunLevel(final int rtag_id) throws SQLException, Exception
5314
  public void queryRunLevel(final int rtag_id) throws SQLException, Exception
5313
  {
5315
  {
5314
    mLogger.debug("queryRunLevel 2 rtag_id " + rtag_id);
5316
    mLogger.debug("queryRunLevel 2 rtag_id " + rtag_id);
5315
    if ( mConnectionString.compareTo("unit test coordinate slave threads") == 0)
5317
    if ( mConnectionString.compareTo("unit test coordinate slave threads") == 0)
Line 5341... Line 5343...
5341
 
5343
 
5342
      try
5344
      try
5343
      {
5345
      {
5344
        connect();
5346
        connect();
5345
        CallableStatement stmt = mConnection.prepareCall(
5347
        CallableStatement stmt = mConnection.prepareCall(
5346
        "select rl.rcon_id, rl.current_run_level from release_manager.release_config rc, release_manager.run_level rl " +
5348
            "select rl.rcon_id, rl.current_run_level from release_manager.release_config rc, release_manager.run_level rl " +
5347
        "where rc.rtag_id=" +rtag_id + " and rl.rcon_id=rc.rcon_id");
5349
            "where rc.rtag_id=" +rtag_id + " and rl.rcon_id=rc.rcon_id");
5348
        ResultSet rset = stmt.executeQuery();
5350
        ResultSet rset = stmt.executeQuery();
5349
        int rsetSize = 0;
5351
        int rsetSize = 0;
5350
        int rcon_id = 0;
5352
        int rcon_id = 0;
5351
        int current_run_level = 0;
5353
        int current_run_level = 0;
5352
        
5354