Start to align workspace structure of trace server with Trace Compass

- Added tracing project nature since it's in tmf.ui
- Created Traces directory and store trace underneath
- Set trace type ID persistent property

Note: The implementations for the alignment of workspace structure
should to be done by migrating Trace Compass project model code of UI
to core.

Change-Id: Ib405a9409ac5170ece6293a626d4a99270643228
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/158540
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/plugin.xml b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/plugin.xml
index aac116e..81d26e3 100644
--- a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/plugin.xml
+++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.4"?>
 <plugin>
-<extension
+   <extension
          id="id"
          point="org.eclipse.core.runtime.applications">
       <application
@@ -13,16 +13,25 @@
          </run>
       </application>
    </extension>
-<extension
-      id="id"
-      point="org.eclipse.core.runtime.products">
-   <product
-         application="org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.id"
-         name="%product.name">
-      <property
-            name="appName"
-            value="Trace Compass Trace Server (Jersey Rest)">
-      </property>
-   </product>
-</extension>
+   <extension
+        id="id"
+        point="org.eclipse.core.runtime.products">
+     <product
+           application="org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.id"
+           name="Trace Compass Trace Server (Jersey Rest)">
+        <property
+              name="appName"
+              value="Trace Compass Trace Server (Jersey Rest)">
+        </property>
+     </product>
+   </extension>
+   <extension
+         id="org.eclipse.linuxtools.tmf.project.nature"
+         point="org.eclipse.core.resources.natures">
+      <runtime>
+         <run
+               class="org.eclipse.tracecompass.tmf.core.TmfProjectNature">
+         </run>
+      </runtime>
+   </extension>
 </plugin>
diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/TraceManagerService.java b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/TraceManagerService.java
index 5a64ce2..2d47f7f 100644
--- a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/TraceManagerService.java
+++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/TraceManagerService.java
@@ -129,7 +129,10 @@
 
         IResource resource = getResource(path);
 
+//        TmfTraceTypeUIUtils.setTraceType(resource, traceTypeHelper);
         TraceTypeHelper helper = traceTypes.get(0);
+        resource.setPersistentProperty(TmfCommonConstants.TRACETYPE, helper.getTraceTypeId());
+
         ITmfTrace trace = helper.getTraceClass().newInstance();
         trace.initTrace(resource, path, ITmfEvent.class, name, typeID);
         trace.indexTrace(false);
@@ -156,18 +159,19 @@
     private static IResource getResource(String path) throws CoreException {
         IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
         IProject project = root.getProject(TmfCommonConstants.DEFAULT_TRACE_PROJECT_NAME);
+        IFolder tracesFolder = project.getFolder("Traces");
         IPath iPath = org.eclipse.core.runtime.Path.forPosix(path);
 
         IResource resource = null;
         boolean isSuccess = false;
         // create the resource hierarchy.
         if (new File(path).isFile()) {
-            IFile file = project.getFile(path);
+            IFile file = tracesFolder.getFile(path);
             createFolder((IFolder) file.getParent(), null);
             isSuccess = ResourceUtil.createSymbolicLink(file, iPath, true, null);
             resource = file;
         } else {
-            IFolder folder = project.getFolder(path);
+            IFolder folder = tracesFolder.getFolder(path);
             createFolder((IFolder) folder.getParent(), null);
             isSuccess = ResourceUtil.createSymbolicLink(folder, iPath, true, null);
             resource = folder;
diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/webapp/WebApplication.java b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/webapp/WebApplication.java
index f32ee9a..2591e31 100644
--- a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/webapp/WebApplication.java
+++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/webapp/WebApplication.java
@@ -10,7 +10,9 @@
  *******************************************************************************/
 package org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.webapp;
 
+import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.servlet.ServletContextHandler;
@@ -22,6 +24,7 @@
 import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.XmlManagerService;
 import org.eclipse.tracecompass.internal.tmf.core.model.DataProviderDescriptor;
 import org.eclipse.tracecompass.tmf.core.TmfCommonConstants;
+import org.eclipse.tracecompass.tmf.core.TmfProjectNature;
 import org.eclipse.tracecompass.tmf.core.model.xy.ISeriesModel;
 import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
@@ -102,8 +105,21 @@
                 .getProject(TmfCommonConstants.DEFAULT_TRACE_PROJECT_NAME);
         if (!project.exists()) {
             project.create(null);
+            if (!project.isOpen()) {
+                project.open(null);
+            }
+            IProjectDescription description = project.getDescription();
+            description.setNatureIds(new String[] { TmfProjectNature.ID });
+            project.setDescription(description, null);
         }
-        project.open(null);
+        if (!project.isOpen()) {
+            project.open(null);
+        }
+
+        IFolder tracesFolder = project.getFolder("Traces");
+        if (!tracesFolder.exists()) {
+            tracesFolder.create(true, true, null);
+        }
 
         fServer.start();
         if (fPort != TEST_PORT) {