Pré. | Proc. |
Exemple de script Code Miner
L'exemple de script suivant est conçu pour démontrer l'utilisation de toutes les méthodes disponibles pour tous les objets de l'interface API Code Miner .
Example Script
!INC Local Scripts.EAConstants-JScript/*
* Script Name: CodeMiner API Test
* Author: Sparx Systems
* Purpose: Exercise all of the functions available within the Code Miner API
* Date: May 2024
*/
var q1 = "{\
byItem(\"OPERATION\",\"NAME\",\"LoadBinary\"),\
byItem(\"OPERATION\",\"NAMESPACE\",\"C2DShapeEditDlg\")\
}";
function PrintFacetInfo(indent, facet, k)
{
indent = indent + " ";
// print out the Name/Value data pair, for the specified CMFacet object
Session.Output(indent + "--- Facet " + k + " Info ---");
Session.Output(indent + "Facet name: " + facet.GetName() );
Session.Output(indent + "Facet value: " + facet.GetValue() );
Session.Output(" ");
}
function PrintDataNode(indent, dataNode, n, level)
{
indent = indent + "= ";
level++;
// print out the details for the specified CMDataNode object.
Session.Output(" ");
Session.Output(indent + " DataNode " + level + " - " + n + " ----------");
Session.Output(indent + "DataNode name: " + dataNode.GetName() );
Session.Output(indent + "Line: " + dataNode.GetLine() );
Session.Output(indent + "Column: " + dataNode.GetColumn() );
Session.Output(indent + "- - - - - - -");
Session.Output(indent + "Facet count: " + dataNode.GetFacetCount() );
// iterate through the array of CMFacet objects and print out their contents
var facet as EA.CMFacet;
var facetCount;
facetCount = dataNode.GetFacetCount();
var k;
for(k=0; k < facetCount; k++)
{
facet = dataNode.GetFacet(k);
PrintFacetInfo(indent, facet, k+1);
}
// iterate through the array of CMDataNode child objects and print out their contents
var nextLevel = level + 1;
Session.Output(" ");
Session.Output(indent + "Level " + nextLevel + " DataNode count: " + dataNode.GetChildCount() );
var childDataNodeCount;
childDataNodeCount = dataNode.GetChildCount();
var l;
for(l=0; l < childDataNodeCount; l++)
{
childDataNode = dataNode.GetChildNode(l);
PrintDataNode(indent, childDataNode, l+1, level);
}
Session.Output(indent + "---------------------");
}
function PrintResultSetElement(indent, resultset, i)
{
// print out the details of the specified result set element
indent = indent + " ";
var elementNumber = i + 1;
Session.Output(indent + "ResultSet - Element(" + elementNumber + ")");
Session.Output(indent + "-------------------------");
Session.Output(indent + " Filename : " + resultset.GetFilename(i) );
Session.Output(indent + " Address : " + resultset.GetAddress(i) );
Session.Output(indent + " Position : " + resultset.GetPosition(i) );
Session.Output(indent + " Start : " + resultset.GetPositionStart(i) );
Session.Output(indent + " End : " + resultset.GetPositionEnd(i) );
Session.Output(indent + " Top Level DataNode count: " + resultset.GetChildCount()
);
var childCount;
childCount = resultset.GetChildCount();
var level = 0;
var dataNode as EA.CMDataNode;
var j;
for(j=0; j < childCount; j++)
{
dataNode = resultset.GetChildNode(0);
PrintDataNode(indent, dataNode, j+1, level);
}
Session.Output(indent + "---------------------");
}
function main()
{
var minerService as EA.CMService;
minerService = Repository.CodeMinerService;
// Connect to a Code Miner database
if( minerService.CMLoadDatabase("C:\\CodeMiner Example\\Project1.cdb") )
{
var resultset as EA.CMDataSet;
// Execute a query against the Code Miner database
Session.Output("Query: " + q1);
resultset = minerService.ExecuteMFQL(q1);
Session.Output("Results Count: " + resultset.Count);
Session.Output("Child count : " + resultset.GetChildCount() );
var indent;
indent = " ";
// Iterate through the result set, printing out the details of each 'match' returned by the query.
var i;
for(i=0; i < resultset.Count; i++)
{
PrintResultSetElement(indent, resultset, i);
}
/* Out of Range Test */
var x = resultset.GetFilename(8);
Session.Output(indent + "Node Filename: " + x );
}
else
Session.Output(indent + "Failed to Open Database: " + minerService.GetLastError() );
}
main();