@Override public void appendContents(InputStream content, int updateFlags, IProgressMonitor monitor) throws CoreException { monitor = Policy.monitorFor(monitor); try { String message = NLS.bind(Messages.resources_settingContents, getFullPath()); monitor.beginTask(message, Policy.totalWork); Assert.isNotNull(content, "Content cannot be null."); // $NON-NLS-1$ if (workspace.shouldValidate) workspace.validateSave(this); final ISchedulingRule rule = workspace.getRuleFactory().modifyRule(this); try { workspace.prepareOperation(rule, monitor); ResourceInfo info = getResourceInfo(false, false); checkAccessible(getFlags(info)); workspace.beginOperation(true); IFileInfo fileInfo = getStore().fetchInfo(); internalSetContents( content, fileInfo, updateFlags, true, Policy.subMonitorFor(monitor, Policy.opWork)); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); } } finally { monitor.done(); FileUtil.safeClose(content); } }
/** * Checks whether the given move included is vaild * * @param destination * @return a staus indicating whether the included is valid or not */ public RefactoringStatus verifyDestination(IResource destination) { RefactoringStatus status = new RefactoringStatus(); Assert.isNotNull(destination); if (!destination.exists() || destination.isPhantom()) return RefactoringStatus.createFatalErrorStatus( PhpRefactoringCoreMessages.getString("MoveDelegate.2")); // $NON-NLS-1$ if (!destination.isAccessible()) return RefactoringStatus.createFatalErrorStatus( PhpRefactoringCoreMessages.getString("MoveDelegate.3")); // $NON-NLS-1$ Assert.isTrue(destination.getType() != IResource.ROOT); IResource[] sourceResources = fProcessor.getSourceSelection(); for (IResource element : sourceResources) { if (destination.equals(element.getParent())) return RefactoringStatus.createFatalErrorStatus( PhpRefactoringCoreMessages.getString("MoveDelegate.4")); // $NON-NLS-1$ if (destination.equals(element)) { return RefactoringStatus.createFatalErrorStatus( PhpRefactoringCoreMessages.getString("MoveDelegate.5")); // $NON-NLS-1$ } } return status; }