import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Display;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.util.Date;
*/
public class CreateResourceWizard extends Wizard {
- private MainPage mainPage;
- private SimpleResourceBasicDetailsPage simpleResourceBasicDetailsPage;
- private SimpleResourceAddAttributePage simpleResourceAddAttributePage;
- private SimpleResourceOtherDetailsPage simpleResourceOtherDetailsPage;
- private LoadRamlPage loadRamlPage;
- private UpdatePropertiesPage updatePropPage;
+ private MainPage mainPage;
+ private SimpleResourceBasicDetailsPage simpleResourceBasicDetailsPage;
+ private SimpleResourceAddAttributePage simpleResourceAddAttributePage;
+ private SimpleResourceOtherDetailsPage simpleResourceOtherDetailsPage;
+ private LoadRamlPage loadRamlPage;
+ private UpdatePropertiesPage updatePropPage;
+ private UpdateMultiInstanceCreationPropertiesPage updateMultiInstanceCreationPropPage;
- private String status;
+ private String status;
- private WizardDialog wizDialog;
- private boolean dlgForceClosed;
+ private WizardDialog wizDialog;
+ private boolean dlgForceClosed;
- private Resource createdResource;
-
- private IProgressMonitor progressMonitor;
+ private Resource createdResource;
+ private Set<SingleResource> multiInstanceResourceSet;
public CreateResourceWizard() {
setWindowTitle("Create resources");
simpleResourceOtherDetailsPage = new SimpleResourceOtherDetailsPage();
loadRamlPage = new LoadRamlPage();
updatePropPage = new UpdatePropertiesPage();
+ updateMultiInstanceCreationPropPage = new UpdateMultiInstanceCreationPropertiesPage();
addPage(mainPage);
addPage(simpleResourceBasicDetailsPage);
addPage(simpleResourceOtherDetailsPage);
addPage(loadRamlPage);
addPage(updatePropPage);
+ addPage(updateMultiInstanceCreationPropPage);
}
public void setWizardDialog(WizardDialog dlg) {
return createdResource;
}
+ public Set<SingleResource> getCreatedMultiInstanceResourceSet() {
+ return multiInstanceResourceSet;
+ }
+
@Override
public boolean canFinish() {
IWizardPage curPage = this.getContainer().getCurrentPage();
- if ((curPage == updatePropPage && ((mainPage.getOption() == Option.SIMPLE_FROM_RAML) || !Activator
- .getDefault().getResourceManager().isAnyResourceExist()))
- || curPage == simpleResourceAddAttributePage
- || (curPage == loadRamlPage && loadRamlPage.isSelectionDone() && loadRamlPage
- .isMultiResourceCreation())) {
+ if ((curPage == updateMultiInstanceCreationPropPage || curPage == updatePropPage
+ && ((mainPage.getOption() == Option.SIMPLE_FROM_RAML) || !Activator
+ .getDefault().getResourceManager().isAnyResourceExist()))
+ || curPage == simpleResourceAddAttributePage) {
return true;
}
return false;
.log(Level.ERROR.ordinal(), new Date(), e.getMessage());
e.printStackTrace();
}
- } else if (curPage == loadRamlPage) {
- // Validate the file path.
- FileInputStream fileStream = null;
- try {
- fileStream = new FileInputStream(
- loadRamlPage.getConfigFilePath());
- } catch (FileNotFoundException e) {
- MessageDialog
- .openError(getShell(), "Invalid File",
- "File doesn't exist. Either the file path or file name is invalid.");
- return false;
- } finally {
- if (null != fileStream) {
- try {
- fileStream.close();
- } catch (IOException e) {
- Activator
- .getDefault()
- .getLogManager()
- .log(Level.ERROR.ordinal(), new Date(),
- "There is an error while closing the file stream.\n");
- }
- }
- }
-
- // Handling multiple instance creation of simple resource with RAML
- if ((loadRamlPage.getResourceCount() + Activator.getDefault()
- .getResourceManager().getResourceCount()) > Constants.MAX_RESOURCE_COUNT) {
- MessageDialog.openInformation(Display.getDefault()
- .getActiveShell(), "Resource limit exceeded",
- Constants.RESOURCE_LIMIT_EXCEEDED_MSG);
- return false;
- }
-
- final int[] resCreatedCount = new int[1];
- try {
- getContainer().run(true, true, new IRunnableWithProgress() {
-
- @Override
- public void run(final IProgressMonitor monitor)
- throws InvocationTargetException,
- InterruptedException {
- progressMonitor = monitor;
- try {
- monitor.beginTask(
- "Single Resource Creation(multi-instance) With RAML",
- loadRamlPage.getResourceCount());
- resCreatedCount[0] = createMultiInstanceSingleResourceWithoutRAML();
-
- } finally {
- monitor.done();
- }
- }
- });
- } catch (InvocationTargetException e) {
- Activator.getDefault().getLogManager()
- .log(Level.ERROR.ordinal(), new Date(), e.getMessage());
- e.printStackTrace();
- } catch (InterruptedException e) {
- Activator.getDefault().getLogManager()
- .log(Level.ERROR.ordinal(), new Date(), e.getMessage());
- e.printStackTrace();
- }
- boolean canceled = false;
- if (null != progressMonitor && progressMonitor.isCanceled()
- && 0 == resCreatedCount[0]) {
- canceled = true;
- }
- progressMonitor = null;
- if (canceled) {
- return false;
+ } else if (curPage == updatePropPage
+ || curPage == updateMultiInstanceCreationPropPage) {
+ multiInstanceResourceSet = loadRamlPage
+ .getMultiInstanceResourceSet();
+ createdResource = loadRamlPage.getResource();
+
+ String resName;
+ String resURI;
+ String resType;
+ boolean multiInstanceCreation = loadRamlPage
+ .isMultiResourceCreation();
+
+ if (curPage == updatePropPage) {
+ resName = updatePropPage.getResName();
+ resURI = updatePropPage.getResURI();
+ resType = updatePropPage.getResType();
} else {
- if (resCreatedCount[0] > 0) {
- UiListenerHandler.getInstance()
- .resourceCreatedUINotification(ResourceType.SINGLE);
- }
+ resName = updateMultiInstanceCreationPropPage.getResName();
+ resURI = "";
+ resType = updateMultiInstanceCreationPropPage.getResType();
}
- } else if (curPage == updatePropPage) {
- // Handling the single instance
- String resName = updatePropPage.getResName();
- String resURI = updatePropPage.getResURI();
+
if (null == resName || resName.trim().length() < 1) {
MessageDialog.openError(Display.getDefault().getActiveShell(),
"Invalid Resource Name.", "Resource name is invalid");
return false;
}
- if (!Utility.isUriValid(resURI)) {
+
+ if (!multiInstanceCreation && !Utility.isUriValid(resURI)) {
MessageDialog.openError(Display.getDefault().getActiveShell(),
"Invalid Resource URI.", Constants.INVALID_URI_MESSAGE);
return false;
}
+
// Creation of simple resource with RAML
// Checking whether the URI is used by any other resource.
- if (Activator.getDefault().getResourceManager()
- .isResourceExist(updatePropPage.getResURI())) {
+ if (!multiInstanceCreation
+ && Activator.getDefault().getResourceManager()
+ .isResourceExist(resURI)) {
MessageDialog
.openError(getShell(), "Resource URI in use",
"Entered resource URI is in use. Please try a different one.");
return false;
}
+ if (!Utility.isResourceTypeValid(resType)) {
+ MessageDialog.openError(Display.getDefault().getActiveShell(),
+ "Invalid Resource Type.",
+ Constants.INVALID_RESOURCE_TYPE_MESSAGE);
+ return false;
+ }
+
try {
getContainer().run(true, false, new IRunnableWithProgress() {
try {
monitor.beginTask("Completing Resource Creation", 2);
monitor.worked(1);
- completeResourceCreationWithRAML();
+ if (loadRamlPage.isMultiResourceCreation()) {
+ completeMultiInstanceResourceCreationWithRAML();
+ } else {
+ completeSingleInstanceResourceCreationWithRAML();
+ }
monitor.worked(1);
} finally {
monitor.done();
return updatePropPage;
}
+ public UpdateMultiInstanceCreationPropertiesPage getUpdateMultiInstanceCreationPropPage() {
+ return updateMultiInstanceCreationPropPage;
+ }
+
+ public void setUpdateMultiInstanceCreationPropPage(
+ UpdateMultiInstanceCreationPropertiesPage updateMultiInstanceCreationPropPage) {
+ this.updateMultiInstanceCreationPropPage = updateMultiInstanceCreationPropPage;
+ }
+
public void setStatus(String status) {
this.status = status;
}
}
}
- private void completeResourceCreationWithRAML() {
+ private void completeSingleInstanceResourceCreationWithRAML() {
+ String resName = updatePropPage.getResName();
+ String resURI = updatePropPage.getResURI();
+ String resType = updatePropPage.getResType();
+
try {
boolean result = false;
- Resource res = loadRamlPage.getResource();
- if (res instanceof SingleResource) {
+ if (createdResource instanceof SingleResource) {
result = Activator
.getDefault()
.getResourceManager()
- .completeSingleResourceCreationByRAML(res,
- updatePropPage.getResURI(),
- updatePropPage.getResName(), false);
+ .completeSingleResourceCreationByRAML(createdResource,
+ resURI, resName, resType, false);
}
if (result) {
status = "Resource created.";
- createdResource = res;
} else {
status = "Failed to create resource.";
createdResource = null;
}
}
- private int createMultiInstanceSingleResourceWithoutRAML() {
- int toCreateCount = loadRamlPage.getResourceCount();
- int resCreatedCount = 0;
- Set<SingleResource> resources;
- try {
- resources = Activator
- .getDefault()
- .getResourceManager()
- .createSingleResourceMultiInstances(
- loadRamlPage.getConfigFilePath(), toCreateCount,
- progressMonitor);
- if (null != progressMonitor && progressMonitor.isCanceled()) {
- try {
- Activator.getDefault().getResourceManager()
- .removeSingleResources(resources);
- } catch (SimulatorException e) {
- Activator
- .getDefault()
- .getLogManager()
- .log(Level.ERROR.ordinal(),
- new Date(),
- "There is an error while updating the resource model.\n"
- + Utility.getSimulatorErrorString(
- e, null));
+ private void completeMultiInstanceResourceCreationWithRAML() {
+ String resName = updateMultiInstanceCreationPropPage.getResName();
+ String resType = updateMultiInstanceCreationPropPage.getResType();
+
+ if (null == multiInstanceResourceSet)
+ return;
+
+ boolean result = false;
+ int count = loadRamlPage.getResourceCount();
+ int successCount = 0;
+ SingleResource resource;
+ Iterator<SingleResource> itr = multiInstanceResourceSet.iterator();
+ while (itr.hasNext()) {
+ resource = itr.next();
+ try {
+ result = Activator
+ .getDefault()
+ .getResourceManager()
+ .completeSingleResourceCreationByRAML(resource, null,
+ resName, resType, true);
+ if (result) {
+ successCount++;
}
- return 0;
- }
- if (null != resources)
- resCreatedCount = resources.size();
- if (resCreatedCount > 0) {
- status = "[" + resCreatedCount + " out of " + toCreateCount
- + "]";
- status += ((resCreatedCount == 1) ? "resource" : "resources")
- + " created successfully.";
- } else {
- status = "Failed to create resources.";
+
+ } catch (SimulatorException e) {
+ // Do Nothing.
}
- } catch (SimulatorException e) {
- status = "Failed to create resource.\n"
- + Utility.getSimulatorErrorString(e, null);
}
- return resCreatedCount;
+ if (successCount > 0) {
+ UiListenerHandler.getInstance().resourceCreatedUINotification(
+ ResourceType.SINGLE);
+
+ status = "[" + successCount + " out of " + count + "]";
+ status += ((successCount == 1) ? "resource" : "resources")
+ + " created successfully.";
+ } else {
+ status = "Failed to create resources.";
+ }
}
}
\ No newline at end of file