Skip to content

Commit

Permalink
TableFFT: add backward compatibility for new properties
Browse files Browse the repository at this point in the history
Changes are :
- 'AverageFft' has been renamed 'UseWelchMethod'
- 'OptimizeForRealInput' has been renamed 'OneSidedSpectrum'
- 'NumberOfBlock' has been removed
  • Loading branch information
Timothee Chabat committed Dec 12, 2022
1 parent edfe3c6 commit 8019104
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
40 changes: 40 additions & 0 deletions Remoting/ServerManager/vtkSMStateVersionController.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,39 @@ struct Process_5_10_to_5_11
}
};

struct Process_5_11_to_5_12
{
bool operator()(xml_document& document) { return ConvertTableFFT(document); }

static bool ConvertTableFFT(xml_document& document)
{
pugi::xpath_node_set xpath_set =
document.select_nodes("//ServerManagerState/Proxy[@group='filters' and @type='TableFFT']");

for (auto xpath_node : xpath_set)
{
auto node = xpath_node.node();

if (auto averageNode = node.find_child_by_attribute("name", "AverageFft"))
{
averageNode.attribute("name").set_value("UseWelchMethod");
}

if (auto optimizeNode = node.find_child_by_attribute("name", "OptimizeForRealInput"))
{
optimizeNode.attribute("name").set_value("OneSidedSpectrum");
}

if (auto nblockNode = node.find_child_by_attribute("name", "NumberOfBlock"))
{
node.remove_child(nblockNode);
}
}

return true;
}
};

} // end of namespace

vtkStandardNewMacro(vtkSMStateVersionController);
Expand Down Expand Up @@ -1563,6 +1596,13 @@ bool vtkSMStateVersionController::Process(vtkPVXMLElement* parent, vtkSMSession*
version = vtkSMVersion(5, 11, 0);
}

if (status && (version < vtkSMVersion(5, 12, 0)))
{
Process_5_11_to_5_12 converter;
status = converter(document);
version = vtkSMVersion(5, 12, 0);
}

if (status)
{
std::ostringstream stream2;
Expand Down
40 changes: 40 additions & 0 deletions Wrapping/Python/paraview/_backwardscompatibilityhelper.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,27 @@ def setattr(proxy, pname, value):
raise NotSupportedException("'StaticMesh' is obsolete. Use 'MeshOverTime' property of " +
proxy.SMProxy.GetXMLName() + " filter instead.")

# 5.11 -> 5.12 breaking changes on "TableFFT" properties
# Renamed AverageFFTperblock into UseWelchMethod
# Renamed OptimizeForRealInput into OneSidedSpectrum
# Removed NumberOfBlock
if proxy.SMProxy and proxy.SMProxy.GetXMLName() == "TableFFT":
isOldVersion = paraview.compatibility.GetVersion() < (5, 12)
if pname == "AverageFFTperblock":
if isOldVersion:
proxy.GetProperty("UseWelchMethod").SetData(value)
raise Continue()
else:
raise NotSupportedException("'AverageFFTperblock' is obsolete. Use 'UseWelchMethod' property instead.")
elif pname == "OptimizeForRealInput":
if isOldVersion:
proxy.GetProperty("OneSidedSpectrum").SetData(value)
raise Continue()
else:
raise NotSupportedException("'OptimizeForRealInput' is obsolete. Use 'OneSidedSpectrum' property instead.")
elif pname == "NumberOfBlock" and not isOldVersion:
raise NotSupportedException("'NumberOfBlock' is obsolete. See 'BlockOverlap' property instead.")

if not hasattr(proxy, pname):
raise AttributeError()
proxy.__dict__[pname] = value
Expand Down Expand Up @@ -859,6 +880,25 @@ def getattr(proxy, pname):
raise NotSupportedException(
"Since ParaView 5.11, 'UseGeometryFilter' has been removed. ")

# 5.11 -> 5.12 breaking changes on "TableFFT" properties
# Renamed AverageFFTperblock into UseWelchMethod
# Renamed OptimizeForRealInput into OneSidedSpectrum
# Removed NumberOfBlock
if proxy.SMProxy and proxy.SMProxy.GetXMLName() == "TableFFT":
isOldVersion = paraview.compatibility.GetVersion() < (5, 12)
if pname == "AverageFFTperblock":
if isOldVersion:
return proxy.GetProperty("UseWelchMethod").GetData()
else:
raise NotSupportedException("'AverageFft' is obsolete. Use 'UseWelchMethod' property instead.")
elif pname == "OptimizeForRealInput":
if isOldVersion:
return proxy.GetProperty("OneSidedSpectrum").GetData()
else:
raise NotSupportedException("'OptimizeForRealInput' is obsolete. Use 'OneSidedSpectrum' property instead.")
elif pname == "NumberOfBlock" and not isOldVersion:
raise NotSupportedException("'NumberOfBlock' is obsolete. See 'BlockOverlap' property instead.")

raise Continue()

# Depending on the compatibility version that has been set, older functionalities
Expand Down

0 comments on commit 8019104

Please sign in to comment.