[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model ...
Robert Stryker
rawblem at gmail.com
Wed Nov 22 16:41:43 EST 2006
User: rawb
Date: 06/11/22 16:41:43
Modified: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model
EventLogModel.java
Added: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model
PackagesBuildListener.java
Log:
Changed event log item api slightly to allow for a major type (publish event, build event, server state event, etc) in addition to the specific type (which is used more for the label providers)
Revision Changes Path
1.3 +12 -7 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/EventLogModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EventLogModel.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/EventLogModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- EventLogModel.java 16 Nov 2006 19:51:49 -0000 1.2
+++ EventLogModel.java 22 Nov 2006 21:41:43 -0000 1.3
@@ -109,17 +109,22 @@
public static class EventLogTreeItem extends SimpleTreeItem {
public static final String DATE = "org.jboss.ide.eclipse.as.core.model.EventLogTreeItem.Date";
- private String type;
- public EventLogTreeItem(SimpleTreeItem parent, String type) {
+ private String specificType, majorType;
+ public EventLogTreeItem(SimpleTreeItem parent, String majorType, String specificType) {
super(parent, null);
- this.type = type;
+ this.specificType = specificType;
+ this.majorType = majorType;
}
- public EventLogTreeItem(SimpleTreeItem parent, Object data, String type) {
+ public EventLogTreeItem(SimpleTreeItem parent, Object data, String majorType, String specificType) {
super(parent, data);
- this.type = type;
+ this.specificType = specificType;
+ this.majorType = majorType;
}
- public String getType() {
- return type;
+ public String getEventClass() {
+ return majorType;
+ }
+ public String getSpecificType() {
+ return specificType;
}
public EventLogTreeItem getEventRoot() {
SimpleTreeItem item = this;
1.1 date: 2006/11/22 21:41:43; author: rawb; state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/PackagesBuildListener.java
Index: PackagesBuildListener.java
===================================================================
/**
* JBoss, a Division of Red Hat
* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.ide.eclipse.as.core.model;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.JBossServerCore;
import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogRoot;
import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
import org.jboss.ide.eclipse.packages.core.model.IPackagesBuildListener;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
/**
*
* @author rob.stryker at jboss.com
*/
public class PackagesBuildListener implements IPackagesBuildListener {
public static PackagesBuildListener instance;
private HashMap projectServerToEvent = new HashMap();
public PackagesBuildListener() {
if( instance != null ) {
instance.remove();
}
instance = this;
PackagesCore.addPackagesBuildListener(this);
}
public void remove() {
PackagesCore.removePackagesBuildListener(this);
}
public void startedBuildingPackage(IPackage pkg) {
IServer[] servers = getServersWhoCare(pkg);
for( int i = 0; i < servers.length; i++ ) {
ProjectServerPair projectKey = new ProjectServerPair(pkg.getProject(), servers[i]);
EventLogTreeItem item = (EventLogTreeItem)projectServerToEvent.get(projectKey);
if( item == null ) {
EventLogRoot root = EventLogModel.getModel(servers[i]).getRoot();
projectServerToEvent.put(pkg, root);
item = root;
EventLogModel.markChanged(root);
}
PackagesBuildListenerEventLogItem child =
new PackagesBuildListenerEventLogItem(item, PACKAGE_BUILD_STARTED);
child.setProperty("package.name", pkg.getName());
EventLogModel.markChanged(item);
}
}
public void finishedBuildingPackage(IPackage pkg) {
IServer[] servers = getServersWhoCare(pkg);
for( int i = 0; i < servers.length; i++ ) {
ProjectServerPair projectKey = new ProjectServerPair(pkg.getProject(), servers[i]);
EventLogTreeItem item = (EventLogTreeItem)projectServerToEvent.get(projectKey);
if( item == null ) {
item = (EventLogTreeItem)projectServerToEvent.get(pkg);
if( item == null ) {
EventLogRoot root = EventLogModel.getModel(servers[i]).getRoot();
item = root;
projectServerToEvent.put(pkg, item);
EventLogModel.markChanged(root);
}
}
PackagesBuildListenerEventLogItem child =
new PackagesBuildListenerEventLogItem(item, PACKAGE_BUILD_FINISHED);
child.setProperty("package.name", pkg.getName());
EventLogModel.markChanged(item);
projectServerToEvent.remove(pkg);
}
}
public void buildFailed(IPackage pkg, IStatus status) {
IServer[] servers = getServersWhoCare(pkg);
for( int i = 0; i < servers.length; i++ ) {
ProjectServerPair projectKey = new ProjectServerPair(pkg.getProject(), servers[i]);
EventLogTreeItem item = (EventLogTreeItem)projectServerToEvent.get(projectKey);
if( item == null ) {
item = (EventLogTreeItem)projectServerToEvent.get(pkg);
if( item == null ) {
EventLogRoot root = EventLogModel.getModel(servers[i]).getRoot();
item = root;
projectServerToEvent.put(pkg, item);
EventLogModel.markChanged(root);
}
}
PackagesBuildListenerEventLogItem child =
new PackagesBuildListenerEventLogItem(item, PACKAGE_BUILD_FINISHED);
child.setProperty("package.name", pkg.getName());
EventLogModel.markChanged(item);
projectServerToEvent.remove(pkg);
}
}
public void startedCollectingFileSet(IPackageFileSet fileset) {
}
public void finishedCollectingFileSet(IPackageFileSet fileset) {
}
public void startedBuild(IProject project) {
IServer[] serversThatCare = getServersWhoCare(project);
// Create a top level event for each of these guys who care
for( int i = 0; i < serversThatCare.length; i++ ) {
ProjectServerPair key = new ProjectServerPair(project, serversThatCare[i]);
EventLogRoot root = EventLogModel.getModel(serversThatCare[i]).getRoot();
projectServerToEvent.put(key, root);
PackagesBuildListenerEventLogItem child =
new PackagesBuildListenerEventLogItem(root, PROJECT_BUILD_STARTED);
child.setProperty("project.name", project.getName());
EventLogModel.markChanged(root);
}
}
public void finishedBuild(IProject project) {
IServer[] serversThatCare = getServersWhoCare(project);
// Create a top level event for each of these guys who care
for( int i = 0; i < serversThatCare.length; i++ ) {
ProjectServerPair key = new ProjectServerPair(project, serversThatCare[i]);
EventLogTreeItem buildRoot = (EventLogTreeItem)projectServerToEvent.get(key);
PackagesBuildListenerEventLogItem val =
new PackagesBuildListenerEventLogItem(buildRoot, PROJECT_BUILD_FINISHED);
val.setProperty("project.name", project.getName());
EventLogModel.markChanged(buildRoot);
// cleanup
projectServerToEvent.remove(key);
}
}
/*
* If a server cares about any one package, then it cares the building is starting
*/
protected IServer[] getServersWhoCare(IProject project) {
Set set = new TreeSet();
IPackage[] packs = PackagesCore.getProjectPackages(project, new NullProgressMonitor());
for( int i = 0; i < packs.length; i++ )
set.addAll(Arrays.asList(getServersWhoCare(packs[i])));
return (IServer[]) set.toArray(new IServer[set.size()]);
}
// TODO later
protected IServer[] getServersWhoCare(IPackage pack) {
return JBossServerCore.getIServerJBossServers();
}
public static final String EVENT_TYPE = "org.jboss.ide.eclipse.as.core.model.Packages";
public static final String PROJECT_BUILD_STARTED = "org.jboss.ide.eclipse.as.core.model.Packages.projectBuildStarted";
public static final String PROJECT_BUILD_FINISHED = "org.jboss.ide.eclipse.as.core.model.Packages.projectBuildFinished";
public static final String PACKAGE_BUILD_STARTED = "org.jboss.ide.eclipse.as.core.model.Packages.packageBuildStarted";
public static final String PACKAGE_BUILD_FINISHED = "org.jboss.ide.eclipse.as.core.model.Packages.packageBuildFinished";
public static final String PACKAGE_BUILD_FAILED = "org.jboss.ide.eclipse.as.core.model.Packages.packageBuildFinished";
protected class PackagesBuildListenerEventLogItem extends EventLogTreeItem {
public PackagesBuildListenerEventLogItem(SimpleTreeItem parent,
String specificType) {
super(parent, EVENT_TYPE, specificType);
setProperty(DATE, new Long(new Date().getTime()));
}
}
protected class ProjectServerPair {
public IProject project;
public IServer server;
public ProjectServerPair(IProject project, IServer server) {
this.project = project; this.server = server;
}
public int hashCode() {
return project.hashCode() + server.hashCode();
}
public boolean equals(Object other) {
if( !(other instanceof ProjectServerPair )) {
return false;
}
ProjectServerPair p2 = (ProjectServerPair)other;
return p2.project == project && p2.server == server;
}
}
}
More information about the jboss-cvs-commits
mailing list