/** * Removes all cached info from the Model Workspace, including all children, but does not close * this element. */ protected void removeInfo() { Object info = ModelWorkspaceManager.getModelWorkspaceManager().peekAtInfo(this); if (info != null) { ModelWorkspaceItem[] children = ((ModelWorkspaceItemInfo) info).getChildren(); for (int i = 0, size = children.length; i < size; ++i) { ModelWorkspaceItemImpl child = (ModelWorkspaceItemImpl) children[i]; child.removeInfo(); } ModelWorkspaceManager.getModelWorkspaceManager().removeInfo(this); } }
/** @see org.teiid.designer.core.workspace.ModelWorkspaceItem */ public Object getItemInfo() throws ModelWorkspaceException { // element info creation is done inside a lock on the ModelWorkspaceManager ModelWorkspaceManager manager; synchronized (manager = ModelWorkspaceManager.getModelWorkspaceManager()) { Object info = manager.getInfo(this); if (info == null) { openHierarchy(); info = manager.getInfo(this); if (info == null) { throw newNotPresentException(); } } return info; } }
/** @see Openable */ public void close() throws ModelWorkspaceException { this.closing = true; boolean wasVerbose = ModelWorkspaceManager.VERBOSE; try { Object info = ModelWorkspaceManager.getModelWorkspaceManager().peekAtInfo(this); if (info != null) { if (ModelWorkspaceManager.VERBOSE) { System.out.println( "CLOSING Element (" + Thread.currentThread() + "): " + this.toStringWithAncestors()); // $NON-NLS-1$//$NON-NLS-2$ wasVerbose = true; ModelWorkspaceManager.VERBOSE = false; } ModelWorkspaceItem[] children = ((ModelWorkspaceItemInfo) info).getChildren(); for (int i = 0, size = children.length; i < size; ++i) { ModelWorkspaceItemImpl child = (ModelWorkspaceItemImpl) children[i]; child.close(); } closing(info); ModelWorkspaceManager.getModelWorkspaceManager().removeInfo(this); if (wasVerbose) { System.out.println( "-> Package cache size = " + ModelWorkspaceManager.getModelWorkspaceManager() .cache .pkgSize()); //$NON-NLS-1$ } } } catch (ModelWorkspaceException e) { throw e; } catch (Throwable t) { ModelerCore.Util.log(t); } finally { ModelWorkspaceManager.VERBOSE = wasVerbose; this.closing = false; } }
/** @see org.teiid.designer.core.workspace.Openable */ @Override protected boolean generateInfos( final OpenableModelWorkspaceItemInfo info, final IProgressMonitor pm, final Map newElements, final IResource underlyingResource) { ModelWorkspaceManager.getModelWorkspaceManager().putInfo(this, info); // determine my children Collection<IProject> projects = DotProjectUtils.getOpenModelProjects(); for (IProject project : projects) { info.addChild(getModelProject(project)); } return true; }
/** * Opens this item and all parents that are not already open. * * @exception ModelWorkspaceException this item is not present or accessible */ protected void openHierarchy() throws ModelWorkspaceException { if (this instanceof InternalOpenable) { ((InternalOpenable) this).openWhenClosed(null); } else { Openable openableParent = getOpenableParent(); if (openableParent != null) { ModelWorkspaceItemInfo openableParentInfo = (ModelWorkspaceItemInfo) ModelWorkspaceManager.getModelWorkspaceManager() .getInfo((ModelWorkspaceItem) openableParent); if (openableParentInfo == null) { if (openableParent instanceof InternalOpenable) { ((InternalOpenable) openableParent).openWhenClosed(null); } } else { throw newNotPresentException(); } } } }
/** Debugging purposes */ public Object toStringInfo(int tab, StringBuffer buffer) { Object info = ModelWorkspaceManager.getModelWorkspaceManager().peekAtInfo(this); this.toStringInfo(tab, buffer, info); return info; }
/** * @see * org.teiid.designer.core.workspace.ModelWorkspace#removeModelResourceReloadVetoListener(org.teiid.designer.core.workspace.ModelResourceReloadVetoListener) * @since 4.2 */ @Override public void removeModelResourceReloadVetoListener(ModelResourceReloadVetoListener listener) { CoreArgCheck.isNotNull(listener); ModelWorkspaceManager.getModelWorkspaceManager() .removeModelResourceReloadVetoListener(listener); }
/* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspace#removeNotificationListener(org.teiid.designer.core.workspace.ModelWorkspaceNotificationListener) */ @Override public void removeNotificationListener(ModelWorkspaceNotificationListener listener) { CoreArgCheck.isNotNull(listener); ModelWorkspaceManager.getModelWorkspaceManager().removeNotificationListener(listener); }
/* (non-Javadoc) * @See org.teiid.designer.core.workspace.ModelWorkspace#findModelResource(org.eclipse.emf.ecore.resource.Resource) */ @Override public ModelResource findModelResource(final Resource resource) { CoreArgCheck.isNotNull(resource); return ModelWorkspaceManager.getModelWorkspaceManager().findModelResource(resource); }
public ModelWorkspaceItem getWorkspaceItem(final IPath path) { CoreArgCheck.isNotNull(path); try { // first get all the projects ModelProject[] projects = getModelProjects(); for (int i = 0; i < projects.length; i++) { ModelProject project = projects[i]; if (!project.exists()) { continue; } if (!project.isOpen()) { // See if the underlying project is open ... final IProject iproj = (IProject) project.getResource(); if (!iproj.isOpen()) { continue; } // Try to open the ModelProject, since the IProject is open ... project.open(null); if (!project.isOpen()) { continue; // couldn't open it! } } if (project.getPath().equals(path)) { return project; } // Iterate over all the path segments navigating to the child by name ModelWorkspaceItem item = project; final String[] segments = path.segments(); for (int j = 1; j < segments.length; j++) { final String segment = segments[j]; if (!item.exists()) { // Must be in the process of closing (see defect 10957) ... return null; } final IResource itemResource = item.getResource(); item = item.getChild(segment); if (item == null) { // May be a newly created IResource for which there is yet no ModelWorkspaceItem if (itemResource instanceof IContainer) { final IContainer itemContainer = (IContainer) itemResource; final IResource child = itemContainer.findMember(segment); if (child != null) { // Find the ModelWorkspaceItem ... item = ModelWorkspaceManager.getModelWorkspaceManager() .findModelWorkspaceItem(child, true); } } } if (item == null) { break; } else if (item.getPath().equals(path)) { return item; } } } } catch (ModelWorkspaceException e) { // do nothing } return null; }