use of net.sourceforge.pmd.eclipse.ui.model.FileRecord in project pmd-eclipse-plugin by pmd.
the class ViolationOverview method treeExpanded.
/**
* Calculates the LOC of the expanded file record.
*
* @see org.eclipse.jface.viewers.ITreeViewerListener#treeExpanded(org.eclipse.jface.viewers.TreeExpansionEvent)
*/
public void treeExpanded(TreeExpansionEvent event) {
Object object = event.getElement();
if (object instanceof PackageRecord) {
PackageRecord record = (PackageRecord) object;
AbstractPMDRecord[] children = record.getChildren();
for (AbstractPMDRecord element : children) {
if (element instanceof FileRecord) {
FileRecord fileRecord = (FileRecord) element;
fileRecord.calculateLinesOfCode();
fileRecord.calculateNumberOfMethods();
}
}
}
// refresh the labels in the table
Display.getDefault().asyncExec(new Runnable() {
public void run() {
getViewer().refresh();
}
});
}
use of net.sourceforge.pmd.eclipse.ui.model.FileRecord in project pmd-eclipse-plugin by pmd.
the class ViolationOverviewContentProvider method updateViewer.
// public void resourceChanged(IResourceChangeEvent event) {
//
// LOG.debug("resource changed event");
//
// List<IMarkerDelta> markerDeltas = MarkerUtil.markerDeltasIn(event);
//
// // first we get a List of changes to Files and Projects
// // so we won't need updating everything
// List<IResource> changedFiles = new ArrayList<IResource>();
// List<IProject> changedProjects = new ArrayList<IProject>();
// for (IMarkerDelta markerDelta : markerDeltas) {
// IResource resource = markerDelta.getResource();
// IProject project = resource.getProject();
//
// // the lists should not contain Projects or Resources twice
//
// if (!changedFiles.contains(resource)) {
// changedFiles.add(resource);
// LOG.debug("Resource " + resource.getName() + " has changed");
// }
//
// if (!changedProjects.contains(project)) {
// changedProjects.add(project);
// LOG.debug("Project " + project.getName() + " has changed");
// }
// }
//
// // we can add, change or remove Resources
// // all this changes are given to the viewer later
// final List<AbstractPMDRecord> additions = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> removals = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> changes = new ArrayList<AbstractPMDRecord>();
//
// // we go through the changed Projects
// for (IProject project : changedProjects) {
// LOG.debug("Processing changes for project " + project.getName());
// ProjectRecord projectRec = (ProjectRecord) root.findResource(project);
//
// // if the Project is closed or deleted,
// // we also delete it from the Model and go on
// if (!(project.isOpen() && project.isAccessible())) { // NOPMD by Sven on 09.11.06 22:17
// LOG.debug("The project is not open or not accessible. Remove it");
// List<AbstractPMDRecord>[] array = updateFiles(project, changedFiles);
// removals.addAll(array[1]);
// root.removeResource(project);
// }
//
// // if we couldn't find the Project
// // then it has to be new
// else if (projectRec == null) {
// LOG.debug("Cannot find a project record for it. Add it.");
// projectRec = (ProjectRecord) root.addResource(project);
// }
//
// // then we can update the Files for the new or updated Project
// List<AbstractPMDRecord>[] array = updateFiles(project, changedFiles);
// additions.addAll(array[0]);
// removals.addAll(array[1]);
// changes.addAll(array[2]);
// }
//
// // the additions, removals and changes are given to the viewer
// // so that it can update itself
// // updating the table MUST be in sync
// treeViewer.getControl().getDisplay().syncExec(new Runnable() {
// public void run() {
// updateViewer(additions, removals, changes);
// }
// });
// }
/**
* Updates the Files for a given Project
*
* @param project
* @param changedFiles,
* a List of all changed Files
* @return an List of Lists containing additions [0], removals [1] and changes [2] (Array-Position in Brackets)
*/
// protected List<AbstractPMDRecord>[] updateFiles(IProject project, List<IResource> changedFiles) {
//
// final List<AbstractPMDRecord> additions = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> removals = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> changes = new ArrayList<AbstractPMDRecord>();
// List<AbstractPMDRecord>[] updatedFiles = new List[] { additions, removals, changes };
//
// // we search for the ProjectRecord to the Project
// // if it doesn't exist, we return nothing
// final ProjectRecord projectRec = (ProjectRecord) root.findResource(project);
//
// // we got through all files
// if (projectRec != null && project.isAccessible()) {
// updatedFiles = ChangeEvaluator.searchProjectForModifications(projectRec, changedFiles);
// }
//
// // if the project is deleted or closed
// else if (projectRec != null) {
// final List<AbstractPMDRecord> packages = projectRec.getChildrenAsList();
// // ... we add all Packages to the removals
// // so they are not shown anymore
// removals.addAll(packages);
// for (int k = 0; k < packages.size(); k++) {
// final PackageRecord packageRec = (PackageRecord) packages.get(k);
// removals.addAll(packageRec.getChildrenAsList());
// }
// updatedFiles = new List[] { additions, removals, changes };
// }
//
// return updatedFiles;
// }
// /**
// * Analyzes the modification inside a single project and compute the list of additions, updates and removals.
// *
// * @param projectRec
// * @param changedFiles
// * @return
// */
// private List<AbstractPMDRecord>[] searchProjectForModifications(ProjectRecord projectRec, List<IResource>
// changedFiles) {
// final List<AbstractPMDRecord> additions = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> removals = new ArrayList<AbstractPMDRecord>();
// final List<AbstractPMDRecord> changes = new ArrayList<AbstractPMDRecord>();
// final IProject project = (IProject) projectRec.getResource();
//
// LOG.debug("Analyses project " + project.getName());
//
// for (IResource resource : changedFiles) {
// LOG.debug("Analyses resource " + resource.getName());
//
// // ... and first check, if the project is the right one
// if (project.equals(resource.getProject())) {
// final AbstractPMDRecord rec = projectRec.findResource(resource);
// if (rec != null && rec.getResourceType() == IResource.FILE) {
// final FileRecord fileRec = (FileRecord) rec;
// fileRec.updateChildren();
// if (fileRec.getResource().isAccessible() && fileRec.hasMarkers()) {
// LOG.debug("The file has changed");
// changes.add(fileRec);
// } else {
// LOG.debug("The file has been removed");
// projectRec.removeResource(fileRec.getResource());
// removals.add(fileRec);
//
// // remove parent if no more markers
// final PackageRecord packageRec = (PackageRecord) fileRec.getParent();
// if (!packageRec.hasMarkers()) {
// projectRec.removeResource(fileRec.getParent().getResource());
// removals.add(packageRec);
// }
// }
// } else if (rec == null) {
// LOG.debug("This is a new file.");
// final AbstractPMDRecord fileRec = projectRec.addResource(resource);
// additions.add(fileRec);
// } else {
// LOG.debug("The resource found is not a file! type found : " + rec.getResourceType());
// }
// } else {
// LOG.debug("The project resource is not the same! (" + resource.getProject().getName() + ')');
// }
// }
//
// return new List[] { additions, removals, changes };
// }
/**
* Applies found updates on the table, adapted from Philippe Herlin
*
* @param additions
* @param removals
* @param changes
*/
// protected void updateViewer(List<AbstractPMDRecord> additions, List<AbstractPMDRecord> removals,
// List<AbstractPMDRecord> changes) {
//
// // perform removals
// if (removals.size() > 0) {
// treeViewer.cancelEditing();
// treeViewer.remove(removals.toArray());
// }
//
// // perform additions
// if (additions.size() > 0) {
// for (int i = 0; i < additions.size(); i++) {
// final AbstractPMDRecord addedRec = additions.get(i);
// if (addedRec instanceof FileRecord) {
// treeViewer.add(addedRec.getParent(), addedRec);
// } else {
// treeViewer.add(root, addedRec);
// }
// }
// }
//
// // perform changes
// if (changes.size() > 0) {
// treeViewer.update(changes.toArray(), null);
// }
//
// violationView.refresh();
// }
protected void updateViewer(ChangeRecord<AbstractPMDRecord> changes) {
// perform removals
if (changes.hasRemovals()) {
treeViewer.cancelEditing();
treeViewer.remove(changes.removals.toArray());
}
// perform additions (if any)
for (AbstractPMDRecord addedRec : changes.additions) {
if (addedRec instanceof FileRecord) {
treeViewer.add(addedRec.getParent(), addedRec);
} else {
treeViewer.add(root, addedRec);
}
}
// perform changes
if (changes.hasChanges()) {
treeViewer.update(changes.changes.toArray(), null);
}
violationView.refresh();
}
use of net.sourceforge.pmd.eclipse.ui.model.FileRecord in project pmd-eclipse-plugin by pmd.
the class DataflowView method doCreatePage.
/* @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart) */
@Override
protected PageRec doCreatePage(IWorkbenchPart part) {
FileRecord resourceRecord = getFileRecordFromWorkbenchPart(part);
if (resourceRecord != null) {
setupListener(resourceRecord);
// creates a new DataflowViewPage, when a Resource exists
DataflowViewPage page = new DataflowViewPage(part, resourceRecord);
initPage(page);
page.createControl(getPageBook());
return new PageRec(part, page);
}
return null;
}
use of net.sourceforge.pmd.eclipse.ui.model.FileRecord in project pmd-eclipse-plugin by pmd.
the class ChangeEvaluator method searchProjectForModifications.
/**
* Analyzes the modification inside a single project and compute the list of
* additions, updates and removals.
*
* @param projectRec
* @param changedFiles
* @return
*/
private static List<AbstractPMDRecord>[] searchProjectForModifications(ProjectRecord projectRec, List<IResource> changedFiles) {
// TODO use ChangeRecord
List<AbstractPMDRecord> additions = new ArrayList<AbstractPMDRecord>();
List<AbstractPMDRecord> removals = new ArrayList<AbstractPMDRecord>();
List<AbstractPMDRecord> changes = new ArrayList<AbstractPMDRecord>();
IProject project = (IProject) projectRec.getResource();
for (IResource resource : changedFiles) {
// ... and first check, if the project is the right one
if (project.equals(resource.getProject())) {
AbstractPMDRecord rec = projectRec.findResource(resource);
if (rec != null && rec.getResourceType() == IResource.FILE) {
FileRecord fileRec = (FileRecord) rec;
fileRec.updateChildren();
if (fileRec.getResource().isAccessible() && fileRec.hasMarkers()) {
// LOG.debug("The file has changed");
changes.add(fileRec);
} else {
// LOG.debug("The file has been removed");
projectRec.removeResource(fileRec.getResource());
removals.add(fileRec);
// remove parent if no more markers
if (!fileRec.getParent().hasMarkers()) {
projectRec.removeResource(fileRec.getParent().getResource());
removals.add(fileRec.getParent());
}
}
} else if (rec == null) {
// LOG.debug("This is a new file.");
AbstractPMDRecord fileRec = projectRec.addResource(resource);
additions.add(fileRec);
} else {
// LOG.debug("The resource found is not a file! type found :
// " + rec.getResourceType());
}
} else {
// LOG.debug("The project resource is not the same! (" +
// resource.getProject().getName() + ')');
}
}
return new List[] { additions, removals, changes };
}
use of net.sourceforge.pmd.eclipse.ui.model.FileRecord in project pmd-eclipse-plugin by pmd.
the class ASTView method doCreatePage.
@Override
protected PageRec doCreatePage(IWorkbenchPart part) {
FileRecord resourceRecord = getFileRecordFromWorkbenchPart(part);
if (resourceRecord != null) {
setupListener(resourceRecord);
// creates a new ASTViewPage, when a Resource exists
page = new ASTViewPage(part, resourceRecord);
initPage(page);
page.createControl(getPageBook());
makeActions();
addToolbarControls();
return new PageRec(part, page);
}
return null;
}
Aggregations