Author: koen.aers(a)jboss.com
Date: 2011-01-03 15:19:10 -0500 (Mon, 03 Jan 2011)
New Revision: 27851
Modified:
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/MoveProcessProcessor.java
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/RenameProcessProcessor.java
Log:
JBIDE-7794
Modified:
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/MoveProcessProcessor.java
===================================================================
---
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/MoveProcessProcessor.java 2011-01-03
19:07:36 UTC (rev 27850)
+++
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/MoveProcessProcessor.java 2011-01-03
20:19:10 UTC (rev 27851)
@@ -31,7 +31,7 @@
private IContainer destination;
public MoveProcessProcessor(IResource resource) {
- IResource jpdlResource = null, gpdResource = null;
+ IResource jpdlResource = null, gpdResource = null, jpgResource = null;
if (resource == null || !resource.exists()) {
throw new IllegalArgumentException("resource must not be null and must
exist");
}
@@ -41,9 +41,14 @@
} else if (isGpdFile(resource)) {
jpdlResource = getJpdlResource(resource);
gpdResource = resource;
- }
+ }
if (jpdlResource != null && jpdlResource.exists() && gpdResource !=
null && gpdResource.exists()) {
- resourcesToMove = new IResource[] { jpdlResource, gpdResource };
+ jpgResource = getJpgResource(jpdlResource);
+ if (jpgResource != null && jpgResource.exists()) {
+ resourcesToMove = new IResource[] { jpdlResource, gpdResource, jpgResource };
+ } else {
+ resourcesToMove = new IResource[] { jpdlResource, gpdResource };
+ }
} else {
throw new IllegalArgumentException("both jpdlFile and gpdFile must not be null
and must exist");
}
@@ -69,6 +74,13 @@
return name.startsWith(".") && name.endsWith(".gpd.xml");
}
+ private IResource getJpgResource(IResource resource) {
+ if (!resource.getName().endsWith(".jpdl.xml")) {
+ throw new IllegalArgumentException("jpg resource can only be obtained for a jpdl
file");
+ }
+ return resource.getParent().getFile(new Path(getProcessName(resource) +
".jpg"));
+ }
+
private IResource getGpdResource(IResource resource) {
if (!resource.getName().endsWith(".jpdl.xml")) {
throw new IllegalArgumentException("gpd resource can only be obtained for a jpdl
file");
@@ -111,13 +123,35 @@
MultiStatus multi = new MultiStatus(
ResourcesPlugin.PI_RESOURCES,
IResourceStatus.OUT_OF_SYNC_LOCAL,
- "both resources are out of sync with file system",
+ "the resources are out of sync with file system",
null);
multi.add(result);
multi.add(temp);
result = multi;
}
}
+ if (resourcesToMove.length == 3 &&
!resourcesToMove[2].isSynchronized(IResource.DEPTH_INFINITE)) {
+ IStatus temp = new Status (
+ IStatus.ERROR,
+ ResourcesPlugin.PI_RESOURCES,
+ IResourceStatus.OUT_OF_SYNC_LOCAL,
+ "Resource " + resourcesToMove[2].getName() + "is out of sync with
file system",
+ null);
+ if (result == null) {
+ result = temp;
+ } else if (result instanceof MultiStatus) {
+ ((MultiStatus)result).add(temp);
+ } else {
+ MultiStatus multi = new MultiStatus(
+ ResourcesPlugin.PI_RESOURCES,
+ IResourceStatus.OUT_OF_SYNC_LOCAL,
+ "the resources are out of sync with file system",
+ null);
+ multi.add(result);
+ multi.add(temp);
+ result = multi;
+ }
+ }
if (result == null) {
result = Status.OK_STATUS;
}
Modified:
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/RenameProcessProcessor.java
===================================================================
---
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/RenameProcessProcessor.java 2011-01-03
19:07:36 UTC (rev 27850)
+++
trunk/jbpm/plugins/org.jbpm.gd.jpdl/src/org/jbpm/gd/jpdl/refactoring/RenameProcessProcessor.java 2011-01-03
20:19:10 UTC (rev 27851)
@@ -27,6 +27,7 @@
private IResource jpdlResource;
private IResource gpdResource;
+ private IResource jpgResource;
private String newProcessName;
private boolean updateReferences;
@@ -45,6 +46,8 @@
if (jpdlResource != null && jpdlResource.exists() && gpdResource !=
null && gpdResource.exists()) {
+ jpgResource = getJpgResource(jpdlResource);
+
updateReferences= true;
String newName = jpdlResource.getName();
@@ -93,6 +96,10 @@
return resource.getParent().getFile(new Path(getProcessName(resource) +
".jpdl.xml"));
}
+ private IResource getJpgResource(IResource resource) {
+ return resource.getParent().getFile(new Path(getProcessName(resource) +
".jpg"));
+ }
+
public String getNewProcessName() {
return newProcessName;
}
@@ -133,13 +140,35 @@
MultiStatus multi = new MultiStatus(
ResourcesPlugin.PI_RESOURCES,
IResourceStatus.OUT_OF_SYNC_LOCAL,
- "both resources are out of sync with file system",
+ "the resources are out of sync with file system",
null);
multi.add(result);
multi.add(temp);
result = multi;
}
}
+ if (!jpgResource.isSynchronized(IResource.DEPTH_INFINITE)) {
+ IStatus temp = new Status (
+ IStatus.ERROR,
+ ResourcesPlugin.PI_RESOURCES,
+ IResourceStatus.OUT_OF_SYNC_LOCAL,
+ "Resource " + jpgResource.getName() + "is out of sync with file
system",
+ null);
+ if (result == null) {
+ result = temp;
+ } else if (result instanceof MultiStatus){
+ ((MultiStatus)result).add(temp);
+ } else {
+ MultiStatus multi = new MultiStatus(
+ ResourcesPlugin.PI_RESOURCES,
+ IResourceStatus.OUT_OF_SYNC_LOCAL,
+ "the resources are out of sync with file system",
+ null);
+ multi.add(result);
+ multi.add(temp);
+ result = multi;
+ }
+ }
if (result == null) {
result = Status.OK_STATUS;
}
@@ -157,6 +186,11 @@
IPath newGpdPath= gpdResource.getFullPath().removeLastSegments(1).append("."
+ getNewProcessName() + ".gpd.xml");
deltaFactory.move(
gpdResource, newGpdPath);
+ if (jpgResource != null && jpgResource.exists()) {
+ IPath newJpgPath=
jpgResource.getFullPath().removeLastSegments(1).append(getNewProcessName() +
".jpg");
+ deltaFactory.move(
+ jpgResource, newJpgPath);
+ }
return new RefactoringStatus();
} finally {
pm.done();
@@ -182,9 +216,11 @@
result.merge(RefactoringStatus.create(c.getWorkspace().validateName(newName,
gpdResource.getType())));
}
if (!result.hasFatalError())
- result.merge(RefactoringStatus.create(c.getWorkspace().validatePath(createNewPath(jpdlResource,
newName), jpdlResource.getType())));
+ result.merge(RefactoringStatus.create(c.getWorkspace().validatePath(createNewPath(jpdlResource,
newName + ".jpdl.xml"), jpdlResource.getType())));
if (!result.hasFatalError())
- result.merge(RefactoringStatus.create(c.getWorkspace().validatePath(createNewPath(gpdResource,
newName), gpdResource.getType())));
+ result.merge(RefactoringStatus.create(c.getWorkspace().validatePath(createNewPath(gpdResource,
"." + newName + ".gpd.xml"), gpdResource.getType())));
+ if (!result.hasFatalError() && jpgResource != null &&
jpgResource.exists())
+ result.merge(RefactoringStatus.create(c.getWorkspace().validatePath(createNewPath(jpgResource,
newName + ".jpg"), jpgResource.getType())));
return result;
}
@@ -194,6 +230,9 @@
CompositeChange compositeChange = new CompositeChange("process rename");
compositeChange.add(new RenameResourceChange(jpdlResource.getFullPath(),
getNewProcessName() + ".jpdl.xml"));
compositeChange.add(new RenameResourceChange(gpdResource.getFullPath(), "."
+ getNewProcessName() + ".gpd.xml"));
+ if (jpgResource != null && jpgResource.exists()) {
+ compositeChange.add(new RenameResourceChange(jpgResource.getFullPath(),
getNewProcessName() + ".jpg"));
+ }
return compositeChange;
} finally {
pm.done();
@@ -205,7 +244,11 @@
}
public Object[] getElements() {
- return new Object[] { jpdlResource, gpdResource};
+ if (jpgResource != null && jpgResource.exists()) {
+ return new Object[] { jpdlResource, gpdResource, jpgResource };
+ } else {
+ return new Object[] { jpdlResource, gpdResource};
+ }
}
public String getIdentifier() {