Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStéphane Bégaudeau2018-05-15 13:41:22 +0000
committerPierre-Charles David2018-05-15 19:41:19 +0000
commitbc76ec0b5b386e791afcac15ee5ea5aca665b2c7 (patch)
treef4909f056fbb6b5e333e74fac4874e9a192afb49
parentba8733ba88ec0b826e777d71164ce68fb9fc619c (diff)
downloadorg.eclipse.sirius-bc76ec0b5b386e791afcac15ee5ea5aca665b2c7.tar.gz
org.eclipse.sirius-bc76ec0b5b386e791afcac15ee5ea5aca665b2c7.tar.xz
org.eclipse.sirius-bc76ec0b5b386e791afcac15ee5ea5aca665b2c7.zip
[509735] Add support for the project description
The project description is now visible thanks to the HTTP API. Improve the performance of the dashboard by removing information computed using Sirius sessions which are expensive to open. Bug: 509735 Change-Id: I3d1a475906f83e7ccb03c86fb4695968f1faaf03 Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.server.backend/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardProjectDto.java25
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardService.java35
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDescriptionUpdatedDto.java35
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDto.java13
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectService.java36
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerUpdateProjectDescriptionDto.java29
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectDto.java11
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectsService.java20
-rw-r--r--plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/utils/SiriusServerUtils.java28
10 files changed, 183 insertions, 52 deletions
diff --git a/plugins/org.eclipse.sirius.server.backend/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.server.backend/META-INF/MANIFEST.MF
index 844b0954e6..2b4976f035 100644
--- a/plugins/org.eclipse.sirius.server.backend/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.sirius.server.backend/META-INF/MANIFEST.MF
@@ -25,9 +25,12 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
org.eclipse.sirius.common;bundle-version="6.0.0"
Bundle-Localization: plugin
Export-Package: org.eclipse.sirius.server.backend.internal;x-friends:="org.eclipse.sirius.tests.server.backend",
+ org.eclipse.sirius.server.backend.internal.services.activities;x-internal:=true,
org.eclipse.sirius.server.backend.internal.services.dashboard;x-internal:=true,
+ org.eclipse.sirius.server.backend.internal.services.pages;x-internal:=true,
org.eclipse.sirius.server.backend.internal.services.project;x-internal:=true,
org.eclipse.sirius.server.backend.internal.services.projects;x-internal:=true,
+ org.eclipse.sirius.server.backend.internal.services.workflow;x-internal:=true,
org.eclipse.sirius.server.backend.internal.utils;x-internal:=true
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.sirius.server.backend.internal.SiriusServerBackendPlugin$Implementation
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardProjectDto.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardProjectDto.java
index fd3feb83cd..acf6d98c35 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardProjectDto.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardProjectDto.java
@@ -12,43 +12,34 @@ package org.eclipse.sirius.server.backend.internal.services.dashboard;
/**
* The DTO used to represent one project in the dashboard.
- *
+ *
* @author sbegaudeau
*/
@SuppressWarnings({ "checkstyle::javadocmethod", "checkstyle::javadocfield" })
public class SiriusServerDashboardProjectDto {
private String name;
- private int semanticResourcesCount;
-
- private int representationsCount;
+ private String description;
/**
* The constructor.
*
* @param name
* The name of the project
- * @param semanticResourcesCount
- * The number of semantic resources
- * @param representationsCount
- * The number of representations
+ * @param description
+ * The description of the project
*/
- public SiriusServerDashboardProjectDto(String name, int semanticResourcesCount, int representationsCount) {
+ public SiriusServerDashboardProjectDto(String name, String description) {
this.name = name;
- this.semanticResourcesCount = semanticResourcesCount;
- this.representationsCount = representationsCount;
+ this.description = description;
}
public String getName() {
return this.name;
}
- public int getSemanticResourcesCount() {
- return this.semanticResourcesCount;
- }
-
- public int getRepresentationsCount() {
- return this.representationsCount;
+ public String getDescription() {
+ return this.description;
}
}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardService.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardService.java
index 7e637759e6..7cbb610278 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardService.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/dashboard/SiriusServerDashboardService.java
@@ -24,9 +24,7 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
-import org.eclipse.sirius.business.api.dialect.DialectManager;
import org.eclipse.sirius.business.api.modelingproject.ModelingProject;
-import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.server.backend.internal.ISiriusServerService;
import org.eclipse.sirius.server.backend.internal.SiriusServerPath;
import org.eclipse.sirius.server.backend.internal.SiriusServerResponse;
@@ -71,40 +69,33 @@ public class SiriusServerDashboardService implements ISiriusServerService {
}
/**
- * Returns a stream of the modeling projects of the workspace.
+ * Returns a stream of the projects with the modeling project nature in the
+ * workspace.
*
- * @return A stream of the modeling projects of the workspace
+ * @return A stream of the projects with the modeling project nature in the
+ * workspace
*/
- private Stream<ModelingProject> getModelingProjects() {
+ private Stream<IProject> getModelingProjects() {
IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
// @formatter:off
return Arrays.stream(allProjects)
.filter(ModelingProject::hasModelingProjectNature)
- .filter(IProject::isOpen)
- .map(project -> ModelingProject.asModelingProject(project).get());
+ .filter(IProject::isOpen);
// @formatter:on
}
/**
- * Converts the given {@link ModelingProject} into a
+ * Converts the given project into a
* {@link SiriusServerDashboardProjectDto}.
*
- * @param modelingProject
- * The {@link ModelingProject}
+ * @param iProject
+ * A project with the modeling project nature
* @return The {@link SiriusServerDashboardProjectDto}
*/
- private SiriusServerDashboardProjectDto convertToProject(ModelingProject modelingProject) {
- Session session = SiriusServerUtils.getSession(modelingProject);
+ private SiriusServerDashboardProjectDto convertToProject(IProject iProject) {
+ String name = iProject.getName();
+ String description = SiriusServerUtils.getProjectDescription(iProject);
- String name = modelingProject.getProject().getName();
- int semanticResourcesCount = session.getSemanticResources().size();
- // @formatter:off
- int representationsCount = DialectManager.INSTANCE.getAllRepresentationDescriptors(session).stream()
- .filter(descriptor -> !descriptor.getDescription().eIsProxy())
- .mapToInt(e -> 1)
- .sum();
- // @formatter:on
-
- return new SiriusServerDashboardProjectDto(name, semanticResourcesCount, representationsCount);
+ return new SiriusServerDashboardProjectDto(name, description);
}
}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDescriptionUpdatedDto.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDescriptionUpdatedDto.java
new file mode 100644
index 0000000000..f760f7a065
--- /dev/null
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDescriptionUpdatedDto.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.server.backend.internal.services.project;
+
+/**
+ * The DTO received by clients after the update of the project description.
+ *
+ * @author sbegaudeau
+ */
+@SuppressWarnings({ "checkstyle::javadocmethod", "checkstyle::javadocfield" })
+public class SiriusServerProjectDescriptionUpdatedDto {
+ private String description;
+
+ /**
+ * The constructor.
+ *
+ * @param description
+ * The new description of the project
+ */
+ public SiriusServerProjectDescriptionUpdatedDto(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return this.description;
+ }
+}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDto.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDto.java
index 0580b7fc01..ef82f74879 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDto.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectDto.java
@@ -21,6 +21,8 @@ import java.util.List;
public class SiriusServerProjectDto {
private String name;
+ private String description;
+
private List<AbstractSiriusServerRepresentationDto> representations;
private List<SiriusServerSemanticResourceDto> semanticResources;
@@ -34,6 +36,8 @@ public class SiriusServerProjectDto {
*
* @param name
* The name of the project
+ * @param description
+ * The description of the project
* @param representations
* The representations
* @param semanticResources
@@ -43,9 +47,10 @@ public class SiriusServerProjectDto {
* @param currentPageSections
* The sections of the current page of the workflow
*/
- public SiriusServerProjectDto(String name, List<AbstractSiriusServerRepresentationDto> representations, List<SiriusServerSemanticResourceDto> semanticResources, List<SiriusServerPageDto> pages,
- List<SiriusServerSectionDto> currentPageSections) {
+ public SiriusServerProjectDto(String name, String description, List<AbstractSiriusServerRepresentationDto> representations, List<SiriusServerSemanticResourceDto> semanticResources,
+ List<SiriusServerPageDto> pages, List<SiriusServerSectionDto> currentPageSections) {
this.name = name;
+ this.description = description;
this.representations = representations;
this.semanticResources = semanticResources;
this.pages = pages;
@@ -56,6 +61,10 @@ public class SiriusServerProjectDto {
return this.name;
}
+ public String getDescription() {
+ return this.description;
+ }
+
public List<AbstractSiriusServerRepresentationDto> getRepresentations() {
return this.representations;
}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectService.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectService.java
index 5df8de86d9..705a217f0f 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectService.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerProjectService.java
@@ -10,11 +10,16 @@
*******************************************************************************/
package org.eclipse.sirius.server.backend.internal.services.project;
+import static org.eclipse.sirius.server.backend.internal.SiriusServerResponse.STATUS_INTERNAL_SERVER_ERROR;
import static org.eclipse.sirius.server.backend.internal.SiriusServerResponse.STATUS_NOT_FOUND;
import static org.eclipse.sirius.server.backend.internal.SiriusServerResponse.STATUS_OK;
+import com.google.gson.Gson;
+
import java.io.File;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
import java.nio.file.Files;
import java.text.DecimalFormat;
import java.util.ArrayList;
@@ -28,8 +33,11 @@ import javax.servlet.http.HttpServletRequest;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.URI;
@@ -102,11 +110,12 @@ public class SiriusServerProjectService implements ISiriusServerService {
Session session = SiriusServerUtils.getSession(modelingProject);
String projectName = modelingProject.getProject().getName();
+ String description = SiriusServerUtils.getProjectDescription(modelingProject.getProject());
List<AbstractSiriusServerRepresentationDto> representations = this.getRepresentations(session);
List<SiriusServerSemanticResourceDto> semanticResources = this.getSemanticResources(modelingProject.getProject(), session);
List<SiriusServerPageDto> pages = this.getPages(session);
List<SiriusServerSectionDto> currentPageSections = this.getFirstPageSections(session);
- return new SiriusServerProjectDto(projectName, representations, semanticResources, pages, currentPageSections);
+ return new SiriusServerProjectDto(projectName, description, representations, semanticResources, pages, currentPageSections);
}
/**
@@ -260,4 +269,29 @@ public class SiriusServerProjectService implements ISiriusServerService {
}
return decimalFormat.format(size / kb) + "KB"; //$NON-NLS-1$
}
+
+ @Override
+ public SiriusServerResponse doPut(HttpServletRequest request, Map<String, String> variables, String remainingPart) {
+ SiriusServerResponse response = null;
+ try {
+ Reader reader = new InputStreamReader(request.getInputStream(), SiriusServerUtils.UTF_8);
+ SiriusServerUpdateProjectDescriptionDto updateProjectDescription = new Gson().fromJson(reader, SiriusServerUpdateProjectDescriptionDto.class);
+
+ String projectName = variables.get(PROJECT_NAME);
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ if (project.exists()) {
+ IProjectDescription description = project.getDescription();
+ description.setComment(updateProjectDescription.getDescription());
+ project.setDescription(description, new NullProgressMonitor());
+ response = new SiriusServerResponse(STATUS_OK, new SiriusServerProjectDescriptionUpdatedDto(description.getComment()));
+ } else {
+ response = new SiriusServerResponse(STATUS_NOT_FOUND);
+ }
+ } catch (@SuppressWarnings("unused") IOException | CoreException exception) {
+ // We don't want to send back the message of the exception
+ response = new SiriusServerResponse(STATUS_INTERNAL_SERVER_ERROR);
+ }
+
+ return response;
+ }
}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerUpdateProjectDescriptionDto.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerUpdateProjectDescriptionDto.java
new file mode 100644
index 0000000000..6e005bb03c
--- /dev/null
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/project/SiriusServerUpdateProjectDescriptionDto.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.server.backend.internal.services.project;
+
+/**
+ * The DTO sent by clients to update the description of a project.
+ *
+ * @author sbegaudeau
+ */
+@SuppressWarnings({ "checkstyle::javadocmethod", "checkstyle::javadocfield" })
+public class SiriusServerUpdateProjectDescriptionDto {
+ private String description;
+
+ public String getDescription() {
+ return this.description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectDto.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectDto.java
index f9608b1ceb..4e73a1d41b 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectDto.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectDto.java
@@ -19,17 +19,26 @@ package org.eclipse.sirius.server.backend.internal.services.projects;
public class SiriusServerProjectDto {
private String name;
+ private String description;
+
/**
* The constructor.
*
* @param name
* The name of the project
+ * @param description
+ * The description of the project
*/
- public SiriusServerProjectDto(String name) {
+ public SiriusServerProjectDto(String name, String description) {
this.name = name;
+ this.description = description;
}
public String getName() {
return this.name;
}
+
+ public String getDescription() {
+ return this.description;
+ }
}
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectsService.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectsService.java
index fa9ce4c484..5cf1cf1ac6 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectsService.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/services/projects/SiriusServerProjectsService.java
@@ -68,7 +68,6 @@ public class SiriusServerProjectsService implements ISiriusServerService {
List<SiriusServerProjectDto> modelingProjects = Arrays.stream(allProjects)
.filter(ModelingProject::hasModelingProjectNature)
.filter(IProject::isOpen)
- .map(project -> ModelingProject.asModelingProject(project).get())
.map(this::convertToProject)
.collect(Collectors.toList());
// @formatter:on
@@ -76,16 +75,17 @@ public class SiriusServerProjectsService implements ISiriusServerService {
}
/**
- * Converts the given modeling project into a
+ * Converts the given project with a modeling nature into a
* {@link SiriusServerProjectDto}.
*
- * @param modelingProject
- * The modeling project
+ * @param iProject
+ * The project
* @return The {@link SiriusServerProjectDto} created
*/
- private SiriusServerProjectDto convertToProject(ModelingProject modelingProject) {
- String name = modelingProject.getProject().getName();
- return new SiriusServerProjectDto(name);
+ private SiriusServerProjectDto convertToProject(IProject iProject) {
+ String name = iProject.getName();
+ String description = SiriusServerUtils.getProjectDescription(iProject);
+ return new SiriusServerProjectDto(name, description);
}
@Override
@@ -101,7 +101,8 @@ public class SiriusServerProjectsService implements ISiriusServerService {
String message = MessageFormat.format(SiriusServerMessages.SiriusServerProjectsService_projectAlreadyExists, name);
response = new SiriusServerResponse(STATUS_BAD_REQUEST, new SiriusServerErrorDto(message));
} else {
- // TODO Improve this code once this issue is fixed: https://bugs.eclipse.org/bugs/show_bug.cgi?id=533931
+ // TODO Improve this code once this issue is fixed:
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=533931
IProjectDescription projectDescription = ResourcesPlugin.getWorkspace().newProjectDescription(name);
projectDescription.setNatureIds(new String[] { ModelingProject.NATURE_ID });
project.create(projectDescription, new NullProgressMonitor());
@@ -111,7 +112,8 @@ public class SiriusServerProjectsService implements ISiriusServerService {
SessionCreationOperation sessionCreationOperation = new DefaultLocalSessionCreationOperation(representationsURI, new NullProgressMonitor());
sessionCreationOperation.execute();
- response = new SiriusServerResponse(STATUS_CREATED, new SiriusServerProjectDto(name));
+ String description = SiriusServerUtils.getProjectDescription(project);
+ response = new SiriusServerResponse(STATUS_CREATED, new SiriusServerProjectDto(name, description));
}
} catch (@SuppressWarnings("unused") IOException | CoreException exception) {
// We don't want to send back the message of the exception
diff --git a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/utils/SiriusServerUtils.java b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/utils/SiriusServerUtils.java
index 7a97954012..70b124db50 100644
--- a/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/utils/SiriusServerUtils.java
+++ b/plugins/org.eclipse.sirius.server.backend/src/org/eclipse/sirius/server/backend/internal/utils/SiriusServerUtils.java
@@ -12,11 +12,17 @@ package org.eclipse.sirius.server.backend.internal.utils;
import java.util.Optional;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.URI;
import org.eclipse.sirius.business.api.modelingproject.ModelingProject;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.business.api.session.SessionManager;
+import org.eclipse.sirius.server.backend.internal.SiriusServerBackendPlugin;
import org.eclipse.sirius.viewpoint.SiriusPlugin;
/**
@@ -57,4 +63,26 @@ public final class SiriusServerUtils {
return session;
}
+ /**
+ * Returns the description from the given project.
+ *
+ * @param iProject
+ * The project
+ * @return The description from the given project
+ */
+ public static String getProjectDescription(IProject iProject) {
+ String description = null;
+
+ try {
+ IProjectDescription iProjectDescription = iProject.getDescription();
+ String comment = iProjectDescription.getComment();
+ if (comment != null && comment.trim().length() > 0) {
+ description = comment;
+ }
+ } catch (CoreException e) {
+ IStatus status = new Status(IStatus.ERROR, SiriusServerBackendPlugin.PLUGIN_ID, e.getMessage(), e);
+ SiriusServerBackendPlugin.getPlugin().log(status);
+ }
+ return description;
+ }
}

Back to the top