Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 234447 Details for
Bug 224959
[ltk][api] make CreateFileChange API
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
patch v1
224959-make-CreateFileChange-API.patch (text/plain), 7.74 KB, created by
Kaloyan Raev
on 2013-08-15 03:23:30 EDT
(
hide
)
Description:
patch v1
Filename:
MIME Type:
Creator:
Kaloyan Raev
Created:
2013-08-15 03:23:30 EDT
Size:
7.74 KB
patch
obsolete
>diff --git a/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CreateFileChange.java b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CreateFileChange.java >new file mode 100644 >index 0000000..a5b2f02 >--- /dev/null >+++ b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/resource/CreateFileChange.java >@@ -0,0 +1,164 @@ >+/******************************************************************************* >+ * Copyright (c) 2013 Zend Technologies Ltd and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Zend Technologies Ltd - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.ltk.core.refactoring.resource; >+ >+import java.io.IOException; >+import java.io.InputStream; >+import java.net.URI; >+ >+import org.eclipse.core.filesystem.EFS; >+import org.eclipse.core.filesystem.IFileInfo; >+ >+import org.eclipse.core.runtime.Assert; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.core.runtime.Status; >+import org.eclipse.core.runtime.SubProgressMonitor; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.ResourcesPlugin; >+ >+import org.eclipse.ltk.core.refactoring.Change; >+import org.eclipse.ltk.core.refactoring.CompositeChange; >+import org.eclipse.ltk.core.refactoring.RefactoringCore; >+import org.eclipse.ltk.core.refactoring.RefactoringStatus; >+import org.eclipse.ltk.internal.core.refactoring.BasicElementLabels; >+import org.eclipse.ltk.internal.core.refactoring.Messages; >+import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages; >+ >+/** >+ * {@link Change} that creates a file. >+ * >+ * @since 3.7 >+ */ >+public class CreateFileChange extends ResourceChange { >+ >+ private IPath fPath; >+ >+ private InputStream fInputStream; >+ >+ private boolean fOverwrite; >+ >+ /** >+ * Create new file. >+ * >+ * <p> >+ * If there is an existing file on the specified path then it will be replaced with the new >+ * file. Calling this constructor is the same as calling >+ * <code>CreateFileChange(path, inputStream, true)</code>. >+ * </p> >+ * >+ * @param path path where the new file will be created >+ * @param inputStream content for the new file >+ */ >+ public CreateFileChange(IPath path, InputStream inputStream) { >+ this(path, inputStream, true); >+ } >+ >+ /** >+ * Create new file. >+ * >+ * @param path path where the new file will be created >+ * @param inputStream content for the new file >+ * @param overwrite whether an existing file on the specified path should be replaced, or the >+ * change should fail >+ */ >+ >+ public CreateFileChange(IPath path, InputStream inputStream, boolean overwrite) { >+ Assert.isNotNull(path, "path"); //$NON-NLS-1$ >+ Assert.isNotNull(inputStream, "inputStream"); //$NON-NLS-1$ >+ fPath= path; >+ fInputStream= inputStream; >+ fOverwrite= overwrite; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.ltk.core.refactoring.resource.ResourceChange#getModifiedResource() >+ */ >+ protected IResource getModifiedResource() { >+ return ResourcesPlugin.getWorkspace().getRoot().getFile(fPath); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.ltk.core.refactoring.Change#getName() >+ */ >+ public String getName() { >+ String message= (getModifiedResource().exists()) ? RefactoringCoreMessages.CreateFileChange_update_file >+ : RefactoringCoreMessages.CreateFileChange_create_file; >+ return Messages.format(message, BasicElementLabels.getPathLabel(fPath, false)); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * @see org.eclipse.ltk.core.refactoring.resource.ResourceChange#isValid(org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException { >+ RefactoringStatus result= new RefactoringStatus(); >+ IFile file= (IFile)getModifiedResource(); >+ >+ URI location= file.getLocationURI(); >+ if (location == null) { >+ result.addFatalError(Messages.format( >+ RefactoringCoreMessages.CreateFileChange_error_unknownLocation, >+ BasicElementLabels.getPathLabel(file.getFullPath(), false))); >+ return result; >+ } >+ >+ if (!fOverwrite) { >+ IFileInfo jFile= EFS.getStore(location).fetchInfo(); >+ if (jFile.exists()) { >+ result.addFatalError(Messages.format( >+ RefactoringCoreMessages.CreateFileChange_error_exists, >+ file.getFullPath().toString())); >+ return result; >+ } >+ } >+ >+ return result; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.ltk.core.refactoring.Change#perform(org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public Change perform(IProgressMonitor pm) throws CoreException { >+ if (pm == null) >+ pm= new NullProgressMonitor(); >+ >+ try { >+ pm.beginTask(RefactoringCoreMessages.CreateFileChange_creating_resource, 2); >+ >+ IFile file= (IFile)getModifiedResource(); >+ if (file.exists()) { >+ CompositeChange composite= new CompositeChange(getName()); >+ composite.add(new DeleteResourceChange(fPath, true)); >+ composite.add(new CreateFileChange(fPath, fInputStream)); >+ return composite.perform(new SubProgressMonitor(pm, 1)); >+ } else { >+ file.create(fInputStream, false, new SubProgressMonitor(pm, 1)); >+ return new DeleteResourceChange(file.getFullPath(), true); >+ } >+ } finally { >+ try { >+ fInputStream.close(); >+ } catch (IOException e) { >+ throw new CoreException(new Status(IStatus.ERROR, >+ RefactoringCore.ID_PLUGIN, e.getMessage(), e)); >+ } finally { >+ pm.done(); >+ } >+ } >+ } >+ >+} >diff --git a/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java >index d733c3b..f218ae2 100644 >--- a/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java >+++ b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.java >@@ -266,6 +266,16 @@ > > public static String ValidateEditChecker_failed; > >+ public static String CreateFileChange_creating_resource; >+ >+ public static String CreateFileChange_create_file; >+ >+ public static String CreateFileChange_update_file; >+ >+ public static String CreateFileChange_error_exists; >+ >+ public static String CreateFileChange_error_unknownLocation; >+ > static { > NLS.initializeMessages(BUNDLE_NAME, RefactoringCoreMessages.class); > } >diff --git a/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties >index 7be94b0..48c1357 100644 >--- a/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties >+++ b/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties >@@ -156,3 +156,9 @@ > MoveResourceProcessor_error_destination_not_exists=Destination does not exist > MoveResourceProcessor_error_invalid_destination=Invalid parent > MoveResourceProcessor_processor_name=Move Resources >+ >+CreateFileChange_creating_resource=Creating file... >+CreateFileChange_create_file=Create file ''{0}'' >+CreateFileChange_update_file=Update file ''{0}'' >+CreateFileChange_error_exists=File ''{0}'' already exists >+CreateFileChange_error_unknownLocation=The location for file ''{0}'' is unknown
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 224959
:
234447
|
234481
|
234533