logDetail( "Adding new stress to asset model: "
if ( _logger.isDetailEnabled() ) _logger.detail( "Adding new stress to asset model: "
    public void addThreatType( ThreatModelInterface threat_mi )    {        logDetail( "==== Start: Add Threat Model ====" );        if ( threat_mi == null )        {            logDebug( "addThreatType() sent NULL ThreatModelInterface. " );            return;        }        // Here we need to walk the threat model to find all the        // transitive effects that this threat will have.  We build a        // graph of all these stresses, connecting them where there is        // a causal relationship.  The causality can span state        // dimensions as well as asset types, so the complete graph        // needs to be built up here, above all the specific        // AssetTypeModel and AssetTypeDimensionModels.        //        Vector new_stress_set = new Vector();        _stress_graph.add( threat_mi, new_stress_set );        logDetail( "Added " + new_stress_set.size()                  + " new stresses. Current Stress Graph: "                   + _stress_graph.toString() );        // However, when constructing the stress model graph for a        // particular asset state dimension, the        // AssetStateDimensionModel only needs to look at those        // stresses on that particular state dimension.  It will        // build a set of direct effects on that asset but uses        // the linking structure in the larger stress graph to        // compute the probbailities.  For this reason, we need to        // make sure the asset models have a cache of the stresses        // for their asset type and state dimension.        //        Enumeration stress_enum = new_stress_set.elements();        while ( stress_enum.hasMoreElements() )        {            StressInstance stress = (StressInstance) stress_enum.nextElement();            // Do not make the assumption that the asset type model            // exists.  First attempt to add, or simply retrieve the asset            // model.              //            AssetType asset_type = stress.getAffectedAssetType();            AssetTypeModel asset_type_model                     = getOrCreateAssetTypeModel( asset_type );            if ( asset_type_model == null )            {                logDebug( "Cannot find AssetTypeModel for asset type: "                          + asset_type.getName() );                continue;            }            try            {                logDetail( "Adding new stress to asset model: "                          + stress.getName() );                            asset_type_model.addStressInstance( stress );            }            catch (BelievabilityException be)            {                logError( "Cannot add stress "                          + stress.getName() + " to asset model : "                           + be.getMessage() );                return;            }        } // while stress_enum        logDebug( "Added threat: " + threat_mi.getName() );    } // method addThreatModel