diff options
author | Patrick Benavoli <patrickx.benavoli@intel.com> | 2011-11-29 11:10:27 +0100 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-10 17:15:01 +0100 |
commit | 0bd50546a8d06a6865d32c695adf8893fa71250a (patch) | |
tree | 966dc5c4c8143df983668db92db26129eafb1e3b /parameter/ConfigurableDomain.cpp | |
parent | e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21 (diff) | |
download | external_parameter-framework-0bd50546a8d06a6865d32c695adf8893fa71250a.zip external_parameter-framework-0bd50546a8d06a6865d32c695adf8893fa71250a.tar.gz external_parameter-framework-0bd50546a8d06a6865d32c695adf8893fa71250a.tar.bz2 |
PFW: Rule handling from CLI
BZ: 15689
These changes enable handling changing the rules for configuration application
from the command line interface.
It is possible to assign a new rule, to display the existing one or to clear
it.
Restriction: like in XML, root rule must be compound.
Syntax is the following:
- Criterion rule expression:
<criterion> <verb> <object>
- Compound rule expression
(All|Any){<content>}
where <content> is a comma separated list of any kind of rules.
Example:
All{Any{SelectedOutputDevice Includes Headphones, SelectedOutputDevice
Includes Headset}, Any{Mode Is Normal, Mode Is RingTone}}
means the pertaining configuration will be applied when Selected device
includes either Headphones or Headset, while, ate the same time, Mode is
either Normal or RingTone.
Added dumpDomains remote command to show a summary of domains, configurations
as well as their application conditions (tree view).
Removed not anymore necessary guard against deletion of domains or
configurations that contain rules, ad now they're controlled from the CLI.
Change-Id: Iad2c183271b077b8bbc8ac2fc5f37c266004070f
Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com>
Reviewed-on: http://android.intel.com:8080/26100
Reviewed-by: De Chivre, RenaudX <renaudx.de.chivre@intel.com>
Tested-by: Barthes, FabienX <fabienx.barthes@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'parameter/ConfigurableDomain.cpp')
-rw-r--r-- | parameter/ConfigurableDomain.cpp | 149 |
1 files changed, 100 insertions, 49 deletions
diff --git a/parameter/ConfigurableDomain.cpp b/parameter/ConfigurableDomain.cpp index 696bbd0..4c6541f 100644 --- a/parameter/ConfigurableDomain.cpp +++ b/parameter/ConfigurableDomain.cpp @@ -73,6 +73,24 @@ bool CConfigurableDomain::childrenAreDynamic() const return true; } +// Content dumping +void CConfigurableDomain::logValue(string& strValue, CErrorContext& errorContext) const +{ + (void)errorContext; + + strValue = "{"; + + // Sequence awareness + strValue += "Sequence aware: "; + strValue += _bSequenceAware ? "yes" : "no"; + + // Last applied configuration + strValue += ", Last applied configuration: "; + strValue += _pLastAppliedConfiguration ? _pLastAppliedConfiguration->getName() : "<none>"; + + strValue += "}"; +} + // Sequence awareness void CConfigurableDomain::setSequenceAwareness(bool bSequenceAware) { @@ -460,25 +478,6 @@ bool CConfigurableDomain::isApplicableConfigurationValid(const CConfigurableElem return pApplicableDomainConfiguration && pApplicableDomainConfiguration->isValid(pConfigurableElement); } -// Presence of application condition on any configuration -bool CConfigurableDomain::hasRules() const -{ - // Delegate to configurations - uint32_t uiNbConfigurations = getNbChildren(); - uint32_t uiChild; - - for (uiChild = 0; uiChild < uiNbConfigurations; uiChild++) { - - const CDomainConfiguration* pDomainConfiguration = static_cast<const CDomainConfiguration*>(getChild(uiChild)); - - if (pDomainConfiguration->hasRule()) { - - return true; - } - } - return false; -} - // In case configurable element was removed void CConfigurableDomain::computeSyncSet() { @@ -541,20 +540,10 @@ bool CConfigurableDomain::createConfiguration(const string& strName, const CPara bool CConfigurableDomain::deleteConfiguration(const string& strName, string& strError) { - CDomainConfiguration* pDomainConfiguration = static_cast<CDomainConfiguration*>(findChild(strName)); + CDomainConfiguration* pDomainConfiguration = findConfiguration(strName, strError); if (!pDomainConfiguration) { - strError = "Configuration not found"; - - return false; - } - - // Check configuration has no rule (prevent accidental loss of data) - if (pDomainConfiguration->hasRule()) { - - strError = "Deletion of configuration containing application rules is not supported to prevent any accitental loss of data.\nPlease consider a direct modification of the XML file."; - return false; } @@ -593,12 +582,10 @@ void CConfigurableDomain::listAssociatedToElements(string& strResult) const bool CConfigurableDomain::renameConfiguration(const string& strName, const string& strNewName, string& strError) { - CDomainConfiguration* pDomainConfiguration = static_cast<CDomainConfiguration*>(findChild(strName)); + CDomainConfiguration* pDomainConfiguration = findConfiguration(strName, strError); if (!pDomainConfiguration) { - strError = "Configuration not found"; - return false; } log("Renaming domain \"%s\"'s configuration \"%s\" to \"%s\"", getName().c_str(), strName.c_str(), strNewName.c_str()); @@ -607,15 +594,12 @@ bool CConfigurableDomain::renameConfiguration(const string& strName, const strin return pDomainConfiguration->rename(strNewName, strError); } -bool CConfigurableDomain::restoreConfiguration(const string& strName, CParameterBlackboard* pMainBlackboard, bool bAutoSync, string& strError) +bool CConfigurableDomain::restoreConfiguration(const string& strName, CParameterBlackboard* pMainBlackboard, bool bAutoSync, string& strError) const { - // Find Domain configuration - const CDomainConfiguration* pDomainConfiguration = static_cast<const CDomainConfiguration*>(findChild(strName)); + const CDomainConfiguration* pDomainConfiguration = findConfiguration(strName, strError); if (!pDomainConfiguration) { - strError = "Domain configuration " + strName + " not found"; - return false; } log("Restoring domain \"%s\"'s configuration \"%s\" to parameter blackboard", getName().c_str(), pDomainConfiguration->getName().c_str()); @@ -636,12 +620,10 @@ bool CConfigurableDomain::restoreConfiguration(const string& strName, CParameter bool CConfigurableDomain::saveConfiguration(const string& strName, const CParameterBlackboard* pMainBlackboard, string& strError) { // Find Domain configuration - CDomainConfiguration* pDomainConfiguration = static_cast<CDomainConfiguration*>(findChild(strName)); + CDomainConfiguration* pDomainConfiguration = findConfiguration(strName, strError); if (!pDomainConfiguration) { - strError = "Domain configuration " + strName + " not found"; - return false; } log("Saving domain \"%s\"'s configuration \"%s\" from parameter blackboard", getName().c_str(), pDomainConfiguration->getName().c_str()); @@ -652,15 +634,13 @@ bool CConfigurableDomain::saveConfiguration(const string& strName, const CParame return true; } -bool CConfigurableDomain::setElementSequence(const string& strName, const vector<string>& astrNewElementSequence, string& strError) +bool CConfigurableDomain::setElementSequence(const string& strConfiguration, const vector<string>& astrNewElementSequence, string& strError) { // Find Domain configuration - CDomainConfiguration* pDomainConfiguration = static_cast<CDomainConfiguration*>(findChild(strName)); + CDomainConfiguration* pDomainConfiguration = findConfiguration(strConfiguration, strError); if (!pDomainConfiguration) { - strError = "Domain configuration " + strName + " not found"; - return false; } @@ -668,15 +648,13 @@ bool CConfigurableDomain::setElementSequence(const string& strName, const vector return pDomainConfiguration->setElementSequence(astrNewElementSequence, strError); } -bool CConfigurableDomain::getElementSequence(const string& strName, string& strResult) const +bool CConfigurableDomain::getElementSequence(const string& strConfiguration, string& strResult) const { // Find Domain configuration - const CDomainConfiguration* pDomainConfiguration = static_cast<const CDomainConfiguration*>(findChild(strName)); + const CDomainConfiguration* pDomainConfiguration = findConfiguration(strConfiguration, strResult); if (!pDomainConfiguration) { - strResult = "Domain configuration " + strName + " not found"; - return false; } @@ -686,6 +664,52 @@ bool CConfigurableDomain::getElementSequence(const string& strName, string& strR return true; } +bool CConfigurableDomain::setApplicationRule(const string& strConfiguration, const string& strApplicationRule, const CSelectionCriteriaDefinition* pSelectionCriteriaDefinition, string& strError) +{ + // Find Domain configuration + CDomainConfiguration* pDomainConfiguration = findConfiguration(strConfiguration, strError); + + if (!pDomainConfiguration) { + + return false; + } + + // Delegate to configuration + return pDomainConfiguration->setApplicationRule(strApplicationRule, pSelectionCriteriaDefinition, strError); +} + +bool CConfigurableDomain::clearApplicationRule(const string& strConfiguration, string& strError) +{ + // Find Domain configuration + CDomainConfiguration* pDomainConfiguration = findConfiguration(strConfiguration, strError); + + if (!pDomainConfiguration) { + + return false; + } + + // Delegate to configuration + pDomainConfiguration->clearApplicationRule(); + + return true; +} + +bool CConfigurableDomain::getApplicationRule(const string& strConfiguration, string& strResult) const +{ + // Find Domain configuration + const CDomainConfiguration* pDomainConfiguration = findConfiguration(strConfiguration, strResult); + + if (!pDomainConfiguration) { + + return false; + } + + // Delegate to configuration + pDomainConfiguration->getApplicationRule(strResult); + + return true; +} + // Last applied configuration string CConfigurableDomain::getLastAppliedConfigurationName() const { @@ -983,3 +1007,30 @@ CSyncerSet* CConfigurableDomain::getSyncerSet(const CConfigurableElement* pConfi return mapIt->second; } + +// Configuration retrieval +CDomainConfiguration* CConfigurableDomain::findConfiguration(const string& strConfiguration, string& strError) +{ + CDomainConfiguration* pDomainConfiguration = static_cast<CDomainConfiguration*>(findChild(strConfiguration)); + + if (!pDomainConfiguration) { + + strError = "Domain configuration " + strConfiguration + " not found"; + + return NULL; + } + return pDomainConfiguration; +} + +const CDomainConfiguration* CConfigurableDomain::findConfiguration(const string& strConfiguration, string& strError) const +{ + const CDomainConfiguration* pDomainConfiguration = static_cast<const CDomainConfiguration*>(findChild(strConfiguration)); + + if (!pDomainConfiguration) { + + strError = "Domain configuration " + strConfiguration + " not found"; + + return NULL; + } + return pDomainConfiguration; +} |