Bug 500399 - GenDoc Errors and warnings report enhancement

Change-Id: I155aca390bc043bf828bff2b66ae90842b3c51c5
Signed-off-by: Antonio Campesino <antonio.campesino.robles@ericsson.com>
diff --git a/plugins/org.eclipse.gendoc.script.acceleo/src/org/eclipse/gendoc/script/acceleo/Generator.java b/plugins/org.eclipse.gendoc.script.acceleo/src/org/eclipse/gendoc/script/acceleo/Generator.java
index 7288ede..58b32bc 100644
--- a/plugins/org.eclipse.gendoc.script.acceleo/src/org/eclipse/gendoc/script/acceleo/Generator.java
+++ b/plugins/org.eclipse.gendoc.script.acceleo/src/org/eclipse/gendoc/script/acceleo/Generator.java
@@ -33,6 +33,7 @@
 import org.eclipse.acceleo.model.mtl.resource.AcceleoResourceFactoryRegistry;
 import org.eclipse.acceleo.parser.AcceleoParser;
 import org.eclipse.acceleo.parser.AcceleoSourceBuffer;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.common.util.Monitor;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EClassifier;
@@ -45,6 +46,8 @@
 import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
 import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
 import org.eclipse.gendoc.script.acceleo.exception.AcceleoParsingException;
+import org.eclipse.gendoc.services.GendocServices;
+import org.eclipse.gendoc.services.ILogger;
 import org.eclipse.gendoc.services.exception.GenerationException;
 import org.eclipse.gendoc.services.exception.ParsingException;
 import org.eclipse.ocl.ecore.EcoreEnvironment;
@@ -123,7 +126,9 @@
 		parser.parse(source, r, resources);
         if (!source.getProblems().getList().isEmpty())
         {
-            throw new AcceleoParsingException(source.getProblems().toString());
+            ILogger logger = GendocServices.getDefault().getService(ILogger.class);
+            logger.log(source.getProblems().toString()+":\n"+source.getBuffer().toString(), IStatus.ERROR);
+        	throw new AcceleoParsingException(source.getProblems().toString());
         }
         if (r.getContents().size() > 0)
         {
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/AbstractScriptTagHandler.java b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/AbstractScriptTagHandler.java
index 465ee75..183a91b 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/AbstractScriptTagHandler.java
+++ b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/AbstractScriptTagHandler.java
@@ -13,6 +13,9 @@
  *****************************************************************************/
 package org.eclipse.gendoc.tags.handlers;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.gendoc.documents.IDocumentService;
 import org.eclipse.gendoc.m2t.IM2TProcessor;
@@ -72,7 +75,10 @@
             // ok
             gendocDiagnostician.addDiagnostic(Diagnostic.ERROR, message, tag);
             e.printStackTrace();
-            return " --- ERROR DURING GENERATION OF THIS PART \n Error message: " + this.removeSpecialCharacters(e.getUIMessage()) + " --- " + tag.getRawText() + " --- END ERROR --- ";
+            StringWriter wr = new StringWriter();
+            e.printStackTrace(new PrintWriter(wr,true));
+            return " --- ERROR DURING GENERATION OF THIS PART \n Error message: " + this.removeSpecialCharacters(e.getUIMessage()) + " --- "  
+            	+ wr.toString() + "---" + tag.getRawText() + " --- END ERROR --- ";
         }
         logger.log("Script result :" + resultBuffer.toString(), ILogger.DEBUG);
         return resultBuffer.toString();
diff --git a/plugins/org.eclipse.gendoc.wizard/src/org/eclipse/gendoc/wizard/GendocWizard.java b/plugins/org.eclipse.gendoc.wizard/src/org/eclipse/gendoc/wizard/GendocWizard.java
index 3f1f2ad..a04af62 100644
--- a/plugins/org.eclipse.gendoc.wizard/src/org/eclipse/gendoc/wizard/GendocWizard.java
+++ b/plugins/org.eclipse.gendoc.wizard/src/org/eclipse/gendoc/wizard/GendocWizard.java
@@ -172,6 +172,17 @@
     										+ resultFilePath);
     							}
     						});
+    					} else if (resultDiagnostic.getSeverity() == Diagnostic.WARNING) {
+    						Display.getDefault().syncExec(new Runnable()
+    						{
+    							public void run()
+    							{
+    								ErrorDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Document generator", 
+    										"The document has been generated successfully:\n"
+    										+ resultFilePath +"\n but contains some warnings:\n",
+    										BasicDiagnostic.toIStatus(resultDiagnostic));
+    							}
+    						});    						
     					}
     					else
     					{