Subversion Repositories DevTools

Rev

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

Rev 860 Rev 864
Line 38... Line 38...
38
  /**Unit test hook
38
  /**Unit test hook
39
   * Container of persisted run levels for unit test usage
39
   * Container of persisted run levels for unit test usage
40
   * Must be managed by the unit test code
40
   * Must be managed by the unit test code
41
   * @attribute
41
   * @attribute
42
   */
42
   */
43
  public static Vector mPersistedRunLevelCollection = new Vector();
43
  public static Vector<Integer> mPersistedRunLevelCollection = new Vector<Integer>();
44
 
44
 
45
  /**database represented enumerated value
45
  /**database represented enumerated value
46
   * @attribute
46
   * @attribute
47
   */
47
   */
48
  public static final int DB_CANNOT_CONTINUE = 1;
48
  public static final int DB_CANNOT_CONTINUE = 1;
Line 103... Line 103...
103
  private int mRunLevelIndex = -1;
103
  private int mRunLevelIndex = -1;
104
 
104
 
105
  /**collection of ReleaseConfig objects
105
  /**collection of ReleaseConfig objects
106
   * @attribute
106
   * @attribute
107
   */
107
   */
108
  private Vector mReleaseConfigCollection = new Vector();
108
  private Vector<ReleaseConfig> mReleaseConfigCollection = new Vector<ReleaseConfig>();
109
 
109
 
110
  /**database connection string
110
  /**database connection string
111
   * @attribute
111
   * @attribute
112
   */
112
   */
113
  private static String mConnectionString = new String();
113
  private static String mConnectionString = new String();
Line 123... Line 123...
123
  private static String mPassword = new String();
123
  private static String mPassword = new String();
124
 
124
 
125
  /**collection of RunLevel objects
125
  /**collection of RunLevel objects
126
   * @attribute
126
   * @attribute
127
   */
127
   */
128
  private Vector mRunLevelCollection = new Vector();
128
  private Vector<RunLevel> mRunLevelCollection = new Vector<RunLevel>();
129
 
129
 
130
  /**in daemon mode
130
  /**in daemon mode
131
   *   select gm.gbe_value from release_config rc, gbe_machtype gm
131
   *   select gm.gbe_value from release_config rc, gbe_machtype gm
132
   *   where rc.rtag_id=<baseline> and gm.gbe_id=rc.gbe_id;
132
   *   where rc.rtag_id=<baseline> and gm.gbe_id=rc.gbe_id;
133
   * in escrow mode
133
   * in escrow mode
134
   *   select gm.gbe_value from boms b, release_manager.release_config rc,
134
   *   select gm.gbe_value from boms b, release_manager.release_config rc,
135
   *   release_manager.gbe_machtype gm
135
   *   release_manager.gbe_machtype gm
136
   *   where b.bom_id=<baseline> and rc.rtag_id=b.rtag_id_fk and gm.gbe_id=rc.gbe_id;
136
   *   where b.bom_id=<baseline> and rc.rtag_id=b.rtag_id_fk and gm.gbe_id=rc.gbe_id;
137
   * populates the machtypeCollection with the resultset
137
   * populates the machtypeCollection with the resultset
138
   */
138
   */
139
  void queryMachtypes(Vector machtypeCollection, boolean daemonMode, int baseline) throws SQLException, Exception
139
  void queryMachtypes(Vector<String> machtypeCollection, boolean daemonMode, int baseline) throws SQLException, Exception
140
  {
140
  {
141
    mLogger.debug("queryMachtypes " + daemonMode);
141
    mLogger.debug("queryMachtypes " + daemonMode);
142
    if ( !mUseDatabase )
142
    if ( !mUseDatabase )
143
    {
143
    {
144
      mLogger.info("queryMachtypes !mUseDatabase");
144
      mLogger.info("queryMachtypes !mUseDatabase");
Line 411... Line 411...
411
   *    test_type_name="Autobuild UTF"
411
   *    test_type_name="Autobuild UTF"
412
   *    bm_name="Generic"|"Linux"|"Solaris"|"Win32"
412
   *    bm_name="Generic"|"Linux"|"Solaris"|"Win32"
413
   *    bsa_name="Debug"|"Production"|"Production and Debug"|"Java 1.4"|"Java 1.5"|"Java 1.6"
413
   *    bsa_name="Debug"|"Production"|"Production and Debug"|"Java 1.4"|"Java 1.5"|"Java 1.6"
414
   */
414
   */
415
  void queryPackageVersions(RippleEngine rippleEngine, 
415
  void queryPackageVersions(RippleEngine rippleEngine, 
416
                            Vector packageCollection, boolean daemonMode, int baseline) throws SQLException, Exception
416
                            Vector<Package> packageCollection, boolean daemonMode, int baseline) throws SQLException, Exception
417
  {
417
  {
418
    mLogger.debug("queryPackageVersions " + daemonMode);
418
    mLogger.debug("queryPackageVersions " + daemonMode);
419
  
419
  
420
    if ( !mUseDatabase )
420
    if ( !mUseDatabase )
421
    {
421
    {
Line 655... Line 655...
655
         if ( mConnectionString.compareTo("iteration1") == 0 
655
         if ( mConnectionString.compareTo("iteration1") == 0 
656
           || mConnectionString.compareTo("iteration2") == 0
656
           || mConnectionString.compareTo("iteration2") == 0
657
           || mConnectionString.compareTo("iteration3") == 0 )
657
           || mConnectionString.compareTo("iteration3") == 0 )
658
         {
658
         {
659
           p = findPackage(3, packageCollection);
659
           p = findPackage(3, packageCollection);
660
           p.mBuildFailureEmailCollection.add("jimmyfishcake@erggroup.com");
660
           p.addEmail("jimmyfishcake@erggroup.com");
661
           p.mBuildFailureEmailCollection.add("rayhaddock@erggroup.com");
661
           p.addEmail("rayhaddock@erggroup.com");
662
         }
662
         }
663
         
663
         
664
         if ( mConnectionString.compareTo("iteration1") == 0 
664
         if ( mConnectionString.compareTo("iteration1") == 0 
665
           || mConnectionString.compareTo("iteration2") == 0
665
           || mConnectionString.compareTo("iteration2") == 0
666
           || mConnectionString.compareTo("iteration3") == 0
666
           || mConnectionString.compareTo("iteration3") == 0
667
           || mConnectionString.compareTo("iteration4") == 0
667
           || mConnectionString.compareTo("iteration4") == 0
668
           || mConnectionString.compareTo("iteration5") == 0 )
668
           || mConnectionString.compareTo("iteration5") == 0 )
669
         {
669
         {
670
           p = findPackage(5, packageCollection);
670
           p = findPackage(5, packageCollection);
671
           p.mBuildFailureEmailCollection.add("timbutdim@erggroup.com");
671
           p.addEmail("timbutdim@erggroup.com");
672
         }
672
         }
673
         
673
         
674
        /* planned do not ripple info
674
        /* planned do not ripple info
675
         * pv_id
675
         * pv_id
676
         * 6
676
         * 6
Line 1256... Line 1256...
1256
         if ( mConnectionString.compareTo("iteration1") != 0 
1256
         if ( mConnectionString.compareTo("iteration1") != 0 
1257
           && mConnectionString.compareTo("iteration2") != 0
1257
           && mConnectionString.compareTo("iteration2") != 0
1258
           && mConnectionString.compareTo("iteration3") != 0 )
1258
           && mConnectionString.compareTo("iteration3") != 0 )
1259
         {
1259
         {
1260
           p = findPackage(3, packageCollection);
1260
           p = findPackage(3, packageCollection);
1261
           p.mBuildFailureEmailCollection.add("jimmyfishcake@erggroup.com");
1261
           p.addEmail("jimmyfishcake@erggroup.com");
1262
           p.mBuildFailureEmailCollection.add("rayhaddock@erggroup.com");
1262
           p.addEmail("rayhaddock@erggroup.com");
1263
         }
1263
         }
1264
 
1264
 
1265
         if ( mConnectionString.compareTo("iteration1") != 0 
1265
         if ( mConnectionString.compareTo("iteration1") != 0 
1266
           && mConnectionString.compareTo("iteration2") != 0
1266
           && mConnectionString.compareTo("iteration2") != 0
1267
           && mConnectionString.compareTo("iteration3") != 0
1267
           && mConnectionString.compareTo("iteration3") != 0
1268
           && mConnectionString.compareTo("iteration4") != 0
1268
           && mConnectionString.compareTo("iteration4") != 0
1269
           && mConnectionString.compareTo("iteration5") != 0 )
1269
           && mConnectionString.compareTo("iteration5") != 0 )
1270
         {
1270
         {
1271
           p = findPackage(5, packageCollection);
1271
           p = findPackage(5, packageCollection);
1272
           p.mBuildFailureEmailCollection.add("timbutdim@erggroup.com");
1272
           p.addEmail("timbutdim@erggroup.com");
1273
         }
1273
         }
1274
 
1274
 
1275
         if ( mConnectionString.compareTo("iteration1") == 0 
1275
         if ( mConnectionString.compareTo("iteration1") == 0 
1276
           || mConnectionString.compareTo("iteration2") == 0
1276
           || mConnectionString.compareTo("iteration2") == 0
1277
           || mConnectionString.compareTo("iteration3") == 0 )
1277
           || mConnectionString.compareTo("iteration3") == 0 )
1278
         {
1278
         {
1279
           p = findPackage(10, packageCollection);
1279
           p = findPackage(10, packageCollection);
1280
           p.mBuildFailureEmailCollection.add("jimmyfishcake@erggroup.com");
1280
           p.addEmail("jimmyfishcake@erggroup.com");
1281
         }
1281
         }
1282
         
1282
         
1283
        /* released do not ripple info
1283
        /* released do not ripple info
1284
         * pv_id
1284
         * pv_id
1285
         * 11
1285
         * 11
Line 1343... Line 1343...
1343
    {
1343
    {
1344
      try
1344
      try
1345
      {
1345
      {
1346
        if (daemonMode)
1346
        if (daemonMode)
1347
        {
1347
        {
-
 
1348
          Vector<String> globalAndProjectWideBuildFailureEmailCollection = new Vector<String>();
-
 
1349
          // populate globalAndProjectWideBuildFailureCollection
-
 
1350
          CallableStatement stmt = mConnection.prepareCall(
-
 
1351
          "select u.user_email from release_manager.build_service_config bsc, users u " +
-
 
1352
          "where bsc.service='GLOBAL EMAIL ADDRESS LIST' and u.full_name=bsc.config"
-
 
1353
          );
-
 
1354
          ResultSet rset = stmt.executeQuery();
-
 
1355
          
-
 
1356
          while( rset.next() )
-
 
1357
          {
-
 
1358
            String email = rset.getString("user_email");
-
 
1359
             
-
 
1360
            if ( email != null )
-
 
1361
            {
-
 
1362
              globalAndProjectWideBuildFailureEmailCollection.add(email);
-
 
1363
            }
-
 
1364
          }
-
 
1365
              
-
 
1366
          rset.close();
-
 
1367
          stmt.close();
-
 
1368
 
-
 
1369
          CallableStatement stmt0 = mConnection.prepareCall(
-
 
1370
          "select u.user_email " +
-
 
1371
          "from release_manager.autobuild_failure af, release_manager.members_group mg, release_manager.users u, release_manager.views v, release_manager.release_tags rt " +
-
 
1372
          "where rt.rtag_id=" + baseline + " " +
-
 
1373
          "and v.view_name='PROJECT WIDE' " +
-
 
1374
          "and af.proj_id=rt.proj_id " +
-
 
1375
          "and af.view_id=v.view_id " +
-
 
1376
          "and mg.group_email_id=af.group_email_id " +
-
 
1377
          "and u.user_id=mg.user_id"
-
 
1378
          );
-
 
1379
          ResultSet rset0 = stmt0.executeQuery();
-
 
1380
          
-
 
1381
          while( rset0.next() )
-
 
1382
          {
-
 
1383
            String email = rset0.getString("user_email");
-
 
1384
             
-
 
1385
            if ( email != null )
-
 
1386
            {
-
 
1387
              globalAndProjectWideBuildFailureEmailCollection.add(email);
-
 
1388
            }
-
 
1389
          }
-
 
1390
              
-
 
1391
          rset0.close();
-
 
1392
          stmt0.close();
-
 
1393
          
1348
          // get planned package info
1394
          // get planned package info
1349
          CallableStatement stmt1 = mConnection.prepareCall(
1395
          CallableStatement stmt1 = mConnection.prepareCall(
1350
          "select pl.pv_id, p.pkg_id, p.pkg_name, pv.v_ext, pv.pkg_label, pv.src_path, pv.change_type " +
1396
          "select pl.pv_id, p.pkg_id, p.pkg_name, pv.v_ext, pv.pkg_label, pv.src_path, pv.change_type " +
1351
          "from release_manager.planned pl, release_manager.package_versions pv, release_manager.packages p " +
1397
          "from release_manager.planned pl, release_manager.package_versions pv, release_manager.packages p " +
1352
          "where pl.rtag_id=" + baseline + " and pv.build_type='A' and pv.dlocked='A' " +
1398
          "where pl.rtag_id=" + baseline + " and pv.build_type='A' and pv.dlocked='A' " +
Line 1662... Line 1708...
1662
          }
1708
          }
1663
          
1709
          
1664
          rset4.close();
1710
          rset4.close();
1665
          stmt4.close();
1711
          stmt4.close();
1666
 
1712
 
1667
          // get planned package build failure info
1713
          // get planned package build failure info...
-
 
1714
          // global and project wide based
-
 
1715
          CallableStatement stmt50 = mConnection.prepareCall(
-
 
1716
          "select pl.pv_id " +
-
 
1717
          "from release_manager.planned pl, release_manager.release_tags rt, release_manager.package_versions pv " +
-
 
1718
          "where pl.rtag_id=" + baseline + " and rt.rtag_id=pl.rtag_id and pv.build_type='A' and pv.dlocked='A' " +
-
 
1719
          "and pv.pv_id = pl.pv_id " +
-
 
1720
          "order by pl.pv_id"
-
 
1721
          );
-
 
1722
          ResultSet rset50 = stmt50.executeQuery();
-
 
1723
              
-
 
1724
          while( rset50.next() )
-
 
1725
          {
-
 
1726
            int pv_id = rset50.getInt("pv_id");
-
 
1727
             
-
 
1728
            if ( rset50.wasNull() )
-
 
1729
            {
-
 
1730
              mLogger.fatal("queryPackageVersions rset50 null pv_id");
-
 
1731
              // show stopper
-
 
1732
              throw new Exception();
-
 
1733
            }
-
 
1734
              
-
 
1735
            Package p = findPackage(pv_id, packageCollection);
-
 
1736
              
-
 
1737
            if ( p == NULL_PACKAGE )
-
 
1738
            {
-
 
1739
              mLogger.info("queryPackageVersions rset50 highly unlikely " + pv_id);
-
 
1740
              // highly unlikely but package may have been added in between queries
-
 
1741
            }
-
 
1742
            else
-
 
1743
            {
-
 
1744
              for (Iterator<String> it = globalAndProjectWideBuildFailureEmailCollection.iterator(); it.hasNext(); )
-
 
1745
              {
-
 
1746
                p.addEmail(it.next());
-
 
1747
              }
-
 
1748
            }
-
 
1749
          }
-
 
1750
              
-
 
1751
          rset50.close();
-
 
1752
          stmt50.close();
-
 
1753
 
-
 
1754
          // view based
1668
          CallableStatement stmt5 = mConnection.prepareCall(
1755
          CallableStatement stmt5 = mConnection.prepareCall(
1669
          "select pl.pv_id, u.user_email " +
1756
          "select pl.pv_id, u.user_email " +
1670
          "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 " +
1757
          "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 " +
1671
          "where pl.rtag_id=" + baseline + " and rt.rtag_id=pl.rtag_id and pv.build_type='A' and pv.dlocked='A' " +
1758
          "where pl.rtag_id=" + baseline + " and rt.rtag_id=pl.rtag_id and pv.build_type='A' and pv.dlocked='A' " +
1672
          "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 " +
1759
          "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 " +
Line 1674... Line 1761...
1674
          );
1761
          );
1675
          ResultSet rset5 = stmt5.executeQuery();
1762
          ResultSet rset5 = stmt5.executeQuery();
1676
              
1763
              
1677
          while( rset5.next() )
1764
          while( rset5.next() )
1678
          {
1765
          {
1679
            boolean ignore = false;
-
 
1680
             
-
 
1681
            int pv_id = rset5.getInt("pv_id");
1766
            int pv_id = rset5.getInt("pv_id");
1682
             
1767
             
1683
            if ( rset5.wasNull() )
1768
            if ( rset5.wasNull() )
1684
            {
1769
            {
1685
              mLogger.fatal("queryPackageVersions rset5 null pv_id");
1770
              mLogger.fatal("queryPackageVersions rset5 null pv_id");
Line 1691... Line 1776...
1691
              
1776
              
1692
            if ( p == NULL_PACKAGE )
1777
            if ( p == NULL_PACKAGE )
1693
            {
1778
            {
1694
              mLogger.info("queryPackageVersions rset5 highly unlikely " + pv_id);
1779
              mLogger.info("queryPackageVersions rset5 highly unlikely " + pv_id);
1695
              // highly unlikely but package may have been added in between queries
1780
              // highly unlikely but package may have been added in between queries
1696
              ignore = true;
-
 
1697
            }
1781
            }
-
 
1782
            else
-
 
1783
            {
-
 
1784
              String user_email = rset5.getString("user_email");
1698
              
1785
              
-
 
1786
              if ( user_email != null )
-
 
1787
              {
-
 
1788
                p.addEmail(user_email);
-
 
1789
              }
-
 
1790
            }
-
 
1791
          }
-
 
1792
          
-
 
1793
          rset5.close();
-
 
1794
          stmt5.close();
-
 
1795
 
-
 
1796
          // package version
-
 
1797
          CallableStatement stmt51 = mConnection.prepareCall(
1699
            String user_email = rset5.getString("user_email");
1798
          "select pl.pv_id, u1.user_email, u2.user_email, u3.user_email " +
-
 
1799
          "from release_manager.planned pl, release_manager.release_tags rt, release_manager.package_versions pv, release_manager.users u1, release_manager.users u2, release_manager.users u3 " +
-
 
1800
          "where pl.rtag_id=" + baseline + " and rt.rtag_id=pl.rtag_id and pv.build_type='A' and pv.dlocked='A' " +
-
 
1801
          "and pv.pv_id = pl.pv_id and u1.user_id=pv.creator_id and u2.user_id=pv.owner_id and u3.user_id=pv.modifier_id " +
-
 
1802
          "order by pl.pv_id"
-
 
1803
          );
-
 
1804
          ResultSet rset51 = stmt51.executeQuery();
1700
              
1805
              
-
 
1806
          while( rset51.next() )
-
 
1807
          {
-
 
1808
            int pv_id = rset51.getInt("pv_id");
-
 
1809
             
1701
            if ( user_email == null )
1810
            if ( rset51.wasNull() )
1702
            {
1811
            {
-
 
1812
              mLogger.fatal("queryPackageVersions rset51 null pv_id");
1703
              // this can be null!
1813
              // show stopper
1704
              ignore = true;
1814
              throw new Exception();
1705
            }
1815
            }
1706
              
1816
              
-
 
1817
            Package p = findPackage(pv_id, packageCollection);
-
 
1818
              
1707
            if ( !ignore )
1819
            if ( p == NULL_PACKAGE )
1708
            {
1820
            {
-
 
1821
              mLogger.info("queryPackageVersions rset51 highly unlikely " + pv_id);
-
 
1822
              // highly unlikely but package may have been added in between queries
-
 
1823
            }
-
 
1824
            else
-
 
1825
            {
-
 
1826
              
-
 
1827
              // walk the 3 columns of user_email in the resultset
-
 
1828
              // columns 2, 3 and 4, all of the same name, repectively
-
 
1829
              for(int column=2; column<5; column++ )
-
 
1830
              {
-
 
1831
                String user_email = rset51.getString(column);
-
 
1832
                
-
 
1833
                if ( user_email != null )
-
 
1834
                {
1709
              p.mBuildFailureEmailCollection.add(user_email);
1835
                  p.addEmail(user_email);
-
 
1836
                }
-
 
1837
              }
1710
            }
1838
            }
1711
          }
1839
          }
1712
          
1840
          
1713
          rset5.close();
1841
          rset51.close();
1714
          stmt5.close();
1842
          stmt51.close();
1715
 
1843
 
1716
          // get planned package do not ripple info
1844
          // get planned package do not ripple info
1717
          CallableStatement stmt6 = mConnection.prepareCall(
1845
          CallableStatement stmt6 = mConnection.prepareCall(
1718
          "select pl.pv_id " +
1846
          "select pl.pv_id " +
1719
          "from release_manager.planned pl, release_manager.package_versions pv, release_manager.do_not_ripple dnr " +
1847
          "from release_manager.planned pl, release_manager.package_versions pv, release_manager.do_not_ripple dnr " +
Line 2132... Line 2260...
2132
          }
2260
          }
2133
          
2261
          
2134
          rset11.close();
2262
          rset11.close();
2135
          stmt11.close();
2263
          stmt11.close();
2136
 
2264
 
2137
          // get released package build failure email info
2265
          // get released package build failure info...
-
 
2266
          // global and project wide based
-
 
2267
          CallableStatement stmt120 = mConnection.prepareCall(
-
 
2268
          "select rc.pv_id " +
-
 
2269
          "from release_manager.release_content rc, release_manager.release_tags rt, release_manager.package_versions pv " +
-
 
2270
          "where rc.rtag_id=" + baseline + " and rt.rtag_id=rc.rtag_id " +
-
 
2271
          "and pv.pv_id = rc.pv_id " +
-
 
2272
          "order by rc.pv_id"
-
 
2273
          );
-
 
2274
          ResultSet rset120 = stmt120.executeQuery();
-
 
2275
              
-
 
2276
          while( rset120.next() )
-
 
2277
          {
-
 
2278
            int pv_id = rset120.getInt("pv_id");
-
 
2279
             
-
 
2280
            if ( rset120.wasNull() )
-
 
2281
            {
-
 
2282
              mLogger.fatal("queryPackageVersions rset120 null pv_id");
-
 
2283
              // show stopper
-
 
2284
              throw new Exception();
-
 
2285
            }
-
 
2286
              
-
 
2287
            Package p = findPackage(pv_id, packageCollection);
-
 
2288
              
-
 
2289
            if ( p == NULL_PACKAGE )
-
 
2290
            {
-
 
2291
              mLogger.info("queryPackageVersions rset120 highly unlikely " + pv_id);
-
 
2292
              // highly unlikely but package may have been added in between queries
-
 
2293
            }
-
 
2294
            else
-
 
2295
            {
-
 
2296
              for (Iterator<String> it = globalAndProjectWideBuildFailureEmailCollection.iterator(); it.hasNext(); )
-
 
2297
              {
-
 
2298
                p.addEmail(it.next());
-
 
2299
              }
-
 
2300
            }
-
 
2301
          }
-
 
2302
              
-
 
2303
          rset120.close();
-
 
2304
          stmt120.close();
-
 
2305
          
-
 
2306
          // view based
2138
          CallableStatement stmt12 = mConnection.prepareCall(
2307
          CallableStatement stmt12 = mConnection.prepareCall(
2139
          "select rc.pv_id, u.user_email " +
2308
          "select rc.pv_id, u.user_email " +
2140
          "from release_manager.release_content rc, release_manager.release_tags rt, release_manager.package_versions pv, release_manager.autobuild_failure af, release_manager.members_group mg, release_manager.users u " +
2309
          "from release_manager.release_content rc, release_manager.release_tags rt, release_manager.package_versions pv, release_manager.autobuild_failure af, release_manager.members_group mg, release_manager.users u " +
2141
          "where rc.rtag_id=" + baseline + " and rt.rtag_id=rc.rtag_id " +
2310
          "where rc.rtag_id=" + baseline + " and rt.rtag_id=rc.rtag_id " +
2142
          "and pv.pv_id = rc.pv_id and af.view_id=rc.base_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 " +
2311
          "and pv.pv_id = rc.pv_id and af.view_id=rc.base_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 " +
Line 2144... Line 2313...
2144
          );
2313
          );
2145
          ResultSet rset12 = stmt12.executeQuery();
2314
          ResultSet rset12 = stmt12.executeQuery();
2146
               
2315
               
2147
          while( rset12.next() )
2316
          while( rset12.next() )
2148
          {
2317
          {
2149
            boolean ignore = false;
-
 
2150
              
-
 
2151
            int pv_id = rset12.getInt("pv_id");
2318
            int pv_id = rset12.getInt("pv_id");
2152
              
2319
              
2153
            if ( rset12.wasNull() )
2320
            if ( rset12.wasNull() )
2154
            {
2321
            {
2155
              mLogger.fatal("queryPackageVersions rset12 null pv_id");
2322
              mLogger.fatal("queryPackageVersions rset12 null pv_id");
Line 2160... Line 2327...
2160
            Package p = findPackage(pv_id, packageCollection);
2327
            Package p = findPackage(pv_id, packageCollection);
2161
               
2328
               
2162
            if ( p == NULL_PACKAGE )
2329
            if ( p == NULL_PACKAGE )
2163
            {
2330
            {
2164
              mLogger.info("queryPackageVersions rset12 package may have been superceded by planned " + pv_id);
2331
              mLogger.info("queryPackageVersions rset12 package may have been superceded by planned " + pv_id);
2165
              ignore = true;
-
 
2166
            }
2332
            }
2167
               
-
 
2168
            String user_email = rset12.getString("user_email");
-
 
2169
               
2333
            else
2170
            if ( user_email == null )
-
 
2171
            {
2334
            {
2172
              // this can be null
-
 
2173
              ignore = true;
2335
              String user_email = rset12.getString("user_email");
2174
            }
-
 
2175
               
2336
               
2176
            if ( !ignore )
2337
              if ( user_email != null )
2177
            {
2338
              {
2178
              p.mBuildFailureEmailCollection.add(user_email);
2339
                p.addEmail(user_email);
-
 
2340
              }
2179
            }
2341
            }
2180
          }
2342
          }
2181
          
2343
          
2182
          rset12.close();
2344
          rset12.close();
2183
          stmt12.close();
2345
          stmt12.close();
Line 2353... Line 2515...
2353
    }
2515
    }
2354
    
2516
    
2355
    if (!daemonMode)
2517
    if (!daemonMode)
2356
    {
2518
    {
2357
      // use a ListIterator as it allows traverseDependencies to modify the packageCollection
2519
      // use a ListIterator as it allows traverseDependencies to modify the packageCollection
2358
      for (ListIterator it = packageCollection.listIterator(); it.hasNext(); )
2520
      for (ListIterator<Package> it = packageCollection.listIterator(); it.hasNext(); )
2359
      {
2521
      {
2360
        Package p = (Package) it.next();
2522
        Package p = it.next();
2361
        traverseDependencies(packageCollection, p, false, it);
2523
        traverseDependencies(packageCollection, p, false, it);
2362
      }
2524
      }
2363
 
2525
 
2364
      for (Iterator it = packageCollection.iterator(); it.hasNext(); )
2526
      for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
2365
      {
2527
      {
2366
        Package p = (Package) it.next();
2528
        Package p = it.next();
2367
        queryBuildInfo(rippleEngine, p);
2529
        queryBuildInfo(rippleEngine, p);
2368
      }
2530
      }
2369
    }
2531
    }
2370
 
2532
 
2371
  }
2533
  }
Line 2489... Line 2651...
2489
   * 2 for each dpv.pv_id in the resultset
2651
   * 2 for each dpv.pv_id in the resultset
2490
   *     call traverseDependencies( packageCollection, dpv.pv_id, true )
2652
   *     call traverseDependencies( packageCollection, dpv.pv_id, true )
2491
   *     if the pv_id is not in the collection, add it
2653
   *     if the pv_id is not in the collection, add it
2492
   *   
2654
   *   
2493
   */
2655
   */
2494
  private void traverseDependencies(Vector packageCollection, Package pkg, 
2656
  private void traverseDependencies(Vector<Package> packageCollection, Package pkg, 
2495
                                     boolean checkCollection, 
2657
                                     boolean checkCollection, 
2496
                                     ListIterator listIterator) throws SQLException, Exception
2658
                                     ListIterator<Package> listIterator) throws SQLException, Exception
2497
  {
2659
  {
2498
    mLogger.debug("traverseDependencies " + checkCollection);
2660
    mLogger.debug("traverseDependencies " + checkCollection);
2499
    boolean pvIdInCollection = false;
2661
    boolean pvIdInCollection = false;
2500
    
2662
    
2501
    if ( checkCollection )
2663
    if ( checkCollection )
2502
    {
2664
    {
2503
      for (Iterator it = packageCollection.iterator(); it.hasNext(); )
2665
      for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
2504
      {
2666
      {
2505
        Package p = (Package) it.next();
2667
        Package p = it.next();
2506
        
2668
        
2507
        if ( p.mId == pkg.mId )
2669
        if ( p.mId == pkg.mId )
2508
        {
2670
        {
2509
          pvIdInCollection = true;
2671
          pvIdInCollection = true;
2510
          break;
2672
          break;
Line 2512... Line 2674...
2512
      }
2674
      }
2513
    }
2675
    }
2514
    
2676
    
2515
    if ( !pvIdInCollection )
2677
    if ( !pvIdInCollection )
2516
    {
2678
    {
2517
      Vector resultset = new Vector();
2679
      Vector<Package> resultset = new Vector<Package>();
2518
 
2680
 
2519
      if ( !mUseDatabase )
2681
      if ( !mUseDatabase )
2520
      {
2682
      {
2521
        mLogger.info("traverseDependencies !mUseDatabase");
2683
        mLogger.info("traverseDependencies !mUseDatabase");
2522
        
2684
        
Line 2622... Line 2784...
2622
            throw new Exception();
2784
            throw new Exception();
2623
          }
2785
          }
2624
        }
2786
        }
2625
      }
2787
      }
2626
      
2788
      
2627
      for (Iterator it = resultset.iterator(); it.hasNext(); )
2789
      for (Iterator<Package> it = resultset.iterator(); it.hasNext(); )
2628
      {
2790
      {
2629
        Package r = (Package) it.next();
2791
        Package r = it.next();
2630
        traverseDependencies(packageCollection, r, true, listIterator);
2792
        traverseDependencies(packageCollection, r, true, listIterator);
2631
        
2793
        
2632
        pvIdInCollection = false;
2794
        pvIdInCollection = false;
2633
        
2795
        
2634
        for (Iterator it2 = packageCollection.iterator(); it2.hasNext(); )
2796
        for (Iterator<Package> it2 = packageCollection.iterator(); it2.hasNext(); )
2635
        {
2797
        {
2636
          Package p = (Package) it2.next();
2798
          Package p = it2.next();
2637
          
2799
          
2638
          if ( p.mId == r.mId )
2800
          if ( p.mId == r.mId )
2639
          {
2801
          {
2640
            pvIdInCollection = true;
2802
            pvIdInCollection = true;
2641
            break;
2803
            break;
Line 2653... Line 2815...
2653
    }
2815
    }
2654
  }
2816
  }
2655
 
2817
 
2656
  /**returns the Package with the matching mID or NULL_PACKAGE if no package has the mID
2818
  /**returns the Package with the matching mID or NULL_PACKAGE if no package has the mID
2657
   */
2819
   */
2658
  private Package findPackage(int id, Vector packageCollection)
2820
  private Package findPackage(int id, Vector<Package> packageCollection)
2659
  {
2821
  {
2660
    mLogger.debug("findPackage 1 id " + id);
2822
    mLogger.debug("findPackage 1 id " + id);
2661
    Package retVal = NULL_PACKAGE;
2823
    Package retVal = NULL_PACKAGE;
2662
 
2824
 
2663
    for (Iterator it = packageCollection.iterator(); it.hasNext(); )
2825
    for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
2664
    {
2826
    {
2665
      Package p = (Package) it.next();
2827
      Package p = it.next();
2666
      
2828
      
2667
      if ( p.mId == id )
2829
      if ( p.mId == id )
2668
      {
2830
      {
2669
        retVal = p;
2831
        retVal = p;
2670
        break;
2832
        break;
Line 2854... Line 3016...
2854
    }
3016
    }
2855
  }
3017
  }
2856
 
3018
 
2857
  /**returns the Package with the matching mAlias or NULL_PACKAGE if no package has the mAlias
3019
  /**returns the Package with the matching mAlias or NULL_PACKAGE if no package has the mAlias
2858
   */
3020
   */
2859
  private Package findPackage(String alias, Vector packageCollection)
3021
  private Package findPackage(String alias, Vector<Package> packageCollection)
2860
  {
3022
  {
2861
    mLogger.debug("findPackage 2 alias " + alias);
3023
    mLogger.debug("findPackage 2 alias " + alias);
2862
    Package retVal = NULL_PACKAGE;
3024
    Package retVal = NULL_PACKAGE;
2863
 
3025
 
2864
    for (Iterator it = packageCollection.iterator(); it.hasNext(); )
3026
    for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
2865
    {
3027
    {
2866
      Package p = (Package) it.next();
3028
      Package p = it.next();
2867
      
3029
      
2868
      if ( p.mAlias.compareTo( alias ) == 0 )
3030
      if ( p.mAlias.compareTo( alias ) == 0 )
2869
      {
3031
      {
2870
        retVal = p;
3032
        retVal = p;
2871
        break;
3033
        break;
Line 3652... Line 3814...
3652
    boolean retVal = true;
3814
    boolean retVal = true;
3653
    
3815
    
3654
    try
3816
    try
3655
    {
3817
    {
3656
      mReleaseConfigIndex = 0;
3818
      mReleaseConfigIndex = 0;
3657
      ReleaseConfig rc = (ReleaseConfig)mReleaseConfigCollection.get( mReleaseConfigIndex );
3819
      ReleaseConfig rc = mReleaseConfigCollection.get( mReleaseConfigIndex );
3658
      rcon_id.value = rc.get_rcon_id();
3820
      rcon_id.value = rc.get_rcon_id();
3659
    }
3821
    }
3660
    catch( ArrayIndexOutOfBoundsException e )
3822
    catch( ArrayIndexOutOfBoundsException e )
3661
    {
3823
    {
3662
      retVal = false;
3824
      retVal = false;
Line 3677... Line 3839...
3677
    boolean retVal = true;
3839
    boolean retVal = true;
3678
    
3840
    
3679
    try
3841
    try
3680
    {
3842
    {
3681
      mReleaseConfigIndex = 0;
3843
      mReleaseConfigIndex = 0;
3682
      ReleaseConfig rc = (ReleaseConfig)mReleaseConfigCollection.get( mReleaseConfigIndex );
3844
      ReleaseConfig rc = mReleaseConfigCollection.get( mReleaseConfigIndex );
3683
      rtag_id.value = rc.get_rtag_id();
3845
      rtag_id.value = rc.get_rtag_id();
3684
      rcon_id.value = rc.get_rcon_id();
3846
      rcon_id.value = rc.get_rcon_id();
3685
      daemon_mode.value = rc.get_daemon_mode();
3847
      daemon_mode.value = rc.get_daemon_mode();
3686
      gbebuildfilter.value = rc.get_gbebuildfilter();
3848
      gbebuildfilter.value = rc.get_gbebuildfilter();
3687
    }
3849
    }
Line 3703... Line 3865...
3703
    boolean retVal = true;
3865
    boolean retVal = true;
3704
    
3866
    
3705
    try
3867
    try
3706
    {
3868
    {
3707
      mRunLevelIndex = 0;
3869
      mRunLevelIndex = 0;
3708
      RunLevel rl = (RunLevel)mRunLevelCollection.get( mRunLevelIndex );
3870
      RunLevel rl = mRunLevelCollection.get( mRunLevelIndex );
3709
      rcon_id.value = rl.get_rcon_id();
3871
      rcon_id.value = rl.get_rcon_id();
3710
      current_run_level.value = rl.get_current_run_level();
3872
      current_run_level.value = rl.get_current_run_level();
3711
    }
3873
    }
3712
    catch( ArrayIndexOutOfBoundsException e )
3874
    catch( ArrayIndexOutOfBoundsException e )
3713
    {
3875
    {
Line 3726... Line 3888...
3726
    boolean retVal = true;
3888
    boolean retVal = true;
3727
    
3889
    
3728
    try
3890
    try
3729
    {
3891
    {
3730
      mReleaseConfigIndex++;
3892
      mReleaseConfigIndex++;
3731
      ReleaseConfig rc = (ReleaseConfig)mReleaseConfigCollection.get( mReleaseConfigIndex );
3893
      ReleaseConfig rc = mReleaseConfigCollection.get( mReleaseConfigIndex );
3732
      rcon_id.value = rc.get_rcon_id();
3894
      rcon_id.value = rc.get_rcon_id();
3733
    }
3895
    }
3734
    catch( ArrayIndexOutOfBoundsException e )
3896
    catch( ArrayIndexOutOfBoundsException e )
3735
    {
3897
    {
3736
      retVal = false;
3898
      retVal = false;
Line 3751... Line 3913...
3751
    boolean retVal = true;
3913
    boolean retVal = true;
3752
    
3914
    
3753
    try
3915
    try
3754
    {
3916
    {
3755
      mReleaseConfigIndex++;
3917
      mReleaseConfigIndex++;
3756
      ReleaseConfig rc = (ReleaseConfig)mReleaseConfigCollection.get( mReleaseConfigIndex );
3918
      ReleaseConfig rc = mReleaseConfigCollection.get( mReleaseConfigIndex );
3757
      rtag_id.value = rc.get_rtag_id();
3919
      rtag_id.value = rc.get_rtag_id();
3758
      rcon_id.value = rc.get_rcon_id();
3920
      rcon_id.value = rc.get_rcon_id();
3759
      daemon_mode.value = rc.get_daemon_mode();
3921
      daemon_mode.value = rc.get_daemon_mode();
3760
      gbebuildfilter.value = rc.get_gbebuildfilter();
3922
      gbebuildfilter.value = rc.get_gbebuildfilter();
3761
    }
3923
    }
Line 3777... Line 3939...
3777
    boolean retVal = true;
3939
    boolean retVal = true;
3778
    
3940
    
3779
    try
3941
    try
3780
    {
3942
    {
3781
      mRunLevelIndex++;
3943
      mRunLevelIndex++;
3782
      RunLevel rl = (RunLevel)mRunLevelCollection.get( mRunLevelIndex );
3944
      RunLevel rl = mRunLevelCollection.get( mRunLevelIndex );
3783
      rcon_id.value = rl.get_rcon_id();
3945
      rcon_id.value = rl.get_rcon_id();
3784
      current_run_level.value = rl.get_current_run_level();
3946
      current_run_level.value = rl.get_current_run_level();
3785
    }
3947
    }
3786
    catch( ArrayIndexOutOfBoundsException e )
3948
    catch( ArrayIndexOutOfBoundsException e )
3787
    {
3949
    {
Line 4572... Line 4734...
4572
            }
4734
            }
4573
            
4735
            
4574
            rset.close();
4736
            rset.close();
4575
            stmt.close();
4737
            stmt.close();
4576
          }
4738
          }
-
 
4739
          
-
 
4740
          if (configured)
-
 
4741
          {
4577
          CallableStatement stmt = mConnection.prepareCall("insert into release_manager.run_level (rcon_id) values (" + rcon_id + ")" );
4742
            CallableStatement stmt = mConnection.prepareCall("insert into release_manager.run_level (rcon_id) values (" + rcon_id + ")" );
4578
          stmt.executeUpdate();
4743
            stmt.executeUpdate();
4579
          stmt.close();
4744
            stmt.close();
-
 
4745
          }
4580
        }
4746
        }
4581
 
4747
 
4582
        {
4748
        {
4583
          CallableStatement stmt = mConnection.prepareCall("update release_manager.run_level set current_run_level=" + runLevel + " where rcon_id=" + rcon_id);
4749
          CallableStatement stmt = mConnection.prepareCall("update release_manager.run_level set current_run_level=" + runLevel + " where rcon_id=" + rcon_id);
4584
          stmt.executeUpdate();
4750
          stmt.executeUpdate();