summaryrefslogtreecommitdiff
path: root/configmgr/source/treemgr/deferredview.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/source/treemgr/deferredview.cxx')
-rw-r--r--configmgr/source/treemgr/deferredview.cxx443
1 files changed, 0 insertions, 443 deletions
diff --git a/configmgr/source/treemgr/deferredview.cxx b/configmgr/source/treemgr/deferredview.cxx
deleted file mode 100644
index a0449a25aac4..000000000000
--- a/configmgr/source/treemgr/deferredview.cxx
+++ /dev/null
@@ -1,443 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_configmgr.hxx"
-#include <stdio.h>
-#include "deferredview.hxx"
-#include "viewfactory.hxx"
-#include "nodeimplobj.hxx"
-
-namespace configmgr
-{
- namespace view
- {
-//-----------------------------------------------------------------------------
-static inline configuration::DeferredGroupNodeImpl* deferredGroupNode(Node const& _aNode)
-{
- return static_cast<configuration::DeferredGroupNodeImpl*>(_aNode.get_impl());
-}
-//-----------------------------------------------------------------------------
-
-static inline configuration::DeferredGroupNodeImpl* deferredGroupNode(GroupNode const& _aNode)
-{
- return static_cast<configuration::DeferredGroupNodeImpl*>(_aNode.get_impl());
-}
-//-----------------------------------------------------------------------------
-
-static inline configuration::DeferredSetNodeImpl* deferredSetNode(Node const& _aNode)
-{
- return static_cast<configuration::DeferredSetNodeImpl*>(_aNode.get_impl());
-}
-//-----------------------------------------------------------------------------
-
-static inline configuration::DeferredSetNodeImpl* deferredSetNode(SetNode const& _aNode)
-{
- return static_cast<configuration::DeferredSetNodeImpl*>(_aNode.get_impl());
-}
-//-----------------------------------------------------------------------------
-
-static inline void deferredValueNode(Node const& _aNode)
-{
- { (void)_aNode; }
- OSL_ENSURE( _aNode.isValueNode(),"Unknown Node type in deferred view");
- OSL_ENSURE(_aNode.get_offset() == configuration::Tree::ROOT, "Tree: Unexpected node type - non-root value element");
-}
-//-----------------------------------------------------------------------------
-
-static void deferredValueNodeChanged(Node const& _aNode)
-{
- { (void)_aNode; }
- OSL_ENSURE( _aNode.isValueNode(),"Unknown Node type in deferred view");
- OSL_ENSURE(_aNode.get_offset() == configuration::Tree::ROOT, "Tree: Unexpected node type - non-root value element");
- OSL_ENSURE(!_aNode.isValueNode(),"Value node changes not supported in deferred view");
- throw configuration::Exception("Internal Error: Invalid operation applied to element");
-}
-//-----------------------------------------------------------------------------
-
-bool DeferredViewStrategy::doHasChanges(Node const& _aNode) const
-{
- if (_aNode.isGroupNode())
- return deferredGroupNode(_aNode)->hasChanges();
-
- else if (_aNode.isSetNode())
- return deferredSetNode(_aNode)->hasChanges();
-
- else
- deferredValueNode(_aNode);
-
- return false;
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doMarkChanged(Node const& _aNode)
-{
- if (_aNode.isGroupNode())
- deferredGroupNode(_aNode)->markChanged();
-
- else if (_aNode.isSetNode())
- deferredSetNode(_aNode)->markChanged();
-
- else
- deferredValueNodeChanged(_aNode);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doCollectChanges(Node const& _aNode, configuration::NodeChanges& _rChanges) const
-{
- implCollectChangesIn(_aNode,_rChanges);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::implCollectChangesIn(Node const& _aNode, configuration::NodeChanges& _rChanges) const
-{
- if ( hasChanges(_aNode) )
- {
- if (_aNode.isSetNode())
- {
- deferredSetNode(_aNode)->collectElementChanges( _rChanges);
- }
- else if (_aNode.isGroupNode())
- {
- GroupNode aGroup(_aNode);
-
- deferredGroupNode(aGroup)->collectValueChanges( _rChanges, _aNode.tree(), _aNode.get_offset());
-
- for( Node aChild = aGroup.getFirstChild();
- aChild.is();
- aChild = aGroup.getNextChild(aChild)
- )
- {
- this->implCollectChangesIn( aChild, _rChanges );
- }
- }
- else
- OSL_ASSERT(!"Unreachable code");
- }
-}
-
-//-----------------------------------------------------------------------------
-std::auto_ptr<SubtreeChange> DeferredViewStrategy::doPreCommitChanges(configuration::Tree * tree, std::vector< rtl::Reference<configuration::ElementTree> >& _rRemovedElements)
-{
- std::auto_ptr<SubtreeChange> pRet;
- if (hasChanges(tree))
- {
- pRet = implPreCommitChanges(getRootNode(tree),_rRemovedElements);
- if (pRet.get() != NULL)
- {
- pRet->setNodeName(getSimpleRootName(tree));
- }
- }
- return pRet;
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doFailedCommit(configuration::Tree * tree, SubtreeChange& rChanges)
-{
- implFailedCommit(getRootNode(tree),rChanges);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doFinishCommit(configuration::Tree * tree, SubtreeChange& rChanges)
-{
- implFinishCommit(getRootNode(tree),rChanges);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doRevertCommit(configuration::Tree * tree, SubtreeChange& rChanges)
-{
- implRevertCommit(getRootNode(tree),rChanges);
-}
-
-//-----------------------------------------------------------------------------
-configuration::ValueChangeImpl* DeferredViewStrategy::doAdjustToValueChange(GroupNode const& _aGroupNode, rtl::OUString const& _aName, ValueChange const& rExternalChange)
-{
- rtl::Reference<configuration::ValueMemberNode::DeferredImpl> aChange = deferredGroupNode(_aGroupNode)->findValueChange(_aName);
-
- if (aChange.is())
- {
- if (configuration::ValueChangeImpl* pValueChange = aChange->adjustToChange(rExternalChange))
- {
- OSL_ENSURE(aChange->isChange(), "Got an adjusted change from a non-changing value");
-
- return pValueChange;
- }
- else // a non-change
- {
- OSL_ENSURE(!aChange->isChange(), "Got no adjusted change from a changing value") ;
- OSL_ENSURE(false, "Got a non-change from a (deferred) group") ;
- // then do as without deferred change
- }
- }
-
- return ViewStrategy::doAdjustToValueChange(_aGroupNode, _aName, rExternalChange);
-
-}
-
-//-----------------------------------------------------------------------------
-node::Attributes DeferredViewStrategy::doAdjustAttributes(node::Attributes const& _aAttributes) const
-{
- return _aAttributes;
-}
-
-//-----------------------------------------------------------------------------
-configuration::ValueMemberNode DeferredViewStrategy::doGetValueMember(GroupNode const& _aNode, rtl::OUString const& _aName, bool _bForUpdate) const
-{
- return deferredGroupNode(_aNode)->makeValueMember(_aName,_bForUpdate);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doInsertElement(SetNode const& _aNode, rtl::OUString const& aName, configuration::SetEntry const& _aNewEntry)
-{
- // move to this memory segment
- // should be direct (as any free-floating one)
-
- //implMakeElement(aNewEntry)
- configuration::ElementTreeData aNewElement = implMakeElement(_aNode, _aNewEntry );
-
- deferredSetNode(_aNode)->insertNewElement(aName, aNewElement);
-}
-
-//-----------------------------------------------------------------------------
-void DeferredViewStrategy::doRemoveElement(SetNode const& _aNode, rtl::OUString const& aName)
-{
- deferredSetNode(_aNode)->removeOldElement(aName);
-}
-
-//-----------------------------------------------------------------------------
-extern NodeFactory& getDeferredChangeFactory();
-
-NodeFactory& DeferredViewStrategy::doGetNodeFactory()
-{
- return getDeferredChangeFactory();
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-rtl::Reference<ViewStrategy> createDeferredChangeStrategy()
-{
- return new DeferredViewStrategy();
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-std::auto_ptr<SubtreeChange> DeferredViewStrategy::implPreCommitChanges(Node const& _aNode, std::vector< rtl::Reference<configuration::ElementTree> >& _rRemovedElements)
-{
- std::auto_ptr<SubtreeChange> aRet;
-
- OSL_ASSERT (this->hasChanges( _aNode) );
-
- if (_aNode.isSetNode())
- {
- aRet = deferredSetNode(_aNode)->preCommitChanges(_rRemovedElements);
- }
- else if (_aNode.isGroupNode())
- {
- std::auto_ptr<SubtreeChange> aGroupChange(deferredGroupNode(_aNode)->preCommitValueChanges());
-
- OSL_ASSERT(aGroupChange.get());
- if (aGroupChange.get())
- implPreCommitSubChanges( GroupNode(_aNode), _rRemovedElements, *aGroupChange);
-
- aRet = aGroupChange;
- }
- else
- deferredValueNode(_aNode);
-
- return aRet;
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implFinishCommit(Node const& _aNode, SubtreeChange& rSubtreeChange)
-{
- OSL_PRECOND( getSimpleNodeName(_aNode) == rSubtreeChange.getNodeName(), "ERROR: Change name does not match node");
-
- if (_aNode.isSetNode())
- {
- OSL_ENSURE(rSubtreeChange.isSetNodeChange(),"ERROR: Change type GROUP does not match set");
-
- deferredSetNode(_aNode)->finishCommit(rSubtreeChange);
- }
- else if (_aNode.isGroupNode())
- {
- OSL_ENSURE(!rSubtreeChange.isSetNodeChange(),"ERROR: Change type SET does not match group");
-
- deferredGroupNode(_aNode)->finishCommit(rSubtreeChange);
- implFinishSubCommitted( GroupNode(_aNode), rSubtreeChange );
- }
- else
- {
- deferredValueNode(_aNode);
- OSL_ENSURE(false, "Tree: Cannot finish commit: Unexpected node type");
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implRevertCommit(Node const& _aNode, SubtreeChange& rSubtreeChange)
-{
- OSL_PRECOND( getSimpleNodeName(_aNode) == rSubtreeChange.getNodeName(), "ERROR: Change name does not match node");
-
- if (_aNode.isSetNode())
- {
- OSL_ENSURE(rSubtreeChange.isSetNodeChange(),"ERROR: Change type GROUP does not match set");
-
- deferredSetNode(_aNode)->revertCommit(rSubtreeChange);
- }
- else if (_aNode.isGroupNode())
- {
- OSL_ENSURE(!rSubtreeChange.isSetNodeChange(),"ERROR: Change type SET does not match group");
-
- deferredGroupNode(_aNode)->revertCommit(rSubtreeChange);
- implRevertSubCommitted( GroupNode(_aNode), rSubtreeChange );
- }
- else
- {
- deferredValueNode(_aNode);
- OSL_ENSURE(false, "Tree: Cannot revert commit: Unexpected node type");
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implFailedCommit(Node const& _aNode, SubtreeChange& rSubtreeChange)
-{
- OSL_PRECOND( getSimpleNodeName(_aNode) == rSubtreeChange.getNodeName(), "ERROR: Change name does not match node");
-
- if (_aNode.isSetNode())
- {
- OSL_ENSURE(rSubtreeChange.isSetNodeChange(),"ERROR: Change type GROUP does not match set");
-
- deferredSetNode(_aNode)->failedCommit(rSubtreeChange);
- }
- else if (_aNode.isGroupNode())
- {
- OSL_ENSURE(!rSubtreeChange.isSetNodeChange(),"ERROR: Change type SET does not match group");
-
- deferredGroupNode(_aNode)->failedCommit(rSubtreeChange);
- implFailedSubCommitted( GroupNode(_aNode), rSubtreeChange );
- }
- else
- {
- deferredValueNode(_aNode);
- OSL_ENSURE(false, "Tree: Cannot handle commit failure: Unexpected node type");
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implPreCommitSubChanges(GroupNode const & _aGroup, std::vector< rtl::Reference<configuration::ElementTree> >& _rRemovedElements, SubtreeChange& _rParentChange)
-{
- for( Node aChild = _aGroup.getFirstChild(); aChild.is(); aChild = _aGroup.getNextChild(aChild) )
- {
- if (this->hasChanges(aChild))
- {
- std::auto_ptr<SubtreeChange> aSubChanges( this->implPreCommitChanges(aChild,_rRemovedElements) );
- std::auto_ptr<Change> aSubChangesBase( aSubChanges.release() );
- _rParentChange.addChange( aSubChangesBase );
- }
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implFinishSubCommitted(GroupNode const & _aGroup, SubtreeChange& aChangesParent)
-{
- for(SubtreeChange::MutatingChildIterator
- it = aChangesParent.begin_changes(),
- stop = aChangesParent.end_changes();
- it != stop;
- ++it)
- {
- if (dynamic_cast< SubtreeChange * >(&*it) != 0)
- {
- Node aChild = _aGroup.findChild( it->getNodeName() );
- OSL_ENSURE( aChild.is(), "Changed sub-node not found in tree");
-
- this->implFinishCommit(aChild, static_cast<SubtreeChange&>(*it));
- }
- else
- {
- OSL_ENSURE(dynamic_cast< ValueChange * >(&*it) != 0, "Unexpected change type for inner node; change is ignored");
- OSL_ENSURE(! _aGroup.findChild(it->getNodeName()).is() ,
- "Found sub(tree) node where a value was changed");
- }
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implRevertSubCommitted(GroupNode const & _aGroup, SubtreeChange& aChangesParent)
-{
- for(SubtreeChange::MutatingChildIterator
- it = aChangesParent.begin_changes(),
- stop = aChangesParent.end_changes();
- it != stop;
- ++it)
- {
- if (dynamic_cast< SubtreeChange * >(&*it) != 0)
- {
- Node aChild = _aGroup.findChild( it->getNodeName() );
- OSL_ENSURE( aChild.is(), "Changed sub-node not found in tree");
-
- this->implRevertCommit(aChild, static_cast<SubtreeChange&>(*it));
- }
- else
- {
- OSL_ENSURE(dynamic_cast< ValueChange * >(&*it) != 0, "Unexpected change type for inner node; change is ignored");
- OSL_ENSURE(! _aGroup.findChild(it->getNodeName()).is() ,
- "Found sub(tree) node where a value was changed");
- }
- }
-}
-//-----------------------------------------------------------------------------
-
-void DeferredViewStrategy::implFailedSubCommitted(GroupNode const & _aGroup, SubtreeChange& aChangesParent)
-{
- for(SubtreeChange::MutatingChildIterator
- it = aChangesParent.begin_changes(),
- stop = aChangesParent.end_changes();
- it != stop;
- ++it)
- {
- if (dynamic_cast< SubtreeChange * >(&*it) != 0)
- {
- Node aChild = _aGroup.findChild( it->getNodeName() );
- OSL_ENSURE( aChild.is(), "Changed sub-node not found in tree");
-
- this->implFailedCommit(aChild, static_cast<SubtreeChange&>(*it));
- }
- else
- {
- OSL_ENSURE(dynamic_cast< ValueChange * >(&*it) != 0, "Unexpected change type for inner node; change is ignored");
- OSL_ENSURE(! _aGroup.findChild(it->getNodeName()).is() ,
- "Found sub(tree) node where a value was changed");
- }
- }
-}
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
- }
-}