Subversion Repositories DevTools

Rev

Rev 7082 | Rev 7099 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7082 Rev 7088
Line 2470... Line 2470...
2470
        }
2470
        }
2471
        return rv;
2471
        return rv;
2472
    }
2472
    }
2473
 
2473
 
2474
    /**
2474
    /**
2475
     * Extract all package-version information for planned, test and released packages
2475
     * Extract all package-version information for released packages
2476
     * In escrow mode there are no Planned or Test packages.
2476
     * Used in both Escrow and non-Escrow modes
2477
     * 
2477
     * 
2478
     * @param   rippleEngine        - Instance to use
2478
     * @param   rippleEngine        - Instance to use
2479
     * @param   packageCollection   - Package Collection structure to fill. Expected to be cleared
2479
     * @param   packageCollection   - Package Collection structure to fill. Expected to be cleared
2480
     * @param   baseline            - RtagId of the release being processed, BomId of an Escrow being processed
2480
     * @param   baseline            - RtagId of the release being processed, BomId of an Escrow being processed
2481
     *  
2481
     *  
2482
     * Overridden in ReleaseManagerUtf
2482
     * Overridden in ReleaseManagerUtf
2483
     *  
2483
     *  
2484
     */
2484
     */
2485
    
-
 
2486
    protected void queryPackageVersions(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
2485
    protected void queryPackageVersions(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
2487
    {
2486
    {
2488
        Phase phase = new Phase("rmData");
2487
        Phase phase = new Phase("rmData");
2489
        mLogger.debug("queryPackageVersions {}", mDaemon);
2488
        mLogger.debug("queryPackageVersions {}", mDaemon);
2490
 
2489
 
Line 2492... Line 2491...
2492
        {
2491
        {
2493
            if (mDaemon)
2492
            if (mDaemon)
2494
            {
2493
            {
2495
                // Get package information on ALL released packages within the release of interest
2494
                // Get package information on ALL released packages within the release of interest
2496
                //
2495
                //
2497
                mLogger.debug("queryPackageVersions: stmt1");
-
 
2498
                phase.setPhase("getPlannedPkgs1");
-
 
2499
                PreparedStatement stmt1 = mConnection.prepareStatement(
-
 
2500
                        "select pl.pv_id, p.pkg_id, p.pkg_name, pv.pkg_version, " +
-
 
2501
                                " pv.v_ext, pv.change_type, pv.ripple_field," +
-
 
2502
                                " pv.major_limit, pv.minor_limit, pv.patch_limit, pv.build_number_limit," +
-
 
2503
                                " pv.modified_stamp," +
-
 
2504
                                " release_manager.PK_RMAPI.return_vcs_tag(pl.pv_id) AS vcsTag," +
-
 
2505
                                " pv.build_time" +
-
 
2506
                                " from release_manager.planned pl," +
-
 
2507
                                "      release_manager.package_versions pv," +
-
 
2508
                                "      release_manager.packages p" +
-
 
2509
                                " where pl.rtag_id=" + baseline +
-
 
2510
                                "   and pv.build_type='A' and pv.dlocked='A'" +
-
 
2511
                                "   and pv.pv_id=pl.pv_id and p.pkg_id=pv.pkg_id" +
-
 
2512
                                " order by pv.modified_stamp"
-
 
2513
                        );
-
 
2514
                stmt1.setFetchSize(500);
-
 
2515
                RmResultSet rset1 = new RmResultSet(stmt1.executeQuery(), "queryPackageVersions rset1");
-
 
2516
 
-
 
2517
                while( rset1.next() )
-
 
2518
                {
-
 
2519
                    int pv_id = rset1.mustGetKeyInt("pv_id");
-
 
2520
                    int pkg_id = rset1.mustGetInt("pkg_id");
-
 
2521
                    String pkg_name = rset1.mustGetString("pkg_name");
-
 
2522
                    String pkg_version = rset1.mustGetString("pkg_version");
-
 
2523
                    int buildTime = rset1.getInt("build_time", 60);
-
 
2524
 
-
 
2525
                    // Previous Version of this package, without the project suffix
-
 
2526
                    String pkg_prevVersion = getBaseVersionNumber(pv_id);
-
 
2527
                    if ( pkg_prevVersion == null)
-
 
2528
                    {
-
 
2529
                        mLogger.error("queryPackageVersions. No Previous version {}", pv_id);
-
 
2530
                        // show stopper
-
 
2531
                        throw new Exception("queryPackageVersions. No Previous version" + pv_id);
-
 
2532
                    }
-
 
2533
                    
-
 
2534
                    String v_ext = rset1.getString("v_ext","");
-
 
2535
                    String change_type = rset1.getString("change_type", "P");
-
 
2536
 
-
 
2537
                    char ct = 'x';
-
 
2538
 
-
 
2539
                    if ( change_type.compareTo("M") == 0 )
-
 
2540
                    {
-
 
2541
                        ct = 'M';
-
 
2542
                    }
-
 
2543
                    else if ( change_type.compareTo("N") == 0 )
-
 
2544
                    {
-
 
2545
                        ct = 'N';
-
 
2546
                    }
-
 
2547
                    else if ( change_type.compareTo("P") == 0 )
-
 
2548
                    {
-
 
2549
                        ct = 'P';
-
 
2550
                    }
-
 
2551
                    else if ( change_type.compareTo("F") == 0 )
-
 
2552
                    {
-
 
2553
                        ct = 'F';
-
 
2554
                    }
-
 
2555
 
-
 
2556
                    if ( ct != 'x' )
-
 
2557
                    {
-
 
2558
                        String ripple_field = rset1.getString("ripple_field", "b");
-
 
2559
                        int major_limit = rset1.getInt("major_limit", 0);
-
 
2560
                        int minor_limit = rset1.getInt("minor_limit",0);
-
 
2561
                        int patch_limit = rset1.getInt("patch_limit",0);
-
 
2562
                        int build_number_limit = rset1.getInt("build_number_limit",0);
-
 
2563
                        String vcs_tag = rset1.getString("vcsTag", "");
-
 
2564
 
-
 
2565
                        Package p = new Package(pkg_id, pv_id, pkg_name, pkg_version, v_ext, pkg_name + v_ext, vcs_tag, ripple_field.charAt(0), ct);
-
 
2566
                        p.mDirectlyPlanned = true;
-
 
2567
                        p.mBuildReason = BuildReason.NewVersion;
-
 
2568
                        p.mMajorLimit = major_limit;
-
 
2569
                        p.mMinorLimit = minor_limit;
-
 
2570
                        p.mPatchLimit = patch_limit;
-
 
2571
                        p.mBuildLimit = build_number_limit;
-
 
2572
                        p.mPrevVersion = pkg_prevVersion;
-
 
2573
                        p.mBuildTime = buildTime;
-
 
2574
 
-
 
2575
                        Package prevPlannedPackage = findPackage(p.mAlias, packageCollection);
-
 
2576
 
-
 
2577
                        // If there are multiple packages with the same Alias, then only the first one
-
 
2578
                        // will be placed in the build set. The will be the oldest, the first one released
-
 
2579
                        // to be built
-
 
2580
                        if ( prevPlannedPackage == NULL_PACKAGE )
-
 
2581
                        {
-
 
2582
                            mLogger.info("queryPackageVersions rset1 no previous planned package {}", pv_id);
-
 
2583
                            packageCollection.add(p);
-
 
2584
                        }
-
 
2585
                    }
-
 
2586
                }
-
 
2587
 
-
 
2588
                rset1.close();
-
 
2589
                stmt1.close();
-
 
2590
 
-
 
2591
                // get planned package dependency info
-
 
2592
                mLogger.debug("queryPackageVersions: stmt2");
-
 
2593
                phase.setPhase("getPlannedPkgs2");
-
 
2594
                PreparedStatement stmt2 = mConnection.prepareStatement(
-
 
2595
                        "select pl.pv_id, p.pkg_name, dpv.v_ext, pv.modified_stamp " +
-
 
2596
                                "from release_manager.planned pl,"+
-
 
2597
                                "     release_manager.package_versions pv,"+
-
 
2598
                                "     release_manager.package_dependencies pd," +
-
 
2599
                                "     release_manager.package_versions dpv,"+
-
 
2600
                                "     release_manager.packages p " +
-
 
2601
                                " where pl.rtag_id=" + baseline + 
-
 
2602
                                "  and pv.build_type='A'"+
-
 
2603
                                "  and pv.dlocked='A' " +
-
 
2604
                                "  and pv.pv_id = pl.pv_id"+
-
 
2605
                                "  and pd.pv_id=pl.pv_id"+
-
 
2606
                                "  and dpv.pv_id=pd.dpv_id"+
-
 
2607
                                "  and p.pkg_id=dpv.pkg_id " +
-
 
2608
                                " order by pv.modified_stamp"
-
 
2609
                        );
-
 
2610
                stmt2.setFetchSize(500);
-
 
2611
                RmResultSet rset2 = new RmResultSet(stmt2.executeQuery(), "queryPackageVersions rset2");
-
 
2612
 
-
 
2613
                while( rset2.next() )
-
 
2614
                {
-
 
2615
                    boolean ignore = false;
-
 
2616
 
-
 
2617
                    int pv_id = rset2.mustGetKeyInt("pv_id");
-
 
2618
                    Package p = findPackage(pv_id, packageCollection);
-
 
2619
 
-
 
2620
                    if ( p == NULL_PACKAGE )
-
 
2621
                    {
-
 
2622
                        mLogger.info("queryPackageVersions rset2 package superceded by planned {}", pv_id);
-
 
2623
                        ignore = true;
-
 
2624
                    }
-
 
2625
 
-
 
2626
                    String pkg_name = rset2.mustGetString("pkg_name");
-
 
2627
                    String v_ext = rset2.getString("v_ext","");
-
 
2628
                    if ( !ignore )
-
 
2629
                    {
-
 
2630
                        p.mDependencyCollection.add(pkg_name + v_ext);
-
 
2631
                        p.mDependencyIDCollection.add(-1);
-
 
2632
                    }
-
 
2633
                }
-
 
2634
 
-
 
2635
                rset2.close();
-
 
2636
                stmt2.close();
-
 
2637
 
-
 
2638
                // get planned package build info
-
 
2639
                mLogger.debug("queryPackageVersions: stmt3");
-
 
2640
                phase.setPhase("getPlannedPkgs3");
-
 
2641
                PreparedStatement stmt3 = mConnection.prepareStatement(
-
 
2642
                        "select pl.pv_id, bm.bm_name, bsa.bsa_name, pv.modified_stamp " +
-
 
2643
                                "from release_manager.planned pl," +
-
 
2644
                                "     release_manager.package_versions pv," +
-
 
2645
                                "     release_manager.package_build_info pbi," +
-
 
2646
                                "     release_manager.build_machines bm," +
-
 
2647
                                "     release_manager.build_standards_addendum bsa " +
-
 
2648
                                "where pl.rtag_id=" + baseline + 
-
 
2649
                                "     and pv.build_type='A' and pv.dlocked='A' " +
-
 
2650
                                "     and pv.pv_id = pl.pv_id" +
-
 
2651
                                "     and pbi.pv_id=pv.pv_id" +
-
 
2652
                                "     and bm.bm_id=pbi.bm_id" +
-
 
2653
                                "     and bsa.bsa_id=pbi.bsa_id " +
-
 
2654
                                "order by pv.modified_stamp"
-
 
2655
                        );
-
 
2656
                stmt3.setFetchSize(500);
-
 
2657
                RmResultSet rset3 = new RmResultSet(stmt3.executeQuery(), "queryPackageVersions rset3");
-
 
2658
 
-
 
2659
                while( rset3.next() )
-
 
2660
                {
-
 
2661
                    boolean ignore = false;
-
 
2662
                    int pv_id = rset3.mustGetKeyInt("pv_id");
-
 
2663
 
-
 
2664
                    Package p = findPackage(pv_id, packageCollection);
-
 
2665
                    if ( p == NULL_PACKAGE )
-
 
2666
                    {
-
 
2667
                        mLogger.info("queryPackageVersions rset3 package superceded by planned {}", pv_id);
-
 
2668
                        ignore = true;
-
 
2669
                    }
-
 
2670
 
-
 
2671
                    String bm_name = rset3.mustGetString("bm_name");
-
 
2672
                    String bsa_name = rset3.mustGetString("bsa_name");
-
 
2673
 
-
 
2674
                    if ( !ignore )
-
 
2675
                    {
-
 
2676
                        BuildStandard bs = new BuildStandard(rippleEngine, bm_name, bsa_name);
-
 
2677
                        if ( bs.supportedBuildStandard() )
-
 
2678
                        {
-
 
2679
                            p.mBuildStandardCollection.add(bs);
-
 
2680
                        }
-
 
2681
                    }
-
 
2682
                }
-
 
2683
 
-
 
2684
                rset3.close();
-
 
2685
                stmt3.close();
-
 
2686
 
-
 
2687
                // get planned package unit test info
-
 
2688
                mLogger.debug("queryPackageVersions: stmt4");
-
 
2689
                phase.setPhase("getPlannedPkgs4");
-
 
2690
                PreparedStatement stmt4 = mConnection.prepareStatement(
-
 
2691
                        "select pl.pv_id, tt.test_type_name, pv.modified_stamp" +
-
 
2692
                        "  from release_manager.planned pl,"+
-
 
2693
                        "       release_manager.package_versions pv,"+
-
 
2694
                        "       release_manager.unit_tests ut," +
-
 
2695
                        "       release_manager.test_types tt" +
-
 
2696
                        " where pl.rtag_id=" + baseline + 
-
 
2697
                        "   and pv.build_type='A'" +
-
 
2698
                        "   and pv.dlocked='A'" +
-
 
2699
                        "  and pv.pv_id = pl.pv_id" +
-
 
2700
                        "  and ut.pv_id=pv.pv_id" +
-
 
2701
                        "  and tt.test_type_id=ut.test_types_fk" +
-
 
2702
                        " order by pv.modified_stamp"
-
 
2703
                        );
-
 
2704
                stmt4.setFetchSize(500);
-
 
2705
                RmResultSet rset4 = new RmResultSet(stmt4.executeQuery(), "queryPackageVersions rset4");
-
 
2706
 
-
 
2707
                while( rset4.next() )
-
 
2708
                {
-
 
2709
                    boolean ignore = false;
-
 
2710
 
-
 
2711
                    int pv_id = rset4.mustGetKeyInt("pv_id");
-
 
2712
                    Package p = findPackage(pv_id, packageCollection);
-
 
2713
                    if ( p == NULL_PACKAGE )
-
 
2714
                    {
-
 
2715
                        mLogger.info("queryPackageVersions rset4 package superceded by planned {}", pv_id);
-
 
2716
                        ignore = true;
-
 
2717
                    }
-
 
2718
 
-
 
2719
                    String test_type_name = rset4.mustGetString("test_type_name");
-
 
2720
                    if ( !ignore )
-
 
2721
                    {
-
 
2722
                        if ( test_type_name.compareTo("Autobuild UTF") == 0 )
-
 
2723
                        {
-
 
2724
                            p.mHasAutomatedUnitTests = true;
-
 
2725
                        }
-
 
2726
                    }
-
 
2727
                }
-
 
2728
 
-
 
2729
                rset4.close();
-
 
2730
                stmt4.close();
-
 
2731
 
-
 
2732
                // get planned package build failure info...
-
 
2733
                //      view based
-
 
2734
                mLogger.debug("queryPackageVersions: stmt5");
-
 
2735
                phase.setPhase("getPlannedPkgs6");
-
 
2736
                PreparedStatement stmt5 = mConnection.prepareStatement(
-
 
2737
                        "select pl.pv_id, u.user_email, pv.modified_stamp " +
-
 
2738
                                " from release_manager.planned pl, " +
-
 
2739
                                "      release_manager.release_tags rt, " +
-
 
2740
                                "      release_manager.package_versions pv, " +
-
 
2741
                                "      release_manager.autobuild_failure af, " +
-
 
2742
                                "      release_manager.members_group mg, " +
-
 
2743
                                "      release_manager.users u " +
-
 
2744
                                " where pl.rtag_id=" + baseline + 
-
 
2745
                                "      and rt.rtag_id=pl.rtag_id" +
-
 
2746
                                "      and pv.build_type='A' and pv.dlocked='A' " +
-
 
2747
                                "      and pv.pv_id = pl.pv_id " +
-
 
2748
                                "      and af.view_id=pl.view_id " +
-
 
2749
                                "      and mg.group_email_id=af.group_email_id " +
-
 
2750
                                "      and u.user_id=mg.user_id " +
-
 
2751
                                "      and af.proj_id=rt.proj_id " +
-
 
2752
                                " order by pv.modified_stamp"
-
 
2753
                        );
-
 
2754
                stmt5.setFetchSize(500);
-
 
2755
                RmResultSet rset5 = new RmResultSet(stmt5.executeQuery(), "queryPackageVersions rset5");
-
 
2756
 
-
 
2757
                while( rset5.next() )
-
 
2758
                {
-
 
2759
                    int pv_id = rset5.mustGetKeyInt("pv_id");
-
 
2760
                    Package p = findPackage(pv_id, packageCollection);
-
 
2761
                    if ( p == NULL_PACKAGE )
-
 
2762
                    {
-
 
2763
                        mLogger.info("queryPackageVersions rset5 package superceded by planned {}", pv_id);
-
 
2764
                    }
-
 
2765
                    else
-
 
2766
                    {
-
 
2767
                        String user_email = rset5.getString("user_email", null);
-
 
2768
                        if ( user_email != null )
-
 
2769
                        {
-
 
2770
                            p.addEmail(user_email);
-
 
2771
                        }
-
 
2772
                    }
-
 
2773
                }
-
 
2774
 
-
 
2775
                rset5.close();
-
 
2776
                stmt5.close();
-
 
2777
 
-
 
2778
                // get planned package build failure info...
-
 
2779
                // package version
-
 
2780
                mLogger.debug("queryPackageVersions: stmt6");
-
 
2781
                phase.setPhase("getPlannedPkgs7");
-
 
2782
                PreparedStatement stmt6 = mConnection.prepareStatement(
-
 
2783
                        "select pl.pv_id, u1.user_email, u2.user_email, u3.user_email, pv.modified_stamp" +
-
 
2784
                        " from release_manager.planned pl," +
-
 
2785
                        "      release_manager.release_tags rt," +
-
 
2786
                        "      release_manager.package_versions pv," +
-
 
2787
                        "      release_manager.users u1," +
-
 
2788
                        "      release_manager.users u2," +
-
 
2789
                        "      release_manager.users u3 " +
-
 
2790
                        " where pl.rtag_id=" + baseline + 
-
 
2791
                        "   and rt.rtag_id=pl.rtag_id" +
-
 
2792
                        "   and pv.build_type='A'" +
-
 
2793
                        "   and pv.dlocked='A' " +
-
 
2794
                        "   and pv.pv_id = pl.pv_id" +
-
 
2795
                        "   and u1.user_id=pv.creator_id" +
-
 
2796
                        "   and u2.user_id=pv.owner_id" +
-
 
2797
                        "   and u3.user_id=pv.modifier_id" +
-
 
2798
                        "   order by pv.modified_stamp"
-
 
2799
                        );
-
 
2800
                stmt6.setFetchSize(500);
-
 
2801
                RmResultSet rset6 = new RmResultSet(stmt6.executeQuery(), "queryPackageVersions rset6");
-
 
2802
 
-
 
2803
                while( rset6.next() )
-
 
2804
                {
-
 
2805
                    int pv_id = rset6.mustGetKeyInt("pv_id");
-
 
2806
                    Package p = findPackage(pv_id, packageCollection);
-
 
2807
                    if ( p == NULL_PACKAGE )
-
 
2808
                    {
-
 
2809
                        mLogger.info("queryPackageVersions rset6 package superceded by planned {}", pv_id);
-
 
2810
                    }
-
 
2811
                    else
-
 
2812
                    {
-
 
2813
 
-
 
2814
                        // walk the 3 columns of user_email in the resultset
-
 
2815
                        // columns 2, 3 and 4, all of the same name, respectively
-
 
2816
                        for(int column=2; column<5; column++ )
-
 
2817
                        {
-
 
2818
                            String user_email = rset6.getString(column,null);
-
 
2819
                            if ( user_email != null )
-
 
2820
                            {
-
 
2821
                                p.addEmail(user_email);
-
 
2822
                            }
-
 
2823
                        }
-
 
2824
                    }
-
 
2825
                }
-
 
2826
 
-
 
2827
                rset6.close();
-
 
2828
                stmt6.close();
-
 
2829
 
-
 
2830
                // get planned package advisory ripple info
-
 
2831
                mLogger.debug("queryPackageVersions: stmt7");
-
 
2832
                phase.setPhase("getPlannedPkgs8");
-
 
2833
                PreparedStatement stmt7 = mConnection.prepareStatement(
-
 
2834
                        "select pl.pv_id, pv.modified_stamp " +
-
 
2835
                        " from release_manager.planned pl," +
-
 
2836
                        "      release_manager.package_versions pv," +
-
 
2837
                        "      release_manager.advisory_ripple ar " +
-
 
2838
                        " where pl.rtag_id=" + baseline + 
-
 
2839
                        "   and pv.build_type='A'" +
-
 
2840
                        "    and pv.dlocked='A' " +
-
 
2841
                        "    and pv.pv_id = pl.pv_id" +
-
 
2842
                        "    and ar.rtag_id=pl.rtag_id" +
-
 
2843
                        "    and ar.pv_id=pl.pv_id " +
-
 
2844
                        " order by pv.modified_stamp"
-
 
2845
                        );
-
 
2846
                stmt7.setFetchSize(500);
-
 
2847
                RmResultSet rset7 = new RmResultSet(stmt7.executeQuery(), "queryPackageVersions rset7");
-
 
2848
 
-
 
2849
                while( rset7.next() )
-
 
2850
                {
-
 
2851
                    boolean ignore = false;
-
 
2852
 
-
 
2853
                    int pv_id = rset7.mustGetInt("pv_id");
-
 
2854
                    Package p = findPackage(pv_id, packageCollection);
-
 
2855
                    if ( p == NULL_PACKAGE )
-
 
2856
                    {
-
 
2857
                        mLogger.info("queryPackageVersions rset7 package superceded by planned {}", pv_id);
-
 
2858
                        ignore = true;
-
 
2859
                    }
-
 
2860
 
-
 
2861
                    if ( !ignore )
-
 
2862
                    {
-
 
2863
                        p.mAdvisoryRipple = true;
-
 
2864
                    }
-
 
2865
                }
-
 
2866
 
-
 
2867
                rset7.close();
-
 
2868
                stmt7.close();
-
 
2869
                
-
 
2870
                //  Process Scheduled Build Approvals. OpCode is 2
-
 
2871
                //      These are treated as requests to not-include a 'Pending' package-version in the current build set
-
 
2872
                //      If there is an un-expired instruction, then remove the pending package-version from the build set
-
 
2873
                //
-
 
2874
                //  Process all expired requests
-
 
2875
                //      These are scheduled builds were the scheduled time has been exceeded
-
 
2876
                //      Simply discard the instruction and let the Approved build proceed
-
 
2877
                //
-
 
2878
                DaemonInstruction di = new DaemonInstruction(baseline, 2, true);
-
 
2879
              
-
 
2880
                phase.setPhase("removeOldSchedBuilds");
-
 
2881
                while ( getDaemonInst( di ) )
-
 
2882
                {
-
 
2883
                    markDaemonInstCompleted(di.instruction);
-
 
2884
                    mLogger.info("queryPackageVersions remove Scheduled Build Approvals {}", di.pvId);
-
 
2885
                }
-
 
2886
                
-
 
2887
                phase.setPhase("getSchedBuilds");
-
 
2888
                di = new DaemonInstruction(baseline, 2, false);
-
 
2889
                while ( getDaemonInst( di ) )
-
 
2890
                {
-
 
2891
                    Package p = findPackage(di.pvId, packageCollection);
-
 
2892
 
-
 
2893
                    if ( p != NULL_PACKAGE )
-
 
2894
                    {
-
 
2895
                        mLogger.info("queryPackageVersions Scheduled Build Approvals {}", di.pvId);
-
 
2896
                        packageCollection.remove(p);
-
 
2897
                    }
-
 
2898
                    else
-
 
2899
                    {
-
 
2900
                        // discard - the package no longer exists
-
 
2901
                        markDaemonInstCompleted( di.instruction );
-
 
2902
                        mLogger.info("queryPackageVersions remove Scheduled Build Approvals for nonexistent package {}", di.pvId);
-
 
2903
                    }
-
 
2904
                }                
-
 
2905
 
-
 
2906
                // get released package info
-
 
2907
                //    Get package information on ALL released packages within the release of interest
-
 
2908
                //
-
 
2909
                mLogger.debug("queryPackageVersions: stmt8");
2496
                mLogger.debug("queryPackageVersions: stmt8");
2910
                phase.setPhase("getAllPkgs1");
2497
                phase.setPhase("getAllPkgs1");
2911
                PreparedStatement stmt8 = mConnection.prepareStatement(
2498
                PreparedStatement stmt8 = mConnection.prepareStatement(
2912
                        "SELECT rc.pv_id," +
2499
                        "SELECT rc.pv_id," +
2913
                                " p.pkg_id," +
2500
                                " p.pkg_id," +
Line 3025... Line 2612...
3025
 
2612
 
3026
                while( rset9.next() )
2613
                while( rset9.next() )
3027
                {
2614
                {
3028
                    int pv_id = rset9.mustGetKeyInt("pv_id");
2615
                    int pv_id = rset9.mustGetKeyInt("pv_id");
3029
                    int dpv_id = rset9.mustGetInt("dpv_id");
2616
                    int dpv_id = rset9.mustGetInt("dpv_id");
3030
                    Package p = findPackage(pv_id, packageCollection);
-
 
3031
 
-
 
3032
                    if ( p == NULL_PACKAGE )
-
 
3033
                    {
-
 
3034
                        mLogger.info("queryPackageVersions rset9 package superceded by planned {}", pv_id);
-
 
3035
                        ignore = true;
-
 
3036
                    }
-
 
3037
 
-
 
3038
                    String pkg_name = rset9.mustGetString("pkg_name");
2617
                    String pkg_name = rset9.mustGetString("pkg_name");
3039
                    String v_ext = rset9.getString("v_ext","");
2618
                    String v_ext = rset9.getString("v_ext","");
3040
 
2619
 
3041
                    Package p = findPackage(pv_id, packageCollection);
2620
                    Package p = findPackage(pv_id, packageCollection);
3042
                    if ( p != NULL_PACKAGE )
2621
                    if ( p != NULL_PACKAGE )
Line 3073... Line 2652...
3073
                RmResultSet rset10 = new RmResultSet(stmt10.executeQuery(), "queryPackageVersions rset10");
2652
                RmResultSet rset10 = new RmResultSet(stmt10.executeQuery(), "queryPackageVersions rset10");
3074
 
2653
 
3075
                while( rset10.next() )
2654
                while( rset10.next() )
3076
                {
2655
                {
3077
                    int pv_id = rset10.mustGetKeyInt("pv_id");
2656
                    int pv_id = rset10.mustGetKeyInt("pv_id");
3078
                    Package p = findPackage(pv_id, packageCollection);
-
 
3079
                    if ( p == NULL_PACKAGE )
-
 
3080
                    {
-
 
3081
                        mLogger.info("queryPackageVersions rset10 package superceded by planned {}", pv_id);
-
 
3082
                        ignore = true;
-
 
3083
                    }
-
 
3084
 
-
 
3085
                    String bm_name = rset10.mustGetString("bm_name");
2657
                    String bm_name = rset10.mustGetString("bm_name");
3086
                    String bsa_name = rset10.mustGetString("bsa_name");
2658
                    String bsa_name = rset10.mustGetString("bsa_name");
3087
 
2659
 
3088
                    Package p = findPackage(pv_id, packageCollection);
2660
                    Package p = findPackage(pv_id, packageCollection);
3089
                    if ( p != NULL_PACKAGE )
2661
                    if ( p != NULL_PACKAGE )
Line 3117... Line 2689...
3117
                    int pv_id = rset11.mustGetKeyInt("pv_id");
2689
                    int pv_id = rset11.mustGetKeyInt("pv_id");
3118
                    String test_type_name = rset11.mustGetString("test_type_name");
2690
                    String test_type_name = rset11.mustGetString("test_type_name");
3119
                    Package p = findPackage(pv_id, packageCollection);
2691
                    Package p = findPackage(pv_id, packageCollection);
3120
                    if ( p != NULL_PACKAGE )
2692
                    if ( p != NULL_PACKAGE )
3121
                    {
2693
                    {
3122
                        mLogger.info("queryPackageVersions rset11 package superceded by planned {}", pv_id);
-
 
3123
                        ignore = true;
-
 
3124
                    }
-
 
3125
 
-
 
3126
                    String test_type_name = rset11.mustGetString("test_type_name");
-
 
3127
                    if ( !ignore )
-
 
3128
                    {
-
 
3129
                        if ( test_type_name.compareTo("Autobuild UTF") == 0 )
2694
                        if ( test_type_name.compareTo("Autobuild UTF") == 0 )
3130
                        {
2695
                        {
3131
                            p.mHasAutomatedUnitTests = true;
2696
                            p.mHasAutomatedUnitTests = true;
3132
                        }
2697
                        }
3133
                    }
2698
                    }
Line 3167... Line 2732...
3167
                    String user_email = rset12.getString("user_email",null);
2732
                    String user_email = rset12.getString("user_email",null);
3168
                    Package p = findPackage(pv_id, packageCollection);
2733
                    Package p = findPackage(pv_id, packageCollection);
3169
 
2734
 
3170
                    if ( p != NULL_PACKAGE )
2735
                    if ( p != NULL_PACKAGE )
3171
                    {
2736
                    {
3172
                        mLogger.info("queryPackageVersions rset12 package superceded by planned {}", pv_id);
2737
                        p.addEmail(user_email);
3173
                    }
2738
                    }
3174
                }
2739
                }
3175
 
2740
 
3176
                rset12.close();
2741
                rset12.close();
3177
                stmt12.close();
2742
                stmt12.close();
Line 3193... Line 2758...
3193
                {
2758
                {
3194
                    int pv_id = rset14.mustGetInt("pv_id");
2759
                    int pv_id = rset14.mustGetInt("pv_id");
3195
                    Package p = findPackage(pv_id, packageCollection);
2760
                    Package p = findPackage(pv_id, packageCollection);
3196
                    if ( p != NULL_PACKAGE )
2761
                    if ( p != NULL_PACKAGE )
3197
                    {
2762
                    {
3198
                        mLogger.info("queryPackageVersions rset14 package superceded by planned {}", pv_id);
-
 
3199
                        ignore = true;
-
 
3200
                    }
-
 
3201
 
-
 
3202
                    if ( !ignore )
-
 
3203
                    {
-
 
3204
                        p.mAdvisoryRipple = true;
2763
                        p.mAdvisoryRipple = true;
3205
                    }
2764
                    }
3206
                }
2765
                }
3207
 
2766
 
3208
                rset14.close();
2767
                rset14.close();
3209
                stmt14.close();
2768
                stmt14.close();
3210
 
-
 
3211
                // Daemon Instruction: Force Package Ripple
-
 
3212
                //  An op code of 0 means force ripple
-
 
3213
 
-
 
3214
                phase.setPhase("getDaemonInstructions1");
-
 
3215
                di = new DaemonInstruction( baseline, 0, true);
-
 
3216
                while ( getDaemonInst( di ) )
-
 
3217
                {
-
 
3218
                    Package p = findPackage(di.pvId, packageCollection);
-
 
3219
 
-
 
3220
                    if ( p != NULL_PACKAGE )
-
 
3221
                    {
-
 
3222
                        mLogger.info("queryPackageVersions forced ripple data {}", di.pvId);
-
 
3223
                        p.mForcedRippleInstruction = di.instruction;
-
 
3224
                        p.mTestBuildEmail = di.userEmail;
-
 
3225
                    }
-
 
3226
                    else
-
 
3227
                    {
-
 
3228
                        // discard
-
 
3229
                        markDaemonInstCompleted( di.instruction );
-
 
3230
                    }
-
 
3231
                }
-
 
3232
 
-
 
3233
                // Daemon Instruction: Test Build Package
-
 
3234
                //  An op code of 1 means test build
-
 
3235
                //
-
 
3236
                // bare minimal data collection - last thing needed is more data to collect
-
 
3237
                // the approach...
-
 
3238
                // query all test build instructions for this baseline
-
 
3239
                // for each, query its build information
-
 
3240
                // store them in "mTestBuild" Package attributes as follows:
-
 
3241
                // - mTestBuildInstruction (default 0)
-
 
3242
                // - mTestBuildEmail (default "null")
-
 
3243
                // - mTestBuildVcsTag (default "null")
-
 
3244
                // - mTestBuildStandardCollection
-
 
3245
                // - mTestBuildDependencyCollection
-
 
3246
                // additionally, trust nothing - these are mostly wips that at any time may have:
-
 
3247
                // - no build location
-
 
3248
                // - no build label
-
 
3249
                // - an empty build standard collection
-
 
3250
                // proceed with defaults above if necessary (the build will subsequently fail)
-
 
3251
                // in all cases, build a meaningful email body to inform the user
-
 
3252
                // of the snapshot of build information that applied to the build and store in:
-
 
3253
                // - mTestBuildEmailBody
-
 
3254
                
-
 
3255
                mLogger.debug("queryPackageVersions: stmt141");
-
 
3256
                phase.setPhase("getTestBuild1");
-
 
3257
                di = new DaemonInstruction( baseline, 1, true);
-
 
3258
                while ( getDaemonInst( di ) )
-
 
3259
                {
-
 
3260
                    // can only do one test build at a time - others will be discarded until future cycle
-
 
3261
                    mLogger.info("queryPackageVersions test build data {}", di.pvId);
-
 
3262
                    int testBuildPvId = di.pvId;
-
 
3263
                    int testBuildInstruction = di.instruction;
-
 
3264
                    String testBuildEmail = di.userEmail; 
-
 
3265
 
-
 
3266
                    String pkg_name = "";
-
 
3267
                    String pkg_ext = "";
-
 
3268
                    String testBuildVcsTag = "null";
-
 
3269
                    int pkg_id = 0;
-
 
3270
                    int buildTime = 60;
-
 
3271
 
-
 
3272
                    // get package info for test build package
-
 
3273
                    mLogger.debug("queryPackageVersions: stmt15");
-
 
3274
                    PreparedStatement stmt15 = mConnection.prepareStatement(
-
 
3275
                            "select p.pkg_name,"+
-
 
3276
                            " p.pkg_id,"+
-
 
3277
                            " pv.v_ext,"+
-
 
3278
                            " release_manager.PK_RMAPI.return_vcs_tag(pv.pv_id) AS vcsTag," +
-
 
3279
                            " pv.build_time" +
-
 
3280
                            " from release_manager.package_versions pv," +
-
 
3281
                            "      release_manager.packages p" +
-
 
3282
                            " where pv.pv_id=" + testBuildPvId +
-
 
3283
                            " and p.pkg_id=pv.pkg_id "
-
 
3284
                            );
-
 
3285
                    stmt15.setFetchSize(10);
-
 
3286
                    RmResultSet rset15 = new RmResultSet(stmt15.executeQuery(), "queryPackageVersions rset15");
-
 
3287
 
-
 
3288
                    int rsetSize = 0;
-
 
3289
 
-
 
3290
                    while( rset15.next() )
-
 
3291
                    {
-
 
3292
                        rsetSize++;
-
 
3293
                        pkg_name = rset15.mustGetKeyString("pkg_name");
-
 
3294
                        pkg_id = rset15.mustGetInt("pkg_id");
-
 
3295
                        pkg_ext = rset15.getString("v_ext","");
-
 
3296
                        testBuildVcsTag = rset15.getString("vcsTag", "null");
-
 
3297
                        buildTime = rset15.getInt("build_time", 60);
-
 
3298
// TODO - Store the buildTime somewhere                        
-
 
3299
                    }
-
 
3300
 
-
 
3301
                    rset15.close();
-
 
3302
                    stmt15.close();
-
 
3303
 
-
 
3304
                    mLogger.debug("queryPackageVersions: stmt16");
-
 
3305
                    if ( rsetSize == 0 )
-
 
3306
                    {
-
 
3307
                        mLogger.error("queryPackageVersions rset15 no data found {}", di.instruction);
-
 
3308
                        markDaemonInstCompleted( di.instruction );
-
 
3309
                    }
-
 
3310
                    else
-
 
3311
                    {
-
 
3312
                        Package q = findPackage(pkg_name + pkg_ext, packageCollection);
-
 
3313
 
-
 
3314
                        if ( q == NULL_PACKAGE )
-
 
3315
                        {
-
 
3316
                            // Package alias does not exist in this release (planned or released packages)
-
 
3317
                            q = new Package(pkg_id, testBuildPvId, pkg_name, pkg_ext, pkg_name + pkg_ext, testBuildVcsTag, testBuildInstruction, testBuildEmail);
-
 
3318
                            packageCollection.add(q);
-
 
3319
                        }
-
 
3320
                        else
-
 
3321
                        {
-
 
3322
                            // Avoid interaction with real versions
-
 
3323
                        	// Flag as not pegged - so that we test build
-
 
3324
                            q.mVersion = "0.0.0000";
-
 
3325
                            q.mTestBuildVcsTag = testBuildVcsTag;
-
 
3326
                            q.mTestBuildInstruction = testBuildInstruction;
-
 
3327
                            q.mTestBuildEmail = testBuildEmail;
-
 
3328
                            q.mTestBuildPvId = testBuildPvId;
-
 
3329
                            q.mTestBuildHasAutomatedUnitTests = false;
-
 
3330
                            q.mIsPegged = false;
-
 
3331
                        }
-
 
3332
 
-
 
3333
                        // get test build package dependency info
-
 
3334
                        PreparedStatement stmt16 = mConnection.prepareStatement(
-
 
3335
                                "select p.pkg_name, dpv.v_ext " +
-
 
3336
                                        " from release_manager.package_versions pv," +
-
 
3337
                                        "   release_manager.package_dependencies pd,"+
-
 
3338
                                        "   release_manager.package_versions dpv,"+
-
 
3339
                                        "   release_manager.packages p" +
-
 
3340
                                        " where pv.pv_id=" + testBuildPvId +
-
 
3341
                                        "   and pd.pv_id=" + testBuildPvId +
-
 
3342
                                        "   and dpv.pv_id=pd.dpv_id"+
-
 
3343
                                        "   and p.pkg_id=dpv.pkg_id"
-
 
3344
                                );
-
 
3345
                        stmt16.setFetchSize(1000);
-
 
3346
                        RmResultSet rset16 = new RmResultSet(stmt16.executeQuery(), "queryPackageVersions rset16");
-
 
3347
 
-
 
3348
                        while( rset16.next() )
-
 
3349
                        {
-
 
3350
                            String dpkg_name = rset16.mustGetString("pkg_name");
-
 
3351
                            String v_ext = rset16.getString("v_ext", "");
-
 
3352
                            q.mTestBuildDependencyCollection.add(dpkg_name + v_ext);
-
 
3353
                        }
-
 
3354
 
-
 
3355
                        rset16.close();
-
 
3356
                        stmt16.close();
-
 
3357
 
-
 
3358
                        // get test build package build info
-
 
3359
                        mLogger.debug("queryPackageVersions: stmt17");
-
 
3360
                        PreparedStatement stmt17 = mConnection.prepareStatement(
-
 
3361
                                "select bm.bm_name, bsa.bsa_name " +
-
 
3362
                                        "from release_manager.package_versions pv," +
-
 
3363
                                        "     release_manager.package_build_info pbi," +
-
 
3364
                                        "     release_manager.build_machines bm," +
-
 
3365
                                        "     release_manager.build_standards_addendum bsa " +
-
 
3366
                                        "where pv.pv_id=" + testBuildPvId +
-
 
3367
                                        "   and pbi.pv_id=pv.pv_id" +
-
 
3368
                                        "   and bm.bm_id=pbi.bm_id" +
-
 
3369
                                        "   and bsa.bsa_id=pbi.bsa_id"
-
 
3370
                                );
-
 
3371
                        RmResultSet rset17 = new RmResultSet(stmt17.executeQuery(), "queryPackageVersions rset17");
-
 
3372
 
-
 
3373
                        while( rset17.next() )
-
 
3374
                        {
-
 
3375
                            String bm_name = rset17.mustGetKeyString("bm_name");
-
 
3376
                            String bsa_name = rset17.mustGetString("bsa_name");
-
 
3377
 
-
 
3378
                            BuildStandard bs = new BuildStandard(rippleEngine, bm_name, bsa_name);
-
 
3379
 
-
 
3380
                            if ( bs.supportedBuildStandard() )
-
 
3381
                            {
-
 
3382
                                q.mTestBuildStandardCollection.add(bs);
-
 
3383
                            }
-
 
3384
                        }
-
 
3385
 
-
 
3386
                        rset17.close();
-
 
3387
                        stmt17.close();
-
 
3388
                        
-
 
3389
                        // get test build package unit test info
-
 
3390
                        mLogger.debug("queryPackageVersions: stmt4");
-
 
3391
                        PreparedStatement stmt18 = mConnection.prepareStatement(
-
 
3392
                                "select tt.test_type_name" +
-
 
3393
                                "  from release_manager.unit_tests ut," +
-
 
3394
                                "       release_manager.test_types tt" +
-
 
3395
                                " where ut.pv_id=" + testBuildPvId +
-
 
3396
                                "  and tt.test_type_id=ut.test_types_fk" 
-
 
3397
                                );
-
 
3398
                        RmResultSet rset18 = new RmResultSet(stmt18.executeQuery(), "queryPackageVersions rset18");
-
 
3399
 
-
 
3400
                        while( rset18.next() )
-
 
3401
                        {
-
 
3402
                            boolean ignore = false;
-
 
3403
 
-
 
3404
                            String test_type_name = rset18.mustGetString("test_type_name");
-
 
3405
 
-
 
3406
                            if ( !ignore )
-
 
3407
                            {
-
 
3408
                                if ( test_type_name.compareTo("Autobuild UTF") == 0 )
-
 
3409
                                {
-
 
3410
                                	q.mTestBuildHasAutomatedUnitTests = true;
-
 
3411
                                }
-
 
3412
                            }
-
 
3413
                        }
-
 
3414
 
-
 
3415
                        rset18.close();
-
 
3416
                        stmt18.close();
-
 
3417
                        
-
 
3418
                    }
-
 
3419
                }
-
 
3420
               
2769
               
3421
            }
2770
            }
3422
            else
2771
            else
3423
            {
2772
            {
3424
                // Escrow Mode
2773
                // Escrow Mode
Line 3483... Line 2832...
3483
        }
2832
        }
3484
        catch ( SQLException e )
2833
        catch ( SQLException e )
3485
        {
2834
        {
3486
            handleSQLException(e, "");
2835
            handleSQLException(e, "");
3487
        }
2836
        }
-
 
2837
        phase.setPhase("End");
-
 
2838
    }
-
 
2839
    
-
 
2840
    /**
-
 
2841
     * Extract all package-version information for Planned Packages (WIPS)
-
 
2842
     * Not used in ESCROW
-
 
2843
     * 
-
 
2844
     * @param   rippleEngine        - Instance to use
-
 
2845
     * @param   packageCollection   - Package Collection structure to fill. Expected to be cleared
-
 
2846
     * @param   baseline            - RtagId of the release being processed, BomId of an Escrow being processed
-
 
2847
     *  
-
 
2848
     * Overridden in ReleaseManagerUtf
-
 
2849
     *  
-
 
2850
     */
-
 
2851
    protected void queryWips(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
-
 
2852
    {
-
 
2853
        if (!mDaemon){
-
 
2854
            return;
-
 
2855
        }
-
 
2856
        
-
 
2857
        Phase phase = new Phase("rmData");
-
 
2858
        mLogger.debug("queryWips {}", mDaemon);
-
 
2859
 
-
 
2860
        try
-
 
2861
        {
-
 
2862
            // Get planned package info
-
 
2863
            // Support multiple WIPS on the same package and build in the order they were released
-
 
2864
            // These are packages that are marked as pending build
-
 
2865
            //
-
 
2866
            mLogger.debug("queryPackageVersions: stmt1");
-
 
2867
            phase.setPhase("getPlannedPkgs1");
-
 
2868
            PreparedStatement stmt1 = mConnection.prepareStatement(
-
 
2869
                    "select pl.pv_id, pv.modified_stamp" +
-
 
2870
                            " from release_manager.planned pl," +
-
 
2871
                            "      release_manager.package_versions pv," +
-
 
2872
                            "      release_manager.packages p" +
-
 
2873
                            " where pl.rtag_id=" + baseline +
-
 
2874
                            "   and pv.build_type='A' and pv.dlocked='A'" +
-
 
2875
                            "   and pv.pv_id=pl.pv_id and p.pkg_id=pv.pkg_id" +
-
 
2876
                            " order by pv.modified_stamp"
-
 
2877
                    );
-
 
2878
            stmt1.setFetchSize(500);
-
 
2879
            RmResultSet rset1 = new RmResultSet(stmt1.executeQuery(), "queryPackageVersions rset1");
-
 
2880
 
-
 
2881
            while( rset1.next() )
-
 
2882
            {
-
 
2883
                int pvId = rset1.mustGetKeyInt("pv_id");
-
 
2884
                
-
 
2885
                Package p = getPackageInfo(pvId, rippleEngine);
-
 
2886
                if ( p != NULL_PACKAGE)
-
 
2887
                {
-
 
2888
                    p.mIsNotReleased = true;
-
 
2889
                    p.mDirectlyPlanned = true;
-
 
2890
                    p.mBuildReason = BuildReason.NewVersion;
-
 
2891
 
-
 
2892
                    // If there are multiple packages with the same Alias, then only the first one
-
 
2893
                    // will be placed in the build set. The will be the oldest, the first one released
-
 
2894
                    // to be built
-
 
2895
 
-
 
2896
                    Package prevPlannedPackage = findPackage(p.mAlias, packageCollection);
-
 
2897
                    if ( prevPlannedPackage == NULL_PACKAGE )
-
 
2898
                    {
-
 
2899
                        mLogger.info("queryWips rset1 no previous WIP package {}", pvId);
-
 
2900
                        packageCollection.add(p);
-
 
2901
                    }
-
 
2902
                }
-
 
2903
            }
-
 
2904
 
-
 
2905
            rset1.close();
-
 
2906
            stmt1.close();
-
 
2907
            
-
 
2908
            //  Process Scheduled Build Approvals. OpCode is 2
-
 
2909
            //      These are treated as requests to not-include a 'Pending' package-version in the current build set
-
 
2910
            //      If there is an un-expired instruction, then remove the pending package-version from the build set
-
 
2911
            //
-
 
2912
            //  Process all expired requests
-
 
2913
            //      These are scheduled builds were the scheduled time has been exceeded
-
 
2914
            //      Simply discard the instruction and let the Approved build proceed
-
 
2915
            //
-
 
2916
            DaemonInstruction di = new DaemonInstruction(baseline, 2, true);
-
 
2917
          
-
 
2918
            phase.setPhase("removeOldSchedBuilds");
-
 
2919
            while ( getDaemonInst( di ) )
-
 
2920
            {
-
 
2921
                markDaemonInstCompleted(di.instruction);
-
 
2922
                mLogger.info("queryPackageVersions remove Scheduled Build Approvals {}", di.pvId);
-
 
2923
            }
-
 
2924
            
-
 
2925
            phase.setPhase("getSchedBuilds");
-
 
2926
            di = new DaemonInstruction(baseline, 2, false);
-
 
2927
            while ( getDaemonInst( di ) )
-
 
2928
            {
-
 
2929
                Package p = findPackage(di.pvId, packageCollection);
-
 
2930
 
-
 
2931
                if ( p != NULL_PACKAGE )
-
 
2932
                {
-
 
2933
                    mLogger.info("queryPackageVersions Scheduled Build Approvals {}", di.pvId);
-
 
2934
                    packageCollection.remove(p);
-
 
2935
                }
-
 
2936
                else
-
 
2937
                {
-
 
2938
                    // discard - the package no longer exists
-
 
2939
                    markDaemonInstCompleted( di.instruction );
-
 
2940
                    mLogger.info("queryPackageVersions remove Scheduled Build Approvals for nonexistent package {}", di.pvId);
-
 
2941
                }
-
 
2942
            }                
-
 
2943
 
-
 
2944
        }
3488
        catch ( SQLException e )
2945
        catch ( SQLException e )
3489
        {
2946
        {
3490
            handleSQLException(e, "");
2947
            handleSQLException(e, "");
3491
        }
2948
        }
3492
        phase.setPhase("End");
2949
        phase.setPhase("End");
Line 4144... Line 3601...
4144
    int findPackageLastIndex = 0;
3601
    int findPackageLastIndex = 0;
4145
    Package findPackageLastPackage = NULL_PACKAGE;
3602
    Package findPackageLastPackage = NULL_PACKAGE;
4146
    
3603
    
4147
    public Package findPackage(int id, ArrayList<Package> packageCollection)
3604
    public Package findPackage(int id, ArrayList<Package> packageCollection)
4148
    {
3605
    {
4149
        mLogger.debug("findPackage 1 id {}", id);
3606
        mLogger.debug("findPackage id {}", id);
4150
        Package retVal = NULL_PACKAGE;
3607
        Package retVal = NULL_PACKAGE;
4151
        
3608
        
4152
        if (findPackageLastId != 0 && findPackageLastId == id) {
3609
        if (findPackageLastId != 0 && findPackageLastId == id) {
4153
            mLogger.debug("findPackage id {} - cache hit", id);
3610
            mLogger.debug("findPackage id {} - cache hit", id);
4154
            retVal = findPackageLastPackage;
3611
            retVal = findPackageLastPackage;
Line 4171... Line 3628...
4171
                    break;
3628
                    break;
4172
                }
3629
                }
4173
            }
3630
            }
4174
        }
3631
        }
4175
 
3632
 
4176
        mLogger.debug("findPackage 1 returned {}", retVal.mName);
3633
        mLogger.debug("findPackage id {} returned {}", id, retVal.mName);
4177
        return retVal;
3634
        return retVal;
4178
    }
3635
    }
4179
 
3636
 
4180
    /**
3637
    /**
4181
     * Find Package by package alias
3638
     * Find Package by package alias
Line 4183... Line 3640...
4183
     * @param   packageCollection   - Collection to scan
3640
     * @param   packageCollection   - Collection to scan
4184
     * @return  Package with the matching mAlias or NULL_PACKAGE if no package has the mAlias
3641
     * @return  Package with the matching mAlias or NULL_PACKAGE if no package has the mAlias
4185
     */
3642
     */
4186
    protected Package findPackage(String alias, ArrayList<Package> packageCollection)
3643
    protected Package findPackage(String alias, ArrayList<Package> packageCollection)
4187
    {
3644
    {
4188
        mLogger.debug("findPackage 2 alias {}", alias);
3645
        mLogger.debug("findPackage alias {}", alias);
4189
        Package retVal = NULL_PACKAGE;
3646
        Package retVal = NULL_PACKAGE;
4190
        int index = 0;
3647
        int index = 0;
4191
        findPackageLastIndex = -1;
3648
        findPackageLastIndex = -1;
4192
 
3649
 
4193
        for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); index++)
3650
        for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); index++)
Line 4202... Line 3659...
4202
                findPackageLastIndex = index;
3659
                findPackageLastIndex = index;
4203
                break;
3660
                break;
4204
            }
3661
            }
4205
        }
3662
        }
4206
 
3663
 
4207
        mLogger.info("findPackage 2 returned {}", retVal.mName);
3664
        mLogger.info("findPackage alias {} returned {}", alias, retVal.mName);
4208
        return retVal;
3665
        return retVal;
4209
    }
3666
    }
4210
 
3667
 
4211
    /**only used in daemon mode to determine version existence in the database
3668
    /**only used in daemon mode to determine version existence in the database
4212
     *  1 select pkg_id from release_manager.package_versions where pkg_id=<pkg_id> and pkg_version=<pkg_version>;
3669
     *  1 select pkg_id from release_manager.package_versions where pkg_id=<pkg_id> and pkg_version=<pkg_version>;
Line 4994... Line 4451...
4994
     * @param mRtagId - Release we are building
4451
     * @param mRtagId - Release we are building
4995
     * @param mBuildOrder - Ordered list of PackageVersions that we plan to build
4452
     * @param mBuildOrder - Ordered list of PackageVersions that we plan to build
4996
     * @throws Exception 
4453
     * @throws Exception 
4997
     * @throws SQLException 
4454
     * @throws SQLException 
4998
     */
4455
     */
4999
    public void reportPlan(int mRtagId, List<Package> mBuildOrder) throws SQLException, Exception {
4456
    public void reportPlan(int mRtagId, ArrayList<PlannedPackage> mBuildOrder) throws SQLException, Exception {
5000
        mLogger.debug("reportPlan {}", mRtagId);
4457
        mLogger.debug("reportPlan {}", mRtagId);
5001
 
4458
 
5002
        if ( mUseDatabase )
4459
        if ( mUseDatabase )
5003
        {
4460
        {
5004
            try
4461
            try