@Override void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data) { IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject); SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject); String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs)); IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder(); IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder(); String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME); String seamLocalInterfaceName = data.getValue(ISeamParameter.SEAM_LOCAL_INTERFACE_NAME); String seamBeanName = data.getValue(ISeamParameter.SEAM_BEAN_NAME); // // "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/ // ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/ // ${" + ISeamParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // //$NON-NLS-4$ IResource beanJava = seamProjectSrcActionFolder.findMember( sessionBeanPackagePath + "/" + seamBeanName + ".java"); assertResourceIsCreatedAndHasNoProblems( beanJava, seamProjectSrcActionFolder.toString() + "/" + sessionBeanPackagePath + "/" + seamBeanName + ".java"); // // "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/ // ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/ // ${" + ISeamParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ // //$NON-NLS-3$ //$NON-NLS-4$ IResource localInterfaceJava = seamProjectSrcActionFolder.findMember( sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java"); assertResourceIsCreatedAndHasNoProblems( localInterfaceJava, seamProjectSrcActionFolder.toString() + "/" + sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java"); // // "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/ // ${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(seamPageName + ".xhtml"); assertResourceIsCreatedAndHasNoProblems( seamPageNameXhtml, seamProjectWebContentFolder.toString() + "/" + seamPageName + ".xhtml"); }
/** * Possible failures: * * <ul> * <li>NO_ELEMENTS_TO_PROCESS - the root supplied to the operation is <code>null</code>. * <li>INVALID_NAME - the name provided to the operation is <code>null</code> or is not a valid * script folder name. * <li>READ_ONLY - the root provided to this operation is read only. * <li>NAME_COLLISION - there is a pre-existing resource (file) with the same name as a folder * in the script folder's hierarchy. * <li>ELEMENT_NOT_PRESENT - the underlying resource for the root is missing * </ul> * * @see IScriptModelStatus * @see ScriptConventions */ @Override public IModelStatus verify() { if (getParentElement() == null) { return new ModelStatus(IModelStatusConstants.NO_ELEMENTS_TO_PROCESS); } IPath packageName = this.pkgName == null ? null : this.pkgName.append("."); // $NON-NLS-1$ String packageNameValue = null; if (packageName != null) { packageNameValue = packageName.toOSString(); } if (this.pkgName == null || (this.pkgName.segmentCount() > 0 && !Util.isValidFolderNameForPackage( (IContainer) getParentElement().getResource(), packageName.toString()))) { return new ModelStatus(IModelStatusConstants.INVALID_NAME, packageNameValue); } IProjectFragment root = (IProjectFragment) getParentElement(); if (root.isReadOnly()) { return new ModelStatus(IModelStatusConstants.READ_ONLY, root); } IContainer parentFolder = (IContainer) root.getResource(); int i; for (i = 0; i < this.pkgName.segmentCount(); i++) { IResource subFolder = parentFolder.findMember(this.pkgName.segment(i)); if (subFolder != null) { if (subFolder.getType() != IResource.FOLDER) { return new ModelStatus( IModelStatusConstants.NAME_COLLISION, Messages.bind(Messages.status_nameCollision, subFolder.getFullPath().toString())); } parentFolder = (IContainer) subFolder; } } return ModelStatus.VERIFIED_OK; }
public Object getSourceElement(IStackFrame stackFrame) { if (stackFrame instanceof ScriptStackFrame) { ScriptStackFrame sf = (ScriptStackFrame) stackFrame; URI uri = sf.getFileName(); String pathname = uri.getPath(); if (Platform.getOS().equals(Platform.OS_WIN32)) { pathname = pathname.substring(1); } File file = new File(pathname); IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IContainer container = root.getContainerForLocation(new Path(file.getParent())); if (container != null) { IResource resource = container.findMember(file.getName()); if (resource instanceof IFile) { return (IFile) resource; } } else { return file; } } return null; }
public static IPath[] chooseExclusionPattern( Shell shell, IContainer currentSourceFolder, String title, String message, IPath initialPath, boolean multiSelection) { Class[] acceptedClasses = new Class[] {IFolder.class, IFile.class}; ISelectionStatusValidator validator = new TypedElementSelectionValidator(acceptedClasses, multiSelection); ViewerFilter filter = new TypedViewerFilter(acceptedClasses); ILabelProvider lp = new WorkbenchLabelProvider(); ITreeContentProvider cp = new WorkbenchContentProvider(); IResource initialElement = null; if (initialPath != null) { IContainer curr = currentSourceFolder; int nSegments = initialPath.segmentCount(); for (int i = 0; i < nSegments; i++) { IResource elem = curr.findMember(initialPath.segment(i)); if (elem != null) { initialElement = elem; } if (elem instanceof IContainer) { curr = (IContainer) elem; } else { break; } } } ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(shell, lp, cp); dialog.setTitle(title); dialog.setValidator(validator); dialog.setMessage(message); dialog.addFilter(filter); dialog.setInput(currentSourceFolder); dialog.setInitialSelection(initialElement); dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object[] objects = dialog.getResult(); int existingSegments = currentSourceFolder.getFullPath().segmentCount(); IPath[] resArr = new IPath[objects.length]; for (int i = 0; i < objects.length; i++) { IResource currRes = (IResource) objects[i]; IPath path = currRes.getFullPath().removeFirstSegments(existingSegments).makeRelative(); if (currRes instanceof IContainer) { path = path.addTrailingSeparator(); } resArr[i] = path; } return resArr; } return null; }
protected void runPubJob(IContainer container) { if (container.findMember(DartCore.PUBSPEC_FILE_NAME) != null) { RunPubJob runPubJob = new RunPubJob(container, command, false); runPubJob.schedule(); } else { MessageDialog.openError( getShell(), ActionMessages.RunPubAction_fail, ActionMessages.RunPubAction_fileNotFound); } }
private IFile getFileForPathImpl(IPath path, IProject project) { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); if (path.isAbsolute()) { IFile c = root.getFileForLocation(path); return c; } if (project != null && project.exists()) { ICProject cproject = CoreModel.getDefault().create(project); if (cproject != null) { try { ISourceRoot[] roots = cproject.getAllSourceRoots(); for (ISourceRoot sourceRoot : roots) { IResource r = sourceRoot.getResource(); if (r instanceof IContainer) { IContainer parent = (IContainer) r; IResource res = parent.findMember(path); if (res != null && res.exists() && res instanceof IFile) { IFile file = (IFile) res; return file; } } } IOutputEntry entries[] = cproject.getOutputEntries(); for (IOutputEntry pathEntry : entries) { IPath p = pathEntry.getPath(); IResource r = root.findMember(p); if (r instanceof IContainer) { IContainer parent = (IContainer) r; IResource res = parent.findMember(path); if (res != null && res.exists() && res instanceof IFile) { IFile file = (IFile) res; return file; } } } } catch (CModelException _) { Activator.getDefault().getLog().log(_.getStatus()); } } } return null; }
private void map(final RepositoryMapping m) { final IResource r; final File git; final IResource dotGit; IContainer c = null; m.clear(); r = getProject().findMember(m.getContainerPath()); if (r instanceof IContainer) { c = (IContainer) r; } else if (r != null) { c = Utils.getAdapter(r, IContainer.class); } if (c == null) { logAndUnmapGoneMappedResource(m); return; } m.setContainer(c); IPath absolutePath = m.getGitDirAbsolutePath(); if (absolutePath == null) { logAndUnmapGoneMappedResource(m); return; } git = absolutePath.toFile(); if (!git.isDirectory() || !new File(git, "config").isFile()) { // $NON-NLS-1$ logAndUnmapGoneMappedResource(m); return; } try { m.setRepository(Activator.getDefault().getRepositoryCache().lookupRepository(git)); } catch (IOException ioe) { logAndUnmapGoneMappedResource(m); return; } m.fireRepositoryChanged(); trace( "map " //$NON-NLS-1$ + c + " -> " //$NON-NLS-1$ + m.getRepository()); try { c.setSessionProperty(MAPPING_KEY, m); } catch (CoreException err) { Activator.logError(CoreText.GitProjectData_failedToCacheRepoMapping, err); } dotGit = c.findMember(Constants.DOT_GIT); if (dotGit != null && dotGit.getLocation().toFile().equals(git)) { protect(dotGit); } }
/* * Get the resources for the given resource names */ public IResource[] getResources(IContainer container, String[] hierarchy) throws CoreException { IResource[] resources = new IResource[hierarchy.length]; for (int i = 0; i < resources.length; i++) { resources[i] = container.findMember(hierarchy[i]); if (resources[i] == null) { resources[i] = buildResources(container, new String[] {hierarchy[i]})[0]; } } return resources; }
// MyDefect : Refactored private void reOpenEditor(boolean wasOpen, String newName, IWorkbenchPage iwbp) throws PartInitException { // reopen if needed (if the rename failed, this will fail silently): if (wasOpen) { IContainer folder = resSelectedResource.getParent(); IResource newResource = folder.findMember(newName); if (newResource != null) { IDE.openEditor(iwbp, (IFile) newResource); } } }
private void savePubspecFile(IContainer container) { IResource resource = container.findMember(DartCore.PUBSPEC_FILE_NAME); if (resource != null) { IEditorPart editor = EditorUtility.isOpenInEditor(resource); if (editor != null && editor.isDirty()) { if (MessageDialog.openQuestion( getShell(), NLS.bind(ActionMessages.RunPubAction_commandText, command), ActionMessages.RunPubAction_savePubspecMessage)) { editor.doSave(new NullProgressMonitor()); } } } }
// Assert that the two containers have equal contents protected void assertEquals(IContainer container1, IContainer container2) throws CoreException { assertEquals(container1.getName(), container2.getName()); List members1 = new ArrayList(); members1.addAll(Arrays.asList(container1.members())); List members2 = new ArrayList(); members2.addAll(Arrays.asList(container2.members())); assertTrue(members1.size() == members2.size()); for (int i = 0; i < members1.size(); i++) { IResource member1 = (IResource) members1.get(i); IResource member2 = container2.findMember(member1.getName()); assertNotNull(member2); assertEquals(member1, member2); } }
private static IResource findMember(IContainer container, String path) { // even though the filesystem is case-insensitive on Windows, Eclipse's Resource // APIs only find files in a case-sensitive manner. since Robot does not do // this at runtime, we'll need to lessen the restriction by doing a more // expensive segment-by-segment comparison here if (Platform.OS_WIN32.equals(Platform.getOS())) { List<String> segments = getPathSegments(path); while (!segments.isEmpty()) { String nextSegment = segments.remove(0); if ("..".equals(nextSegment)) { container = container.getParent(); } else if (".".equals(nextSegment)) { continue; } else { try { IResource[] members = container.members(); for (IResource member : members) { if (nextSegment.equalsIgnoreCase(member.getName())) { if (member instanceof IContainer) { // found the next folder in the path, continue container = (IContainer) member; break; } else if (segments.isEmpty()) { // leaf node, this is the file we're looking for return member; } } } } catch (CoreException e) { // do nothing, we'll just return a null for this path below } } } // error condition - for a malformed or non-existent path we return nothing return null; } else { // non-windows OS - simple Eclipse API works well return container.findMember(path); } }
/** * Helper method - returns the targeted item (IResource if internal or java.io.File if external), * or null if unbound Internal items must be referred to using container relative paths. */ public static Object getTarget(IContainer container, IPath path, boolean checkResourceExistence) { if (path == null) return null; // lookup - inside the container if (path.getDevice() == null) { // container relative paths should not contain a device // (see http://dev.eclipse.org/bugs/show_bug.cgi?id=18684) // (case of a workspace rooted at d:\ ) IResource resource = container.findMember(path); if (resource != null) { if (!checkResourceExistence || resource.exists()) return resource; return null; } } // if path is relative, it cannot be an external path // (see http://dev.eclipse.org/bugs/show_bug.cgi?id=22517) if (!path.isAbsolute()) return null; // lookup - outside the container File externalFile = new File(path.toOSString()); if (!checkResourceExistence) { return externalFile; } else if (existingExternalFiles.contains(externalFile)) { return externalFile; } else { if (ModelWorkspaceManager.ZIP_ACCESS_VERBOSE) { System.out.println( "(" + Thread.currentThread() + ") [ModelWorkspaceImpl.getTarget(...)] Checking existence of " + path.toString()); // $NON-NLS-1$ //$NON-NLS-2$ } if (externalFile.exists()) { // cache external file existingExternalFiles.add(externalFile); return externalFile; } } return null; }
/** * Check if the file exists within the current project. It will first check the root of the * project and then the sources. If the file cannot be found in either, return false. An empty * file name would immediately return false. * * @return True if the file exists. */ public static boolean fileExistsInSources(IFile original, String fileName) { if (fileName.trim().isEmpty()) { return false; } IContainer container = original.getParent(); IResource resourceToOpen = container.findMember(fileName); IFile file = null; if (resourceToOpen == null) { IResource sourcesFolder = container.getProject().findMember("SOURCES"); // $NON-NLS-1$ file = container.getFile(new Path(fileName)); if (sourcesFolder != null) { file = ((IFolder) sourcesFolder).getFile(new Path(fileName)); } if (!file.exists()) { return false; } } return true; }
/** * Hide our private parts from the navigators other browsers. * * @throws CoreException */ public void markTeamPrivateResources() throws CoreException { for (final Object rmObj : mappings) { final RepositoryMapping rm = (RepositoryMapping) rmObj; final IContainer c = rm.getContainer(); if (c == null) continue; // Not fully mapped yet? final IResource dotGit = c.findMember(Constants.DOT_GIT); if (dotGit != null) { try { final Repository r = rm.getRepository(); final File dotGitDir = dotGit.getLocation().toFile().getCanonicalFile(); if (dotGitDir.equals(r.getDirectory())) { trace("teamPrivate " + dotGit); // $NON-NLS-1$ dotGit.setTeamPrivateMember(true); } } catch (IOException err) { throw new CoreException(Activator.error(CoreText.Error_CanonicalFile, err)); } } } }
/** * DOC smallet Comment method "afterImportAs". * * @param newName * @param technicalName * @throws InvocationTargetException */ private static Project afterImportAs(String newName, String technicalName) throws InvocationTargetException { // Rename in ".project" and "talendProject" or "talend.project" // TODO SML Optimize final IWorkspace workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace(); IContainer containers = (IProject) workspace.getRoot().findMember(new Path(technicalName)); IResource file2 = containers.findMember(IProjectDescription.DESCRIPTION_FILE_NAME); try { FilesUtils.replaceInFile( "<name>.*</name>", file2.getLocation().toOSString(), "<name>" + technicalName + "</name>"); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // TDI-19269 final IProject project = workspace.getRoot().getProject(technicalName); XmiResourceManager xmiManager = new XmiResourceManager(); try { final Project loadProject = xmiManager.loadProject(project); loadProject.setTechnicalLabel(technicalName); loadProject.setLabel(newName); loadProject.setLocal(true); loadProject.setId(0); loadProject.setUrl(null); loadProject.setCreationDate(null); loadProject.setDescription(""); loadProject.setType(null); // ADD xqliu 2012-03-12 TDQ-4771 clear the list of Folders if (loadProject.getFolders() != null) { loadProject.getFolders().clear(); } // ~ TDQ-4771 xmiManager.saveResource(loadProject.eResource()); return loadProject; } catch (PersistenceException e) { // } } catch (IOException e) { throw new InvocationTargetException(e); } return null; }
/** * Creates any destination package fragment(s) which do not exists yet. Return true if a read-only * package fragment has been found among package fragments, false otherwise */ private boolean createNeededPackageFragments( IContainer sourceFolder, PackageFragmentRoot root, String[] newFragName, boolean moveFolder) throws JavaModelException { boolean containsReadOnlyPackageFragment = false; IContainer parentFolder = (IContainer) root.resource(); JavaElementDelta projectDelta = null; String[] sideEffectPackageName = null; char[][] inclusionPatterns = root.fullInclusionPatternChars(); char[][] exclusionPatterns = root.fullExclusionPatternChars(); for (int i = 0; i < newFragName.length; i++) { String subFolderName = newFragName[i]; sideEffectPackageName = Util.arrayConcat(sideEffectPackageName, subFolderName); IResource subFolder = parentFolder.findMember(subFolderName); if (subFolder == null) { // create deepest folder only if not a move (folder will be moved in // processPackageFragmentResource) if (!(moveFolder && i == newFragName.length - 1)) { createFolder(parentFolder, subFolderName, this.force); } parentFolder = parentFolder.getFolder(new Path(subFolderName)); sourceFolder = sourceFolder.getFolder(new Path(subFolderName)); if (Util.isReadOnly(sourceFolder)) { containsReadOnlyPackageFragment = true; } IPackageFragment sideEffectPackage = root.getPackageFragment(sideEffectPackageName); if (i < newFragName.length - 1 // all but the last one are side effect packages && !Util.isExcluded(parentFolder, inclusionPatterns, exclusionPatterns)) { if (projectDelta == null) { projectDelta = getDeltaFor(root.getJavaProject()); } projectDelta.added(sideEffectPackage); } this.createdElements.add(sideEffectPackage); } else { parentFolder = (IContainer) subFolder; } } return containsReadOnlyPackageFragment; }
/** * Execute the operation - creates the new script folder and any side effect folders. * * @exception ModelException if the operation is unable to complete */ @Override protected void executeOperation() throws ModelException { ModelElementDelta delta = null; IProjectFragment root = (IProjectFragment) getParentElement(); beginTask(Messages.operation_createScriptFolderProgress, this.pkgName.segmentCount()); IContainer parentFolder = (IContainer) root.getResource(); IPath sideEffectPackageName = Path.EMPTY; ArrayList<IScriptFolder> results = new ArrayList<IScriptFolder>(this.pkgName.segmentCount()); int i; for (i = 0; i < this.pkgName.segmentCount(); i++) { String subFolderName = this.pkgName.segment(i); sideEffectPackageName = sideEffectPackageName.append(subFolderName); IResource subFolder = parentFolder.findMember(subFolderName); if (subFolder == null) { createFolder(parentFolder, subFolderName, force); parentFolder = parentFolder.getFolder(new Path(subFolderName)); IScriptFolder addedFrag = root.getScriptFolder(sideEffectPackageName); if (!Util.isExcluded(parentFolder, root)) { if (delta == null) { delta = newModelElementDelta(); } delta.added(addedFrag); } results.add(addedFrag); } else { parentFolder = (IContainer) subFolder; } worked(1); } if (results.size() > 0) { this.resultElements = new IModelElement[results.size()]; results.toArray(this.resultElements); if (delta != null) { addDelta(delta); } } done(); }
/** @see IModelElement#getUnderlyingResource() */ public IResource getUnderlyingResource() throws ModelException { IResource rootResource = this.parent.getUnderlyingResource(); if (rootResource == null) { // jar package fragment root that has no associated resource return null; } // the underlying resource may be a folder or a project (in the case // that the project folder // is atually the package fragment root) if (rootResource.getType() == IResource.FOLDER || rootResource.getType() == IResource.PROJECT) { IContainer folder = (IContainer) rootResource; String[] segs = this.path.segments(); for (int i = 0; i < segs.length; ++i) { IResource child = folder.findMember(segs[i]); if (child == null || child.getType() != IResource.FOLDER) { throw newNotPresentException(); } folder = (IFolder) child; } return folder; } else { return rootResource; } }
private boolean validateClass(String className) { String errorMessage = null; boolean valid = true; if (className.length() == 0) { errorMessage = MESSAGE_CLASS_SPECIFIED; valid = false; } if (className.replace('\\', '/').indexOf('/', 1) > 0) { errorMessage = MESSAGE_CLASS_VALID; valid = false; } int dotLoc = className.indexOf('.'); if (dotLoc != -1) { errorMessage = MESSAGE_CLASS_DOT; valid = false; } if (container.findMember(className + "." + getExtension()) != null) { errorMessage = MESSAGE_CLASS_EXISTS; valid = false; } if (classDirty) setErrorMessage(errorMessage); return valid; }
@Override void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data) { IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject); SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject); String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs)); String entityBeanPackagePath = getPackagePath(getEntityBeanPackageName(seamFacetPrefs)); IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder(); IContainer seamProjectSrcModelFolder = seamPrjSet.getModelFolder(); IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder(); String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME); String seamMasterPageName = data.getValue(ISeamParameter.SEAM_MASTER_PAGE_NAME); String seamEntityClassName = data.getValue(ISeamParameter.SEAM_ENTITY_CLASS_NAME); // // "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/ // ${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(seamPageName + ".xhtml"); assertResourceIsCreatedAndHasNoProblems( seamPageNameXhtml, seamProjectWebContentFolder.toString() + "/" + seamPageName + ".xhtml"); // // "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/ // ${" + ISeamParameter.SEAM_MASTER_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ // //$NON-NLS-3$ IResource seamMasterPageNameXhtml = seamProjectWebContentFolder.findMember(seamMasterPageName + ".xhtml"); assertResourceIsCreatedAndHasNoProblems( seamMasterPageNameXhtml, seamProjectWebContentFolder.toString() + "/" + seamMasterPageName + ".xhtml"); // // "${" + ISeamParameter.SEAM_PROJECT_SRC_MODEL + "}/ // ${" + ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_PATH + "}/ // ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ // //$NON-NLS-3$ //$NON-NLS-4$ IResource entityClassJava = seamProjectSrcModelFolder.findMember( entityBeanPackagePath + "/" + seamEntityClassName + ".java"); assertResourceIsCreatedAndHasNoProblems( entityClassJava, seamProjectSrcModelFolder.toString() + "/" + entityBeanPackagePath + "/" + seamEntityClassName + ".java"); // // "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/ // ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/ // ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}Home.java", //$NON-NLS-1$ //$NON-NLS-2$ // //$NON-NLS-3$ //$NON-NLS-4$ IResource entityHomeJava = seamProjectSrcActionFolder.findMember( sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java"); assertResourceIsCreatedAndHasNoProblems( entityHomeJava, seamProjectSrcActionFolder.toString() + "/" + sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java"); // // "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/ // ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/ // ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}List.java", //$NON-NLS-1$ //$NON-NLS-2$ // //$NON-NLS-3$ //$NON-NLS-4$ IResource entityListJava = seamProjectSrcActionFolder.findMember( sessionBeanPackagePath + "/" + seamEntityClassName + "List.java"); assertResourceIsCreatedAndHasNoProblems( entityListJava, seamProjectSrcActionFolder.toString() + "/" + sessionBeanPackagePath + "/" + seamEntityClassName + "List.java"); }
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; }
/** * Updates completions for the BibTeX -data * * @param bibNames Names of the BibTeX -files that the document uses * @param resource The resource of the document */ private void updateBibs(String[] bibNames, boolean biblatexMode, IResource resource) { IProject project = getCurrentProject(); if (project == null) return; if (!biblatexMode) { for (int i = 0; i < bibNames.length; i++) { if (!bibNames[i].endsWith(".bib")) { bibNames[i] += ".bib"; } } } if (bibContainer.checkFreshness(bibNames)) { return; } TexlipseProperties.setSessionProperty(project, TexlipseProperties.BIBFILE_PROPERTY, bibNames); List<String> newBibs = bibContainer.updateBibHash(bibNames); IPath path = resource.getFullPath().removeFirstSegments(1).removeLastSegments(1); if (!path.isEmpty()) path = path.addTrailingSeparator(); KpsewhichRunner filesearch = new KpsewhichRunner(); for (Iterator<String> iter = newBibs.iterator(); iter.hasNext(); ) { String name = iter.next(); try { String filepath = ""; // First try local search IResource res = project.findMember(path + name); // Try searching relative to main file if (res == null) { IContainer sourceDir = TexlipseProperties.getProjectSourceDir(project); res = sourceDir.findMember(name); } if (res != null) { filepath = res.getLocation().toOSString(); } if (res == null) { // Try Kpsewhich filepath = filesearch.getFile(resource, name, "bibtex"); if (filepath.length() > 0 && !(new File(filepath).isAbsolute())) { // filepath is a local path res = project.findMember(path + filepath); if (res != null) { filepath = res.getLocation().toOSString(); } else { filepath = ""; } } else if (filepath.length() > 0) { // Create a link to resource IPath p = new Path(filepath); if (name.indexOf('/') >= 0) { // Remove path from name name = name.substring(name.lastIndexOf('/') + 1); } IFile f = project.getFile(path + name); if (f != null && !f.exists()) { f.createLink(p, IResource.NONE, null); } } } if (filepath.length() > 0) { BibParser parser = new BibParser(filepath); try { List<ReferenceEntry> bibEntriesList = parser.getEntries(); if (bibEntriesList != null && bibEntriesList.size() > 0) { bibContainer.addRefSource(path + name, bibEntriesList); } else if (bibEntriesList == null) { MarkerHandler marker = MarkerHandler.getInstance(); marker.addFatalError( editor, "The BibTeX file " + filepath + " contains fatal errors, parsing aborted."); continue; } } catch (IOException ioe) { TexlipsePlugin.log("Can't read BibTeX file " + filepath, ioe); } } else { MarkerHandler marker = MarkerHandler.getInstance(); marker.addFatalError(editor, "The BibTeX file " + name + " not found."); } } catch (CoreException ce) { TexlipsePlugin.log("Can't run Kpathsea", ce); } } bibContainer.organize(); }