Subversion Repositories DevTools

Rev

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

Rev 7046 Rev 7082
Line 2490... Line 2490...
2490
 
2490
 
2491
        try
2491
        try
2492
        {
2492
        {
2493
            if (mDaemon)
2493
            if (mDaemon)
2494
            {
2494
            {
2495
                // Get planned package info
-
 
2496
                // Support multiple WIPS on the same package and build in the order they were released
2495
                // Get package information on ALL released packages within the release of interest
2497
                // These are packages that are marked as pending build
-
 
2498
                //
2496
                //
2499
                mLogger.debug("queryPackageVersions: stmt1");
2497
                mLogger.debug("queryPackageVersions: stmt1");
2500
                phase.setPhase("getPlannedPkgs1");
2498
                phase.setPhase("getPlannedPkgs1");
2501
                PreparedStatement stmt1 = mConnection.prepareStatement(
2499
                PreparedStatement stmt1 = mConnection.prepareStatement(
2502
                        "select pl.pv_id, p.pkg_id, p.pkg_name, pv.pkg_version, " +
2500
                        "select pl.pv_id, p.pkg_id, p.pkg_name, pv.pkg_version, " +
Line 2974... Line 2972...
2974
                    p.mIsPegged = isPegged > 0;
2972
                    p.mIsPegged = isPegged > 0;
2975
                    p.mIsBuildable = isBuildable;
2973
                    p.mIsBuildable = isBuildable;
2976
                    p.mRippleStop = rippleStop;
2974
                    p.mRippleStop = rippleStop;
2977
                    p.mBuildTime = buildTime;
2975
                    p.mBuildTime = buildTime;
2978
                    
2976
                    
2979
                    Integer ipv_id = Integer.valueOf(pv_id);
-
 
2980
                    rippleEngine.mReleasedPvIDCollection.add(ipv_id);
-
 
2981
                    
-
 
2982
                    //  If this package is to be replaced by a planned package then
2977
                    //  If this package is to be replaced by a planned package then
2983
                    //  insert some of the current packages attributes
2978
                    //  insert some of the current packages attributes
2984
                    //  Otherwise, add the the package to the package collection
2979
                    //  Otherwise, add the the package to the package collection
2985
                    //
2980
                    //
-
 
2981
 
2986
                    Package plannedPackage = findPackage(p.mAlias, packageCollection);
2982
                    Package plannedPackage = findPackage(p.mAlias, packageCollection);
2987
                    if ( plannedPackage == NULL_PACKAGE )
2983
                    if ( plannedPackage == NULL_PACKAGE )
2988
                    {
2984
                    {
2989
                        mLogger.info("queryPackageVersions rset8 no planned package {}", pv_id);
2985
                        mLogger.info("queryPackageVersions rset8 no planned package {}", pv_id);
2990
                        packageCollection.add(p);
2986
                        packageCollection.add(p);
Line 3027... Line 3023...
3027
                RmResultSet rset9 = new RmResultSet(stmt9.executeQuery(), "queryPackageVersions rset9");
3023
                RmResultSet rset9 = new RmResultSet(stmt9.executeQuery(), "queryPackageVersions rset9");
3028
                mLogger.debug("queryPackageVersions: stmt9 query done");
3024
                mLogger.debug("queryPackageVersions: stmt9 query done");
3029
 
3025
 
3030
                while( rset9.next() )
3026
                while( rset9.next() )
3031
                {
3027
                {
3032
                    boolean ignore = false;
-
 
3033
 
-
 
3034
                    int pv_id = rset9.mustGetKeyInt("pv_id");
3028
                    int pv_id = rset9.mustGetKeyInt("pv_id");
3035
                    int dpv_id = rset9.mustGetInt("dpv_id");
3029
                    int dpv_id = rset9.mustGetInt("dpv_id");
3036
                    Package p = findPackage(pv_id, packageCollection);
3030
                    Package p = findPackage(pv_id, packageCollection);
3037
 
3031
 
3038
                    if ( p == NULL_PACKAGE )
3032
                    if ( p == NULL_PACKAGE )
Line 3042... Line 3036...
3042
                    }
3036
                    }
3043
 
3037
 
3044
                    String pkg_name = rset9.mustGetString("pkg_name");
3038
                    String pkg_name = rset9.mustGetString("pkg_name");
3045
                    String v_ext = rset9.getString("v_ext","");
3039
                    String v_ext = rset9.getString("v_ext","");
3046
 
3040
 
-
 
3041
                    Package p = findPackage(pv_id, packageCollection);
3047
                    if ( !ignore )
3042
                    if ( p != NULL_PACKAGE )
3048
                    {
3043
                    {
3049
                        p.mDependencyCollection.add(pkg_name + v_ext);
3044
                        p.mDependencyCollection.add(pkg_name + v_ext);
3050
                        p.mDependencyIDCollection.add(dpv_id);
3045
                        p.mDependencyIDCollection.add(dpv_id);
3051
                    }
3046
                    }
-
 
3047
 
3052
                }
3048
                }
3053
                mLogger.debug("queryPackageVersions: stmt9 processing complete");
3049
                mLogger.debug("queryPackageVersions: stmt9 processing complete");
3054
 
3050
 
3055
                rset9.close();
3051
                rset9.close();
3056
                stmt9.close();
3052
                stmt9.close();
Line 3076... Line 3072...
3076
                stmt10.setInt(1, baseline);
3072
                stmt10.setInt(1, baseline);
3077
                RmResultSet rset10 = new RmResultSet(stmt10.executeQuery(), "queryPackageVersions rset10");
3073
                RmResultSet rset10 = new RmResultSet(stmt10.executeQuery(), "queryPackageVersions rset10");
3078
 
3074
 
3079
                while( rset10.next() )
3075
                while( rset10.next() )
3080
                {
3076
                {
3081
                    boolean ignore = false;
-
 
3082
                    int pv_id = rset10.mustGetKeyInt("pv_id");
3077
                    int pv_id = rset10.mustGetKeyInt("pv_id");
3083
                    Package p = findPackage(pv_id, packageCollection);
3078
                    Package p = findPackage(pv_id, packageCollection);
3084
                    if ( p == NULL_PACKAGE )
3079
                    if ( p == NULL_PACKAGE )
3085
                    {
3080
                    {
3086
                        mLogger.info("queryPackageVersions rset10 package superceded by planned {}", pv_id);
3081
                        mLogger.info("queryPackageVersions rset10 package superceded by planned {}", pv_id);
Line 3088... Line 3083...
3088
                    }
3083
                    }
3089
 
3084
 
3090
                    String bm_name = rset10.mustGetString("bm_name");
3085
                    String bm_name = rset10.mustGetString("bm_name");
3091
                    String bsa_name = rset10.mustGetString("bsa_name");
3086
                    String bsa_name = rset10.mustGetString("bsa_name");
3092
 
3087
 
-
 
3088
                    Package p = findPackage(pv_id, packageCollection);
3093
                    if ( !ignore )
3089
                    if ( p != NULL_PACKAGE )
3094
                    {
3090
                    {
3095
                        BuildStandard bs = new BuildStandard(rippleEngine, bm_name, bsa_name);
3091
                        BuildStandard bs = new BuildStandard(rippleEngine, bm_name, bsa_name);
3096
 
-
 
3097
                        if ( bs.supportedBuildStandard() )
3092
                        if ( bs.supportedBuildStandard() )
3098
                        {
3093
                        {
3099
                            p.mBuildStandardCollection.add(bs);
3094
                            p.mBuildStandardCollection.add(bs);
3100
                        }
3095
                        }
3101
                    }
3096
                    }
Line 3117... Line 3112...
3117
                stmt11.setFetchSize(1000);
3112
                stmt11.setFetchSize(1000);
3118
                RmResultSet rset11 = new RmResultSet(stmt11.executeQuery(), "queryPackageVersions rset11");
3113
                RmResultSet rset11 = new RmResultSet(stmt11.executeQuery(), "queryPackageVersions rset11");
3119
 
3114
 
3120
                while( rset11.next() )
3115
                while( rset11.next() )
3121
                {
3116
                {
3122
                    boolean ignore = false;
-
 
3123
 
-
 
3124
                    int pv_id = rset11.mustGetKeyInt("pv_id");
3117
                    int pv_id = rset11.mustGetKeyInt("pv_id");
-
 
3118
                    String test_type_name = rset11.mustGetString("test_type_name");
3125
                    Package p = findPackage(pv_id, packageCollection);
3119
                    Package p = findPackage(pv_id, packageCollection);
3126
                    if ( p == NULL_PACKAGE )
3120
                    if ( p != NULL_PACKAGE )
3127
                    {
3121
                    {
3128
                        mLogger.info("queryPackageVersions rset11 package superceded by planned {}", pv_id);
3122
                        mLogger.info("queryPackageVersions rset11 package superceded by planned {}", pv_id);
3129
                        ignore = true;
3123
                        ignore = true;
3130
                    }
3124
                    }
3131
 
3125
 
Line 3168... Line 3162...
3168
                RmResultSet rset12 = new RmResultSet(stmt12.executeQuery(), "queryPackageVersions rset12");
3162
                RmResultSet rset12 = new RmResultSet(stmt12.executeQuery(), "queryPackageVersions rset12");
3169
 
3163
 
3170
                while( rset12.next() )
3164
                while( rset12.next() )
3171
                {
3165
                {
3172
                    int pv_id = rset12.mustGetKeyInt("pv_id");
3166
                    int pv_id = rset12.mustGetKeyInt("pv_id");
-
 
3167
                    String user_email = rset12.getString("user_email",null);
3173
                    Package p = findPackage(pv_id, packageCollection);
3168
                    Package p = findPackage(pv_id, packageCollection);
3174
 
3169
 
3175
                    if ( p == NULL_PACKAGE )
3170
                    if ( p != NULL_PACKAGE )
3176
                    {
3171
                    {
3177
                        mLogger.info("queryPackageVersions rset12 package superceded by planned {}", pv_id);
3172
                        mLogger.info("queryPackageVersions rset12 package superceded by planned {}", pv_id);
3178
                    }
3173
                    }
3179
                    else
-
 
3180
                    {
-
 
3181
                        String user_email = rset12.getString("user_email",null);
-
 
3182
 
-
 
3183
                        if ( user_email != null )
-
 
3184
                        {
-
 
3185
                            p.addEmail(user_email);
-
 
3186
                        }
-
 
3187
                    }
-
 
3188
                }
3174
                }
3189
 
3175
 
3190
                rset12.close();
3176
                rset12.close();
3191
                stmt12.close();
3177
                stmt12.close();
3192
 
3178
 
Line 3203... Line 3189...
3203
                stmt14.setFetchSize(1000);
3189
                stmt14.setFetchSize(1000);
3204
                RmResultSet rset14 = new RmResultSet(stmt14.executeQuery(), "queryPackageVersions rset14");
3190
                RmResultSet rset14 = new RmResultSet(stmt14.executeQuery(), "queryPackageVersions rset14");
3205
 
3191
 
3206
                while( rset14.next() )
3192
                while( rset14.next() )
3207
                {
3193
                {
3208
                    boolean ignore = false;
-
 
3209
 
-
 
3210
                    int pv_id = rset14.mustGetInt("pv_id");
3194
                    int pv_id = rset14.mustGetInt("pv_id");
3211
                    Package p = findPackage(pv_id, packageCollection);
3195
                    Package p = findPackage(pv_id, packageCollection);
3212
                    if ( p == NULL_PACKAGE )
3196
                    if ( p != NULL_PACKAGE )
3213
                    {
3197
                    {
3214
                        mLogger.info("queryPackageVersions rset14 package superceded by planned {}", pv_id);
3198
                        mLogger.info("queryPackageVersions rset14 package superceded by planned {}", pv_id);
3215
                        ignore = true;
3199
                        ignore = true;
3216
                    }
3200
                    }
3217
 
3201
 
Line 3499... Line 3483...
3499
        }
3483
        }
3500
        catch ( SQLException e )
3484
        catch ( SQLException e )
3501
        {
3485
        {
3502
            handleSQLException(e, "");
3486
            handleSQLException(e, "");
3503
        }
3487
        }
-
 
3488
        catch ( SQLException e )
-
 
3489
        {
-
 
3490
            handleSQLException(e, "");
-
 
3491
        }
3504
        phase.setPhase("End");
3492
        phase.setPhase("End");
3505
    }
3493
    }
3506
    
3494
    
-
 
3495
    /**
-
 
3496
     * Extract all TEST package-version information
-
 
3497
     * Only active in Daemon Mode
-
 
3498
     * 
-
 
3499
     * @param   rippleEngine        - Instance to use
-
 
3500
     * @param   packageCollection   - Package Collection structure to fill. Expected to be cleared
-
 
3501
     * @param   baseline            - RtagId of the release being processed, BomId of an Escrow being processed
-
 
3502
     *  
-
 
3503
     * Overridden in ReleaseManagerUtf
-
 
3504
     *  
-
 
3505
     */
-
 
3506
    protected void queryTest(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
-
 
3507
    {
-
 
3508
        if (!mDaemon){
-
 
3509
            return;
-
 
3510
        }
-
 
3511
        
-
 
3512
        Phase phase = new Phase("rmData");
-
 
3513
        mLogger.debug("queryTest {}", mDaemon);
-
 
3514
 
-
 
3515
        try
-
 
3516
        {
-
 
3517
 
-
 
3518
            // Daemon Instruction: Test Build Package
-
 
3519
            //  An op code of 1 means test build
-
 
3520
            //
-
 
3521
            // Trust nothing - these are mostly wips that at any time may have:
-
 
3522
            // - no build location
-
 
3523
            // - no build label
-
 
3524
            // - an empty build standard collection
-
 
3525
            // proceed with defaults above if necessary (the build will subsequently fail)
-
 
3526
            // in all cases, build a meaningful email body to inform the user
-
 
3527
            // of the snapshot of build information that applied to the build and store in:
-
 
3528
            // - mTestBuildEmailBody
-
 
3529
            
-
 
3530
            mLogger.debug("queryTest: stmt141");
-
 
3531
            phase.setPhase("getTestBuild1");
-
 
3532
            DaemonInstruction di = new DaemonInstruction( baseline, 1, true);
-
 
3533
            while ( getDaemonInst( di ) )
-
 
3534
            {
-
 
3535
                mLogger.info("queryPackageVersions test build data {}", di.pvId);
-
 
3536
 
-
 
3537
                Package p = getPackageInfo(di.pvId, rippleEngine);
-
 
3538
                if ( p == NULL_PACKAGE )
-
 
3539
                {
-
 
3540
                    mLogger.error("queryTest rset15 no data found {}", di.instruction);
-
 
3541
                    markDaemonInstCompleted( di.instruction );
-
 
3542
                    
-
 
3543
                }
-
 
3544
                else
-
 
3545
                {
-
 
3546
                    packageCollection.add(p);
-
 
3547
                    
-
 
3548
                    //  Set some Test information
-
 
3549
                    //  Avoid interaction with real versions
-
 
3550
                    //  Flag as not pegged - so that we test build
-
 
3551
                    p.mVersion = "0.0.0000";
-
 
3552
                    p.mTestBuildInstruction = di.instruction;
-
 
3553
                    p.addEmail(di.userEmail);
-
 
3554
                    p.mBuildReason = BuildReason.Test;
-
 
3555
                    p.mIsPegged = false;
-
 
3556
                    p.mIsNotReleased = true;
-
 
3557
                }
-
 
3558
            }
-
 
3559
        }
-
 
3560
        catch ( SQLException e )
-
 
3561
        {
-
 
3562
            handleSQLException(e, "");
-
 
3563
        }
-
 
3564
        phase.setPhase("End");
-
 
3565
    }
3507
    
3566
    
-
 
3567
    /**
-
 
3568
     * Extract all Ripple Request package-version information
-
 
3569
     * The returned list is in daemon instruction id order - ie the first request will be first
-
 
3570
     * Only active in Daemon Mode
-
 
3571
     * 
-
 
3572
     * @param   rippleEngine        - Instance to use
-
 
3573
     * @param   packageCollection   - Package Collection structure to fill. Expected to be cleared
-
 
3574
     * @param   baseline            - RtagId of the release being processed, BomId of an Escrow being processed
-
 
3575
     *  
-
 
3576
     * Overridden in ReleaseManagerUtf
-
 
3577
     *  
-
 
3578
     */
-
 
3579
    protected void queryRipples(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
-
 
3580
    {
-
 
3581
        if (!mDaemon){
-
 
3582
            return;
-
 
3583
        }
-
 
3584
        
-
 
3585
        Phase phase = new Phase("rmData");
-
 
3586
        mLogger.debug("queryPackageVersions {}", mDaemon);
-
 
3587
    
-
 
3588
        try
-
 
3589
        {
-
 
3590
            // Daemon Instruction: Force Package Ripple
-
 
3591
            //  An op code of 0 means force ripple
-
 
3592
 
-
 
3593
            phase.setPhase("getDaemonInstructions1");
-
 
3594
            DaemonInstruction di = new DaemonInstruction( baseline, 0, true);
-
 
3595
            while ( getDaemonInst( di ) )
-
 
3596
            {
-
 
3597
                Package p = getPackageInfo(di.pvId, rippleEngine);
-
 
3598
                if ( p != NULL_PACKAGE )
-
 
3599
                {
-
 
3600
                    mLogger.info("queryPackageVersions forced ripple data {}", di.pvId);
-
 
3601
                    packageCollection.add(p);
-
 
3602
                    p.mForcedRippleInstruction = di.instruction;
-
 
3603
                    p.addEmail(di.userEmail);
-
 
3604
                    p.mBuildReason = BuildReason.Ripple;
-
 
3605
                    p.mIsNotReleased = true;
-
 
3606
                }
-
 
3607
                else
-
 
3608
                {
-
 
3609
                    // discard
-
 
3610
                    markDaemonInstCompleted( di.instruction );
-
 
3611
                }
-
 
3612
            }
-
 
3613
    
-
 
3614
        }
-
 
3615
        catch ( SQLException e )
-
 
3616
        {
-
 
3617
            handleSQLException(e, "");
-
 
3618
        }
-
 
3619
        phase.setPhase("End");
-
 
3620
    }
-
 
3621
 
-
 
3622
    /** Get all build information for a single package
-
 
3623
     *  Don't use this where lots of packages are expected, but should be OK to get data for TEST, WIP and Ripples
-
 
3624
     *  
-
 
3625
     *  Does not get:
-
 
3626
     *      mBuildReason
-
 
3627
     *      mDirectlyPlanned
-
 
3628
     *  
-
 
3629
     *  @param  pvId    - Package to process
-
 
3630
     * @param rippleEngine - Ripple engine associated wit the Release
-
 
3631
     * @throws Exception 
-
 
3632
     *  
-
 
3633
     *  @returns a package - May be null, but this is not good
-
 
3634
     */
-
 
3635
    Package getPackageInfo(int pvId, RippleEngine rippleEngine) throws Exception
-
 
3636
    {
-
 
3637
        Package p = NULL_PACKAGE;
-
 
3638
        
-
 
3639
        try
-
 
3640
        {
-
 
3641
            // Get Package info
-
 
3642
            //
-
 
3643
            mLogger.debug("getPackageInfo: stmt1");
-
 
3644
            PreparedStatement stmt1 = mConnection.prepareStatement(
-
 
3645
                    "select pv.pv_id, p.pkg_id, p.pkg_name, pv.pkg_version, " +
-
 
3646
                            " pv.v_ext, pv.change_type, pv.ripple_field," +
-
 
3647
                            " pv.major_limit, pv.minor_limit, pv.patch_limit, pv.build_number_limit," +
-
 
3648
                            " pv.modified_stamp," +
-
 
3649
                            " release_manager.PK_RMAPI.return_vcs_tag(pv.pv_id) AS vcsTag," +
-
 
3650
                            " pv.build_time" +
-
 
3651
                            " from " +
-
 
3652
                            "      release_manager.package_versions pv," +
-
 
3653
                            "      release_manager.packages p" +
-
 
3654
                            " where pv.pv_id=" + pvId +
-
 
3655
                            "   and p.pkg_id=pv.pkg_id"
-
 
3656
 
-
 
3657
                    );
-
 
3658
            stmt1.setFetchSize(500);
-
 
3659
            RmResultSet rset1 = new RmResultSet(stmt1.executeQuery(), "getPackageInfo rset1");
-
 
3660
 
-
 
3661
            //  Package must exist
-
 
3662
            if ( ! rset1.next() )
-
 
3663
            {
-
 
3664
                return NULL_PACKAGE;
-
 
3665
            }
-
 
3666
            
-
 
3667
 
-
 
3668
            int pv_id = rset1.mustGetKeyInt("pv_id");
-
 
3669
            int pkg_id = rset1.mustGetInt("pkg_id");
-
 
3670
            String pkg_name = rset1.mustGetString("pkg_name");
-
 
3671
            String pkg_version = rset1.mustGetString("pkg_version");
-
 
3672
            int buildTime = rset1.getInt("build_time", 60);
-
 
3673
 
-
 
3674
            // Previous Version of this package, without the project suffix
-
 
3675
            String pkg_prevVersion = getBaseVersionNumber(pv_id);
-
 
3676
            if ( pkg_prevVersion == null)
-
 
3677
            {
-
 
3678
                // show stopper
-
 
3679
                mLogger.error("getPackageInfo. No Previous version {}", pv_id);
-
 
3680
                throw new Exception("getPackageInfo. No Previous version" + pv_id);
-
 
3681
            }
-
 
3682
            
-
 
3683
            String v_ext = rset1.getString("v_ext","");
-
 
3684
            String change_type = rset1.getString("change_type", "P");
-
 
3685
 
-
 
3686
            char ct = 'P';
-
 
3687
 
-
 
3688
            if ( change_type.compareTo("M") == 0 )
-
 
3689
            {
-
 
3690
                ct = 'M';
-
 
3691
            }
-
 
3692
            else if ( change_type.compareTo("N") == 0 )
-
 
3693
            {
-
 
3694
                ct = 'N';
-
 
3695
            }
-
 
3696
            else if ( change_type.compareTo("P") == 0 )
-
 
3697
            {
-
 
3698
                ct = 'P';
-
 
3699
            }
-
 
3700
            else if ( change_type.compareTo("F") == 0 )
-
 
3701
            {
-
 
3702
                ct = 'F';
-
 
3703
            }
-
 
3704
 
-
 
3705
            String ripple_field = rset1.getString("ripple_field", "b");
-
 
3706
            int major_limit = rset1.getInt("major_limit", 0);
-
 
3707
            int minor_limit = rset1.getInt("minor_limit",0);
-
 
3708
            int patch_limit = rset1.getInt("patch_limit",0);
-
 
3709
            int build_number_limit = rset1.getInt("build_number_limit",0);
-
 
3710
            String vcs_tag = rset1.getString("vcsTag", "");
-
 
3711
 
-
 
3712
            p = new Package(pkg_id, pv_id, pkg_name, pkg_version, v_ext, pkg_name + v_ext, vcs_tag, ripple_field.charAt(0), ct);
-
 
3713
            p.mMajorLimit = major_limit;
-
 
3714
            p.mMinorLimit = minor_limit;
-
 
3715
            p.mPatchLimit = patch_limit;
-
 
3716
            p.mBuildLimit = build_number_limit;
-
 
3717
            p.mPrevVersion = pkg_prevVersion;
-
 
3718
            p.mBuildTime = buildTime;
-
 
3719
 
-
 
3720
            rset1.close();
-
 
3721
            stmt1.close();
-
 
3722
 
-
 
3723
            // get Package dependency info
-
 
3724
            mLogger.debug("getPackageInfo: stmt2");
-
 
3725
            PreparedStatement stmt2 = mConnection.prepareStatement(
-
 
3726
                    "select dpv.v_ext, dpv.pv_id" +
-
 
3727
                            " from " +
-
 
3728
                            "     release_manager.package_versions pv,"+
-
 
3729
                            "     release_manager.package_dependencies pd," +
-
 
3730
                            "     release_manager.package_versions dpv"+
-
 
3731
                            " where pv.pv_id=" + pvId + 
-
 
3732
                            "  and pd.pv_id=pv.pv_id"+
-
 
3733
                            "  and dpv.pv_id=pd.dpv_id"
-
 
3734
                    );
-
 
3735
            stmt2.setFetchSize(500);
-
 
3736
            RmResultSet rset2 = new RmResultSet(stmt2.executeQuery(), "getPackageInfo rset2");
-
 
3737
 
-
 
3738
            while ( rset2.next() )
-
 
3739
            {
-
 
3740
                String dpv_ext = rset2.mustGetKeyString("v_ext");
-
 
3741
                int    dpvId = rset2.mustGetInt("pv_id");
-
 
3742
                
-
 
3743
                p.mDependencyCollection.add(pkg_name + dpv_ext);
-
 
3744
                p.mDependencyIDCollection.add(dpvId);
-
 
3745
            }
-
 
3746
 
-
 
3747
            rset2.close();
-
 
3748
            stmt2.close();
-
 
3749
 
-
 
3750
            // get Package build info
-
 
3751
            mLogger.debug("getPackageInfo: stmt3");
-
 
3752
            PreparedStatement stmt3 = mConnection.prepareStatement(
-
 
3753
                    "select bm.bm_name, bsa.bsa_name" +
-
 
3754
                            " from " +
-
 
3755
                            "   release_manager.package_versions pv," +
-
 
3756
                            "   release_manager.package_build_info pbi," +
-
 
3757
                            "   release_manager.build_machines bm," +
-
 
3758
                            "   release_manager.build_standards_addendum bsa " +
-
 
3759
                            " where pv.pv_id=" + pvId + 
-
 
3760
                            "   and pbi.pv_id=pv.pv_id" +
-
 
3761
                            "   and bm.bm_id=pbi.bm_id" +
-
 
3762
                            "   and bsa.bsa_id=pbi.bsa_id "
-
 
3763
                    );
-
 
3764
            stmt3.setFetchSize(500);
-
 
3765
            RmResultSet rset3 = new RmResultSet(stmt3.executeQuery(), "getPackageInfo rset3");
-
 
3766
 
-
 
3767
            while ( rset3.next() )
-
 
3768
            {
-
 
3769
                String bm_name = rset3.mustGetString("bm_name");
-
 
3770
                String bsa_name = rset3.mustGetString("bsa_name");
-
 
3771
 
-
 
3772
                BuildStandard bs = new BuildStandard(rippleEngine, bm_name, bsa_name);
-
 
3773
                if ( bs.supportedBuildStandard() )
-
 
3774
                {
-
 
3775
                    p.mBuildStandardCollection.add(bs);
-
 
3776
                }
-
 
3777
            }
-
 
3778
 
-
 
3779
            rset3.close();
-
 
3780
            stmt3.close();
-
 
3781
 
-
 
3782
            // get Package unit test info
-
 
3783
            mLogger.debug("getPackageInfo: stmt4");
-
 
3784
            PreparedStatement stmt4 = mConnection.prepareStatement(
-
 
3785
                    "select pv.pv_id, tt.test_type_name" +
-
 
3786
                    "  from "+
-
 
3787
                    "       release_manager.package_versions pv,"+
-
 
3788
                    "       release_manager.unit_tests ut," +
-
 
3789
                    "       release_manager.test_types tt" +
-
 
3790
                    " where pv.pv_id=" + pvId + 
-
 
3791
                    "  and ut.pv_id=pv.pv_id" +
-
 
3792
                    "  and tt.test_type_id=ut.test_types_fk"
-
 
3793
                    );
-
 
3794
            stmt4.setFetchSize(500);
-
 
3795
            RmResultSet rset4 = new RmResultSet(stmt4.executeQuery(), "getPackageInfo rset4");
-
 
3796
 
-
 
3797
            while ( rset4.next() )
-
 
3798
            {
-
 
3799
                String test_type_name = rset4.mustGetString("test_type_name");
-
 
3800
                if ( test_type_name.compareTo("Autobuild UTF") == 0 )
-
 
3801
                {
-
 
3802
                    p.mHasAutomatedUnitTests = true;
-
 
3803
                }
-
 
3804
            }
-
 
3805
 
-
 
3806
            rset4.close();
-
 
3807
            stmt4.close();
-
 
3808
 
-
 
3809
            // get Package build failure info...
-
 
3810
            //      view based
-
 
3811
            mLogger.debug("getPackageInfo: stmt5");
-
 
3812
            PreparedStatement stmt5 = mConnection.prepareStatement(
-
 
3813
                    "SELECT rc.pv_id," +
-
 
3814
                            "  u.user_email" +
-
 
3815
                            " FROM release_manager.release_content rc," +
-
 
3816
                            "  release_manager.release_tags rt," +
-
 
3817
                            "  release_manager.package_versions pv," +
-
 
3818
                            "  release_manager.autobuild_failure af," +
-
 
3819
                            "  release_manager.members_group mg," +
-
 
3820
                            "  release_manager.users u" +
-
 
3821
                            " WHERE rc.rtag_id     = " + rippleEngine.getRtagId() +
-
 
3822
                            " AND rt.rtag_id       = rc.rtag_id" +
-
 
3823
                            " AND pv.pv_id=" + pvId +
-
 
3824
                            " AND pv.pv_id         = rc.pv_id" +
-
 
3825
                            " AND af.view_id       = rc.base_view_id" +
-
 
3826
                            " AND mg.group_email_id= af.group_email_id" +
-
 
3827
                            " AND u.user_id        = mg.user_id" +
-
 
3828
                            " AND af.proj_id       = rt.proj_id"
-
 
3829
                    );
-
 
3830
            stmt5.setFetchSize(500);
-
 
3831
            RmResultSet rset5 = new RmResultSet(stmt5.executeQuery(), "getPackageInfo rset5");
-
 
3832
 
-
 
3833
            while ( rset5.next() )
-
 
3834
            {
-
 
3835
                p.addEmail(rset5.getString("user_email", null));
-
 
3836
            }
-
 
3837
 
-
 
3838
            rset5.close();
-
 
3839
            stmt5.close();
-
 
3840
 
-
 
3841
            // get Package build failure info...
-
 
3842
            // package version
-
 
3843
            mLogger.debug("getPackageInfo: stmt6");
-
 
3844
            PreparedStatement stmt6 = mConnection.prepareStatement(
-
 
3845
                    "select pv.pv_id, u1.user_email as creator, u2.user_email as owner, u3.user_email as modifier" +
-
 
3846
                    " from " +
-
 
3847
                    "      release_manager.release_tags rt," +
-
 
3848
                    "      release_manager.package_versions pv," +
-
 
3849
                    "      release_manager.users u1," +
-
 
3850
                    "      release_manager.users u2," +
-
 
3851
                    "      release_manager.users u3 " +
-
 
3852
                    " where pv.pv_id=" + pvId + 
-
 
3853
                    "   and rt.rtag_id=" + rippleEngine.getRtagId() + 
-
 
3854
                    "   and pv.build_type='A'" +
-
 
3855
                    "   and pv.dlocked='A' " +
-
 
3856
                    "   and u1.user_id=pv.creator_id" +
-
 
3857
                    "   and u2.user_id=pv.owner_id" +
-
 
3858
                    "   and u3.user_id=pv.modifier_id"
-
 
3859
                    );
-
 
3860
            stmt6.setFetchSize(500);
-
 
3861
            RmResultSet rset6 = new RmResultSet(stmt6.executeQuery(), "getPackageInfo rset6");
-
 
3862
 
-
 
3863
            while ( rset6.next() )
-
 
3864
            {
-
 
3865
                p.addEmail( rset6.getString("creator",null));
-
 
3866
                p.addEmail( rset6.getString("owner",null));
-
 
3867
                p.addEmail( rset6.getString("modifier",null));
-
 
3868
            }
-
 
3869
 
-
 
3870
            rset6.close();
-
 
3871
            stmt6.close();
-
 
3872
            
-
 
3873
            // get Package advisory ripple info
-
 
3874
            mLogger.debug("getPackageInfo: stmt7");
-
 
3875
            PreparedStatement stmt7 = mConnection.prepareStatement(
-
 
3876
                    "select pv.pv_id, pv.modified_stamp " +
-
 
3877
                    " from " +
-
 
3878
                    "      release_manager.package_versions pv," +
-
 
3879
                    "      release_manager.advisory_ripple ar " +
-
 
3880
                    " where pv.pv_id = " + pvId +
-
 
3881
                    "    and ar.rtag_id=" + rippleEngine.getRtagId() +
-
 
3882
                    "    and ar.pv_id=pv.pv_id "
-
 
3883
                    );
-
 
3884
            stmt7.setFetchSize(500);
-
 
3885
            RmResultSet rset7 = new RmResultSet(stmt7.executeQuery(), "getPackageInfo rset7");
-
 
3886
 
-
 
3887
            if( rset7.next() )
-
 
3888
            {
-
 
3889
                p.mAdvisoryRipple = true;
-
 
3890
            }
-
 
3891
 
-
 
3892
            rset7.close();
-
 
3893
            stmt7.close();            
-
 
3894
 
-
 
3895
        }
-
 
3896
        catch ( SQLException e )
-
 
3897
        {
-
 
3898
            handleSQLException(e, "");
-
 
3899
        }
-
 
3900
 
-
 
3901
        return p;
-
 
3902
    }
-
 
3903
 
3508
   /**	Determine the version number of the base package
3904
    /**	Determine the version number of the base package
3509
    *   Used in a ripple build to determine the base for calculating the next version number
3905
    *   Used in a ripple build to determine the base for calculating the next version number
3510
    *   Assumes that a database connection has been established
3906
    *   Assumes that a database connection has been established
3511
    *   Used in Daemon Mode Only
3907
    *   Used in Daemon Mode Only
3512
    *   
3908
    *   
3513
    *   History: Used to determine the last non-rippled package, but this had issues [JATS-402]
3909
    *   History: Used to determine the last non-rippled package, but this had issues [JATS-402]
Line 3742... Line 4138...
3742
     * Find Package by pvid
4138
     * Find Package by pvid
3743
     * @param   id                  - pvid of package to locate
4139
     * @param   id                  - pvid of package to locate
3744
     * @param   packageCollection   - Collection to scan
4140
     * @param   packageCollection   - Collection to scan
3745
     * @return  Package with the matching mID or NULL_PACKAGE if no package has the mID
4141
     * @return  Package with the matching mID or NULL_PACKAGE if no package has the mID
3746
     */
4142
     */
-
 
4143
    int findPackageLastId = 0;
-
 
4144
    int findPackageLastIndex = 0;
-
 
4145
    Package findPackageLastPackage = NULL_PACKAGE;
-
 
4146
    
3747
    protected Package findPackage(int id, ArrayList<Package> packageCollection)
4147
    public Package findPackage(int id, ArrayList<Package> packageCollection)
3748
    {
4148
    {
3749
        mLogger.debug("findPackage 1 id {}", id);
4149
        mLogger.debug("findPackage 1 id {}", id);
3750
        Package retVal = NULL_PACKAGE;
4150
        Package retVal = NULL_PACKAGE;
3751
 
4151
        
3752
        for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
4152
        if (findPackageLastId != 0 && findPackageLastId == id) {
-
 
4153
            mLogger.debug("findPackage id {} - cache hit", id);
-
 
4154
            retVal = findPackageLastPackage;
-
 
4155
        }
-
 
4156
        else
3753
        {
4157
        {
3754
            Package p = it.next();
4158
            int index = 0;
3755
 
-
 
3756
            if ( p.mId == id )
4159
            findPackageLastIndex = -1;
-
 
4160
            
-
 
4161
            for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); index++ )
3757
            {
4162
            {
-
 
4163
                Package p = it.next();
-
 
4164
    
-
 
4165
                if ( p.mId == id )
-
 
4166
                {
-
 
4167
                    findPackageLastId = id;
-
 
4168
                    findPackageLastPackage = p;
-
 
4169
                    findPackageLastIndex = index;
3758
                retVal = p;
4170
                    retVal = p;
3759
                break;
4171
                    break;
-
 
4172
                }
3760
            }
4173
            }
3761
        }
4174
        }
3762
 
4175
 
3763
        mLogger.debug("findPackage 1 returned {}", retVal.mName);
4176
        mLogger.debug("findPackage 1 returned {}", retVal.mName);
3764
        return retVal;
4177
        return retVal;
Line 3772... Line 4185...
3772
     */
4185
     */
3773
    protected Package findPackage(String alias, ArrayList<Package> packageCollection)
4186
    protected Package findPackage(String alias, ArrayList<Package> packageCollection)
3774
    {
4187
    {
3775
        mLogger.debug("findPackage 2 alias {}", alias);
4188
        mLogger.debug("findPackage 2 alias {}", alias);
3776
        Package retVal = NULL_PACKAGE;
4189
        Package retVal = NULL_PACKAGE;
-
 
4190
        int index = 0;
-
 
4191
        findPackageLastIndex = -1;
3777
 
4192
 
3778
        for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); )
4193
        for (Iterator<Package> it = packageCollection.iterator(); it.hasNext(); index++)
3779
        {
4194
        {
3780
            Package p = it.next();
4195
            Package p = it.next();
3781
 
4196
 
3782
            if ( p.mAlias.compareTo( alias ) == 0 )
4197
            if ( p.mAlias.compareTo( alias ) == 0 )
3783
            {
4198
            {
3784
                retVal = p;
4199
                retVal = p;
-
 
4200
                findPackageLastId = p.mId;
-
 
4201
                findPackageLastPackage = p;
-
 
4202
                findPackageLastIndex = index;
3785
                break;
4203
                break;
3786
            }
4204
            }
3787
        }
4205
        }
3788
 
4206
 
3789
        mLogger.info("findPackage 2 returned {}", retVal.mName);
4207
        mLogger.info("findPackage 2 returned {}", retVal.mName);
Line 4583... Line 5001...
4583
 
5001
 
4584
        if ( mUseDatabase )
5002
        if ( mUseDatabase )
4585
        {
5003
        {
4586
            try
5004
            try
4587
            {
5005
            {
4588
                Iterator<Package> it = mBuildOrder.iterator();
5006
                Iterator<PlannedPackage> it = mBuildOrder.iterator();
4589
                int fragment = 0;
5007
                int fragment = 0;
4590
                CallableStatement stmt = mConnection.prepareCall( "call PK_BUILDAPI.set_build_plan(?,?,?)" );
5008
                CallableStatement stmt = mConnection.prepareCall( "call PK_BUILDAPI.set_build_plan(?,?,?)" );
4591
 
5009
 
4592
                do {
5010
                do {
4593
                    //
5011
                    //
Line 4598... Line 5016...
4598
                    StringBuilder pvList = new StringBuilder();
5016
                    StringBuilder pvList = new StringBuilder();
4599
                    String joiner = "";
5017
                    String joiner = "";
4600
 
5018
 
4601
                    while ( pvList.length() < 3000  && it.hasNext() )
5019
                    while ( pvList.length() < 3000  && it.hasNext() )
4602
                    {
5020
                    {
4603
                        Package p = it.next();
5021
                        PlannedPackage p = it.next();
4604
                        pvList.append(joiner);
5022
                        pvList.append(joiner);
4605
                        pvList.append(p.mId);
5023
                        pvList.append(p.mPkg.mId);
4606
                        joiner = ",";
5024
                        joiner = ",";
4607
                    }
5025
                    }
4608
 
5026
 
4609
                    //  Terminate if we have nothing to add and its not the first pass
5027
                    //  Terminate if we have nothing to add and its not the first pass
4610
                    if (pvList.length() <= 0 && fragment != 0)
5028
                    if (pvList.length() <= 0 && fragment != 0)