/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.workspace; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.NotificationImpl; import org.teiid.core.designer.util.CoreArgCheck; /** * ModelWorkspaceNotificationImpl * * @since 8.0 */ public class ModelWorkspaceNotificationImpl extends NotificationImpl implements ModelWorkspaceNotification { protected final IResourceDelta delta; protected final Object notifier; protected final IResourceChangeEvent event; private boolean isRename = false; //------------------------------------------------------------------------- // C O N S T R U C T O R //------------------------------------------------------------------------- /** * Construct an instance of ModelWorkspaceNotificationImpl. * @param eventType * @param delta * @param isPre * @param isAutoBuild */ public ModelWorkspaceNotificationImpl(final int eventType, final IResourceDelta delta, final IResourceChangeEvent event){ super(eventType, null, delta); CoreArgCheck.isNotNull(event); this.delta = delta; this.event= event; if(delta != null) { this.notifier = delta.getResource(); } else { this.notifier = event.getResource(); } } public IResourceChangeEvent getChangeEvent() { return this.event; } //------------------------------------------------------------------------- // I N T E R F A C E M E T H O D S //------------------------------------------------------------------------- /** * @return ResourceDelta instance */ @Override public IResourceDelta getDelta() { return delta; } /** * Return true if this a rename notification */ @Override public boolean isRename(){ return this.isRename; } /** * set is rename attribute */ public void setIsRename(final boolean isRename){ this.isRename = isRename; } /** * Return true is event is an "autoBuild" event */ @Override public boolean isAutoBuild() { return ResourceChangeUtilities.isAutoBuild(this.event); } /** * Return true is event is an "preAutoBuild" event */ @Override public boolean isPreAutoBuild() { return ResourceChangeUtilities.isPreAutoBuild(this.event); } @Override public Object getNotifier(){ return this.notifier; } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPostAutoBuild() */ @Override public boolean isPostAutoBuild() { return ResourceChangeUtilities.isPostAutoBuild(this.event); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPostChange() */ @Override public boolean isPostChange() { return ResourceChangeUtilities.isPostChange(this.event); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreClose() */ @Override public boolean isPreClose() { return ResourceChangeUtilities.isPreClose(this.event); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreDelete() */ @Override public boolean isPreDelete() { return ResourceChangeUtilities.isPreDelete(this.event); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isOpen() */ @Override public boolean isOpen() { return ResourceChangeUtilities.isOpened(this.delta); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isClose() */ @Override public boolean isClose() { return getEventType() == CLOSING; } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreNotification() */ @Override public boolean isPreNotification() { return ResourceChangeUtilities.isPreEvent(this.event); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreNotification() */ @Override public boolean isFile() { return ResourceChangeUtilities.isFile(this.delta); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreNotification() */ @Override public boolean isFolder() { return ResourceChangeUtilities.isFolder(this.delta); } /* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspaceNotification#isPreNotification() */ @Override public boolean isProject() { //return ResourceChangeUtilities.isProject(this.delta); // TO DO: Handle project close notifications if(!ResourceChangeUtilities.isProject(this.delta)) { if(!(this.notifier instanceof IProject)) { return false; } } return true; } //------------------------------------------------------------------------- // I N S T A N C E M E T H O D S //------------------------------------------------------------------------- @Override public String toString(){ String typeString = getNotificationTypePhrase(); String resourceType = " "; //$NON-NLS-1$ if(delta != null && delta.getResource() != null){ if(delta.getResource() instanceof IProject){ resourceType = " Project Notification: "; //$NON-NLS-1$ }else if (delta.getResource() instanceof IFile){ resourceType = " File Notification: "; //$NON-NLS-1$ }else if (delta.getResource() instanceof IFolder){ resourceType = " Folder Notification: "; //$NON-NLS-1$ } } StringBuffer toString = new StringBuffer(typeString); toString.append(resourceType); toString.append(" on "); //$NON-NLS-1$ toString.append(getNotifier() ); toString.append("\nisPreAutoBuild = " + isPreAutoBuild() ); //$NON-NLS-1$ toString.append("\nisPostAutoBuild = " + isPostAutoBuild() ); //$NON-NLS-1$ toString.append("\nisAutoBuild = " + isAutoBuild() ); //$NON-NLS-1$ toString.append("\nisRename = " + isRename() ); //$NON-NLS-1$ toString.append("\nisClose = " + isClose() ); //$NON-NLS-1$ toString.append("\nisOpen = " + isOpen() ); //$NON-NLS-1$ toString.append("\nisFile = " + isFile() ); //$NON-NLS-1$ toString.append("\nisFolder = " + isFolder() ); //$NON-NLS-1$ toString.append("\nisProject = " + isProject() ); //$NON-NLS-1$ toString.append("\nisPostChange = " + isPostChange() ); //$NON-NLS-1$ return toString.toString(); } public String getNotificationTypePhrase() { String typeString = null; final int type = this.getEventType(); switch (type) { case Notification.ADD : typeString = "Add"; //$NON-NLS-1$ break; case ModelWorkspaceNotification.CHANGE : typeString = "Change"; //$NON-NLS-1$ break; case Notification.MOVE : typeString = "Move"; //$NON-NLS-1$ break; case Notification.REMOVE : typeString = "Remove"; //$NON-NLS-1$ break; case Notification.SET : typeString = "Set"; //$NON-NLS-1$ break; case ModelWorkspaceNotification.CLOSING : typeString = "Closing"; //$NON-NLS-1$ break; case ModelWorkspaceNotification.OPEN : typeString = "Open"; //$NON-NLS-1$ break; default : typeString = "Unknown Type"; //$NON-NLS-1$ break; } return typeString; } }