use of com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode in project convertigo by convertigo.
the class ReferencesView method handleProjectSelection.
private void handleProjectSelection(Object firstElement) {
List<String> projectNames = Engine.theApp.databaseObjectsManager.getAllProjectNamesList();
ProjectExplorerView projectExplorerView = ConvertigoPlugin.getDefault().getProjectExplorerView();
Project projectSelected = null;
ProjectTreeObject projectTreeObjectSelected = null;
UnloadedProjectTreeObject unloadedProjectTreeObjectSelected = null;
if (firstElement instanceof ProjectTreeObject) {
projectTreeObjectSelected = (ProjectTreeObject) firstElement;
projectSelected = projectTreeObjectSelected.getObject();
} else if (firstElement instanceof UnloadedProjectTreeObject) {
unloadedProjectTreeObjectSelected = (UnloadedProjectTreeObject) firstElement;
String projectNameSelected = unloadedProjectTreeObjectSelected.getName();
projectSelected = getProject(projectNameSelected, projectExplorerView);
}
if (projectSelected == null) {
return;
}
String projectNameSelected = projectSelected.getName();
treeViewer.setInput(null);
// Get the referencing sequences and transactions
List<Sequence> sequences = projectSelected.getSequencesList();
RootNode root = new RootNode();
ProjectNode projectNode = new ProjectNode(root, projectNameSelected, projectSelected);
root.addChild(projectNode);
// Get all the projects needed to successfully execute the selected project
// i.e. get all CallTransaction and CallSequence steps from the selected project
// that refer to other projects
RequiresNode requiresNode = new RequiresNode(root, "Requires");
// Search for external sequence or transaction referenced by CallSequence or CallTransaction
// from the selected project
List<String> transactionList = new ArrayList<String>();
List<String> sequenceList = new ArrayList<String>();
for (Sequence sequence : sequences) {
List<Step> steps = sequence.getSteps();
for (Step step : steps) {
getRequiredRequestables(step, projectSelected, projectExplorerView, requiresNode, transactionList, sequenceList);
}
}
UrlMapper urlMapper = projectSelected.getUrlMapper();
if (urlMapper != null) {
List<UrlMapping> mappings = urlMapper.getMappingList();
for (UrlMapping mapping : mappings) {
List<UrlMappingOperation> operations = mapping.getOperationList();
for (UrlMappingOperation operation : operations) {
try {
String targetRequestableName = operation.getTargetRequestable();
if (!targetRequestableName.isEmpty() && !targetRequestableName.startsWith(projectNameSelected)) {
handleTargetRequestable(targetRequestableName, projectExplorerView, requiresNode);
}
} catch (Exception e) {
ConvertigoPlugin.logException(e, "Error while analyzing the projects hierarchy", true);
}
}
}
}
if (requiresNode.hasChildren()) {
projectNode.addChild(requiresNode);
} else {
projectNode.addChild(new InformationNode(projectNode, "This project does not require any other project"));
}
// Get all the projects using the selected project
// i.e. get all CallTransaction and CallSequence steps that refer to transactions
// or sequences from the selected project
IsUsedByNode isUsedByNode = new IsUsedByNode(root, "Is used by");
for (String projectName : projectNames) {
if (!(projectName.equals(projectNameSelected))) {
Project project = getProject(projectName, projectExplorerView);
if (project == null) {
// Unable to load the project, just ignore it
ConvertigoPlugin.logWarning("[References View] Unable to load the project \"" + projectName + "\"", false);
continue;
}
ProjectNode projectFolderExports = new ProjectNode(root, projectName, project);
urlMapper = project.getUrlMapper();
if (urlMapper != null) {
MapperNode mapperNode = new MapperNode(projectFolderExports, urlMapper.getName(), urlMapper);
List<UrlMapping> mappings = urlMapper.getMappingList();
for (UrlMapping mapping : mappings) {
MappingPathNode pathNode = new MappingPathNode(mapperNode, mapping.getPath(), mapping);
List<UrlMappingOperation> operations = mapping.getOperationList();
for (UrlMappingOperation operation : operations) {
String targetRequestable = operation.getTargetRequestable();
if (targetRequestable.startsWith(projectNameSelected + ".")) {
MappingOperationNode operationNode = new MappingOperationNode(pathNode, operation.getName(), operation);
pathNode.addChild(operationNode);
}
}
if (pathNode.hasChildren()) {
mapperNode.addChild(pathNode);
}
}
if (mapperNode.hasChildren()) {
projectFolderExports.addChild(mapperNode);
}
}
List<Sequence> sequencesList = project.getSequencesList();
for (Sequence sequence : sequencesList) {
// Search for CallTransaction and CallSequence
// referencing a transaction or sequence
// from the selected project
List<Step> stepList = sequence.getSteps();
SequenceNode sequenceNode = new SequenceNode(root, sequence.getName(), sequence);
for (Step step : stepList) {
getUsedRequestables(step, projectSelected, sequenceNode);
}
if (sequenceNode.hasChildren()) {
projectFolderExports.addChild(sequenceNode);
}
}
if (projectFolderExports.hasChildren()) {
isUsedByNode.addChild(projectFolderExports);
}
}
}
if (isUsedByNode.hasChildren()) {
projectNode.addChild(isUsedByNode);
} else {
projectNode.addChild(new InformationNode(projectNode, "This project is not used by any other project"));
}
treeViewer.setInput(null);
treeViewer.setInput(root);
treeViewer.expandAll();
}
use of com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode in project convertigo by convertigo.
the class ReferencesView method handleTransactionSelection.
private void handleTransactionSelection(Object firstElement) {
TransactionTreeObject transactionTreeObject = (TransactionTreeObject) firstElement;
Transaction transaction = transactionTreeObject.getObject();
String transactionName = transactionTreeObject.getName();
// Get the referencing sequence steps
String transactionProjectName = transaction.getProject().getName();
String transactionConnectorName = transaction.getParent().getName();
try {
Project project = null;
List<String> projectNames = Engine.theApp.databaseObjectsManager.getAllProjectNamesList();
ProjectExplorerView projectExplorerView = ConvertigoPlugin.getDefault().getProjectExplorerView();
treeViewer.setInput(null);
RootNode root = new RootNode();
TransactionNode transactionFolder = new TransactionNode(root, transactionName, transaction);
root.addChild(transactionFolder);
IsUsedByNode isUsedByNode = new IsUsedByNode(transactionFolder, "Is used by");
RequiresNode requiresNode = new RequiresNode(transactionFolder, "Requires");
ProjectNode projectFolder = null;
// Searching all objects are required transaction selected
Connector connector = transaction.getConnector();
if (connector instanceof HtmlConnector) {
Project proj = ((HtmlConnector) connector).getProject();
ProjectNode projectNode = new ProjectNode(requiresNode, transactionProjectName, proj);
HtmlTransaction htmlTransaction = (HtmlTransaction) transaction;
List<Statement> statements = htmlTransaction.getStatements();
List<ScreenClass> screenClassList = new ArrayList<ScreenClass>();
List<String> siteClipperConnectorNames = new ArrayList<String>();
for (Statement statement : statements) {
if (statement instanceof ScHandlerStatement) {
ScHandlerStatement scHandlerStatement = (ScHandlerStatement) statement;
String screenClassName = scHandlerStatement.getNormalizedScreenClassName();
ScreenClass screenClass = ((HtmlConnector) connector).getScreenClassByName(screenClassName);
if (screenClass != null) {
if (!screenClassList.contains(screenClass)) {
screenClassList.add(screenClass);
requiresNode.addChild(new ScreenClassNode(requiresNode, screenClassName, screenClass));
}
}
}
List<Statement> statementList = ((FunctionStatement) statement).getStatements();
for (Statement st : statementList) {
if (st instanceof ContinueWithSiteClipperStatement) {
ContinueWithSiteClipperStatement continueWithSiteClipperStatement = (ContinueWithSiteClipperStatement) st;
String siteClipperconnectorName = continueWithSiteClipperStatement.getSiteClipperConnectorName();
if (!siteClipperConnectorNames.contains(siteClipperconnectorName)) {
siteClipperConnectorNames.add(siteClipperconnectorName);
Connector siteClipperConnector = proj.getConnectorByName(siteClipperconnectorName);
ConnectorNode connectorSiteClipperNode = new SiteClipperConnectorNode(projectNode, siteClipperconnectorName, siteClipperConnector);
projectNode.addChild(connectorSiteClipperNode);
}
}
}
}
if (projectNode.hasChildren()) {
requiresNode.addChild(projectNode);
}
} else if (connector instanceof JavelinConnector) {
JavelinTransaction javelinTransaction = (JavelinTransaction) transaction;
String handlers = javelinTransaction.handlers;
List<JavelinScreenClass> screenClasses = ((JavelinConnector) connector).getAllScreenClasses();
List<JavelinScreenClass> screenClassList = new ArrayList<JavelinScreenClass>();
for (JavelinScreenClass screenClass : screenClasses) {
if (handlers.indexOf("function on" + screenClass.getName()) != -1) {
if (!screenClassList.contains(screenClass)) {
screenClassList.add(screenClass);
requiresNode.addChild(new ScreenClassNode(requiresNode, screenClass.getName(), screenClass));
}
}
}
}
// Searching all objects are used transaction selected
for (String projectName : projectNames) {
project = getProject(projectName, projectExplorerView);
if (project != null) {
projectFolder = new ProjectNode(isUsedByNode, project.getName(), project);
UrlMapper urlMapper = project.getUrlMapper();
if (urlMapper != null) {
MapperNode mapperNode = new MapperNode(projectFolder, urlMapper.getName(), urlMapper);
List<UrlMapping> mappings = urlMapper.getMappingList();
for (UrlMapping mapping : mappings) {
MappingPathNode pathNode = new MappingPathNode(mapperNode, mapping.getPath(), mapping);
List<UrlMappingOperation> operations = mapping.getOperationList();
for (UrlMappingOperation operation : operations) {
String targetRequestable = operation.getTargetRequestable();
if (targetRequestable.equals(transactionProjectName + "." + transactionConnectorName + "." + transactionName)) {
MappingOperationNode operationNode = new MappingOperationNode(pathNode, operation.getName(), operation);
pathNode.addChild(operationNode);
}
}
if (pathNode.hasChildren()) {
mapperNode.addChild(pathNode);
}
}
if (mapperNode.hasChildren()) {
projectFolder.addChild(mapperNode);
}
}
List<Sequence> sequences = project.getSequencesList();
for (Sequence sequence : sequences) {
List<Step> stepList = sequence.getAllSteps();
SequenceNode sequenceNode = new SequenceNode(projectFolder, sequence.getName(), sequence);
for (Step step : stepList) {
getTransactionReferencing(step, projectExplorerView, sequenceNode, transactionProjectName, transactionConnectorName, transactionName);
}
if (sequenceNode.hasChildren()) {
projectFolder.addChild(sequenceNode);
}
}
if (projectFolder.hasChildren()) {
isUsedByNode.addChild(projectFolder);
}
}
}
if (requiresNode.hasChildren()) {
transactionFolder.addChild(requiresNode);
}
if (isUsedByNode.hasChildren()) {
transactionFolder.addChild(isUsedByNode);
}
if (!transactionFolder.hasChildren()) {
transactionFolder.addChild(new InformationNode(projectFolder, "This transaction is not used in any sequence"));
}
treeViewer.setInput(root);
treeViewer.expandAll();
} catch (EngineException e) {
ConvertigoPlugin.logException(e, "Error while analyzing the projects hierarchy", true);
}
}
use of com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode in project convertigo by convertigo.
the class ViewRefLabelProvider method getImage.
public Image getImage(Object element) {
String iconName = null;
Image image = null;
if (element instanceof AbstractNodeWithDatabaseObjectReference) {
AbstractNodeWithDatabaseObjectReference node = (AbstractNodeWithDatabaseObjectReference) element;
DatabaseObject databaseObject = node.getRefDatabaseObject();
/**
* treat case Entry handlers, Exit handlers etc... where dbo == null
* could be cleaner if having its own icon etc...
*/
if (databaseObject == null) {
if (node.getName().contains("entry"))
iconName = "/com/twinsoft/convertigo/beans/statements/images/handler_entry_16x16.png";
else if (node.getName().contains("exit"))
iconName = "/com/twinsoft/convertigo/beans/statements/images/handler_exit_16x16.png";
else
iconName = null;
} else
iconName = MySimpleBeanInfo.getIconName(databaseObject, BeanInfo.ICON_COLOR_16x16);
} else {
if (element instanceof InformationNode) {
iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/information_color_16x16.png";
} else if (element instanceof IsUsedByNode) {
iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/isusedby_16x16.png";
} else if (element instanceof RequiresNode) {
iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/requires_16x16.png";
} else {
return null;
}
}
image = ViewImageProvider.getImageFromCache(iconName, element);
return image;
}
use of com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode in project convertigo by convertigo.
the class ReferencesView method handleScreenClassSelection.
private void handleScreenClassSelection(Object firstElement) {
ScreenClassTreeObject screenClassTreeObject = (ScreenClassTreeObject) firstElement;
ScreenClass screenClass = screenClassTreeObject.getObject();
String screenClassName = screenClassTreeObject.getName();
// Get the referencing transactions
Connector connector = screenClass.getConnector();
List<Transaction> transactions = connector.getTransactionsList();
RootNode root = new RootNode();
ScreenClassNode screenClassFolder = new ScreenClassNode(root, screenClassName, screenClass);
root.addChild(screenClassFolder);
IsUsedByNode isUsedByNode = new IsUsedByNode(screenClassFolder, "Is used by");
EntryHandlerNode entryFolder = new EntryHandlerNode(isUsedByNode, "Transaction entry handlers", null);
ExitHandlerNode exitFolder = new ExitHandlerNode(isUsedByNode, "Transaction exit handlers", null);
if (connector instanceof HtmlConnector) {
for (Transaction transaction : transactions) {
HtmlTransaction htmlTransaction = (HtmlTransaction) transaction;
List<Statement> statements = htmlTransaction.getStatements();
for (Statement statement : statements) {
if (statement instanceof ScHandlerStatement) {
ScHandlerStatement scHandlerStatement = (ScHandlerStatement) statement;
if (scHandlerStatement.getNormalizedScreenClassName().equals(screenClassName)) {
if (scHandlerStatement.getName().endsWith("Entry")) {
entryFolder.addChild(new TransactionNode(entryFolder, transaction.getName(), scHandlerStatement));
} else {
exitFolder.addChild(new TransactionNode(exitFolder, transaction.getName(), scHandlerStatement));
}
}
}
}
}
} else if (connector instanceof JavelinConnector) {
for (Transaction transaction : transactions) {
JavelinTransaction javelinTransaction = (JavelinTransaction) transaction;
if (javelinTransaction.handlers.indexOf("function on" + screenClassName + "Entry()") != -1) {
entryFolder.addChild(new TransactionNode(entryFolder, transaction.getName(), transaction));
}
if (javelinTransaction.handlers.indexOf("function on" + screenClassName + "Exit()") != -1) {
exitFolder.addChild(new TransactionNode(exitFolder, transaction.getName(), transaction));
}
}
}
if (entryFolder.hasChildren()) {
isUsedByNode.addChild(entryFolder);
}
if (exitFolder.hasChildren()) {
isUsedByNode.addChild(exitFolder);
}
if (!isUsedByNode.hasChildren()) {
screenClassFolder.addChild(new InformationNode(screenClassFolder, "This screen class is not used in any transaction"));
} else {
screenClassFolder.addChild(isUsedByNode);
}
// Build the treeviewer model
treeViewer.setInput(null);
treeViewer.setInput(root);
treeViewer.expandAll();
}
use of com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode in project convertigo by convertigo.
the class ReferencesView method handleSequenceSelection.
private void handleSequenceSelection(Object firstElement) {
SequenceTreeObject sequenceTreeObject = (SequenceTreeObject) firstElement;
Sequence sequenceSelected = sequenceTreeObject.getObject();
String sequenceSelectedName = sequenceSelected.getName();
// String sequenceProjectName = sequenceSelected.getProject().getName();
List<String> projectNames = Engine.theApp.databaseObjectsManager.getAllProjectNamesList();
ProjectExplorerView projectExplorerView = ConvertigoPlugin.getDefault().getProjectExplorerView();
treeViewer.setInput(null);
// Get the referencing sequence steps
List<String> referencingSequence = new ArrayList<String>();
RootNode root = new RootNode();
SequenceNode sequenceFolder = new SequenceNode(root, sequenceSelectedName, sequenceSelected);
root.addChild(sequenceFolder);
IsUsedByNode isUsedByNode = new IsUsedByNode(sequenceFolder, "Is used by");
// Searching all objects that reference the selected sequence
for (String projectName : projectNames) {
Project project = getProject(projectName, projectExplorerView);
if (project != null) {
ProjectNode projectFolder = null;
projectFolder = new ProjectNode(isUsedByNode, project.getName(), project);
List<Sequence> sequences = project.getSequencesList();
referencingSequence.clear();
UrlMapper urlMapper = project.getUrlMapper();
if (urlMapper != null) {
MapperNode mapperNode = new MapperNode(projectFolder, urlMapper.getName(), urlMapper);
List<UrlMapping> mappings = urlMapper.getMappingList();
for (UrlMapping mapping : mappings) {
MappingPathNode pathNode = new MappingPathNode(mapperNode, mapping.getPath(), mapping);
List<UrlMappingOperation> operations = mapping.getOperationList();
for (UrlMappingOperation operation : operations) {
String targetRequestable = operation.getTargetRequestable();
if (targetRequestable.equals(projectName + "." + sequenceSelectedName)) {
MappingOperationNode operationNode = new MappingOperationNode(pathNode, operation.getName(), operation);
pathNode.addChild(operationNode);
}
}
if (pathNode.hasChildren()) {
mapperNode.addChild(pathNode);
}
}
if (mapperNode.hasChildren()) {
projectFolder.addChild(mapperNode);
}
}
for (Sequence sequence : sequences) {
List<Step> steps = sequence.getSteps();
for (Step step : steps) {
SequenceNode sequenceNode = new SequenceNode(projectFolder, sequence.getName(), sequence);
getSequenceReferencingIsUsedBy(step, sequenceSelected, sequenceNode);
if (sequenceNode.hasChildren()) {
projectFolder.addChild(sequenceNode);
}
}
}
if (projectFolder.hasChildren()) {
isUsedByNode.addChild(projectFolder);
}
}
}
List<Step> steps = sequenceSelected.getSteps();
RequiresNode requiresNode = new RequiresNode(root, "Requires");
// Searching all objects that are referenced by the selected sequence
List<String> transactionList = new ArrayList<String>();
List<String> sequenceList = new ArrayList<String>();
for (Step step : steps) {
getSequenceReferencingRequires(step, sequenceSelected, projectExplorerView, requiresNode, transactionList, sequenceList);
}
if (requiresNode.hasChildren()) {
sequenceFolder.addChild(requiresNode);
}
if (isUsedByNode.hasChildren()) {
sequenceFolder.addChild(isUsedByNode);
}
if (!sequenceFolder.hasChildren()) {
sequenceFolder.addChild(new InformationNode(sequenceFolder, "This sequence is not used in any sequence"));
}
treeViewer.setInput(root);
treeViewer.expandAll();
}
Aggregations