catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java b/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
index ed3b050..74e2d4f 100644
--- a/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
+++ b/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
@@ -15,9 +15,7 @@
  */
 package org.eclipse.osbp.blob.service;
 
-import java.awt.Graphics2D;
 import java.awt.Image;
-import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -27,8 +25,10 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import javax.imageio.ImageIO;
 import javax.xml.bind.DatatypeConverter;
@@ -79,6 +79,192 @@
 
 	private static final String DEFAULTBLOBFILENAME = "osbee.png";
 	private static final String DEFAULTBLOBMIMETYPE = "image/png";
+	
+	private static final Map<String,String> mimeTypes = createMap();
+	
+	private static Map<String,String> createMap() {
+		Map<String,String> myMap = new HashMap<>();
+		
+		// we store the file extension as a key and the mimetype as value
+		myMap.put("3dm","x-world/x-3dmf");
+		myMap.put("3dmf","x-world/x-3dmf");
+		myMap.put("ai","application/postscript");
+		myMap.put("aif","audio/x-aiff");
+		myMap.put("aifc","audio/x-aiff");
+		myMap.put("aiff","audio/x-aiff");
+		myMap.put("asd","application/astound");
+		myMap.put("asn","application/astound");
+		myMap.put("au","audio/basic");
+		myMap.put("avi","video/x-msvideo");
+		myMap.put("bcpio","application/x-bcpio");
+		myMap.put("bin","application/octet-stream");
+		myMap.put("bmp","image/bmp");
+		myMap.put("cab","application/x-shockwave-flash");
+		myMap.put("cdf","application/x-netcdf");
+		myMap.put("chm","application/mshelp");
+		myMap.put("cht","audio/x-dspeeh");
+		myMap.put("class","application/octet-stream");
+		myMap.put("cod","image/cis-cod");
+		myMap.put("com","application/octet-stream");
+		myMap.put("cpio","application/x-cpio");
+		myMap.put("csh","application/x-csh");
+		myMap.put("css","text/css");
+		myMap.put("csv","text/comma-separated-values");
+		myMap.put("dcr","application/x-director");
+		myMap.put("dir","application/x-director");
+		myMap.put("doc","application/msword");
+		myMap.put("docx","application/vnd.openxmlformats-officedocument. wordprocessingml.document");
+		myMap.put("dot","application/msword");
+		myMap.put("dus","audio/x-dspeeh");
+		myMap.put("dvi","application/x-dvi");
+		myMap.put("dwf","drawing/x-dwf");
+		myMap.put("dwg","application/acad");
+		myMap.put("dxf","application/dxf");
+		myMap.put("dxr","application/x-director");
+		myMap.put("eps","application/postscript");
+		myMap.put("es","audio/echospeech");
+		myMap.put("etx","text/x-setext");
+		myMap.put("evy","application/x-envoy");
+		myMap.put("exe","application/octet-stream");
+		myMap.put("fh4","image/x-freehand");
+		myMap.put("fh5","image/x-freehand");
+		myMap.put("fhc","image/x-freehand");
+		myMap.put("fif","image/fif");
+		myMap.put("file","application/octet-stream");
+		myMap.put("gif","image/gif");
+		myMap.put("gtar","application/x-gtar");
+		myMap.put("gz","application/gzip");
+		myMap.put("hdf","application/x-hdf");
+		myMap.put("hlp","application/mshelp");
+		myMap.put("hqx","application/mac-binhex40");
+		myMap.put("htm","text/html");
+		myMap.put("html","text/html");
+		myMap.put("ico","image/x-icon");
+		myMap.put("ief","image/ief");
+		myMap.put("ini","application/octet-stream");
+		myMap.put("jpe","image/jpeg");
+		myMap.put("jpeg","image/jpeg");
+		myMap.put("jpg","image/jpeg");
+		myMap.put("js","application/javascript");
+		myMap.put("json","application/json");
+		myMap.put("latex","application/x-latex");
+		myMap.put("man","application/x-troff-man");
+		myMap.put("mbd","application/mbedlet");
+		myMap.put("mcf","image/vasa");
+		myMap.put("me","application/x-troff-ms");
+		myMap.put("mid","audio/x-midi");
+		myMap.put("midi","audio/x-midi");
+		myMap.put("mif","application/mif");
+		myMap.put("mov","video/quicktime");
+		myMap.put("movie","video/x-sgi-movie");
+		myMap.put("mp2","audio/x-mpeg");
+		myMap.put("mp3","audio/mpeg");
+		myMap.put("mp4","video/mp4");
+		myMap.put("mpe","video/mpeg");
+		myMap.put("mpeg","video/mpeg");
+		myMap.put("mpg","video/mpeg");
+		myMap.put("nc","application/x-netcdf");
+		myMap.put("nsc","application/x-nschat");
+		myMap.put("oda","application/oda");
+		myMap.put("ogg","video/ogg");
+		myMap.put("ogv","video/ogg");
+		myMap.put("pbm","image/x-portable-bitmap");
+		myMap.put("pdf","application/pdf");
+		myMap.put("pgm","image/x-portable-graymap");
+		myMap.put("php","application/x-httpd-php");
+		myMap.put("phtml","application/x-httpd-php");
+		myMap.put("png","image/png");
+		myMap.put("pnm","image/x-portable-anymap");
+		myMap.put("pot","application/mspowerpoint");
+		myMap.put("ppm","image/x-portable-pixmap");
+		myMap.put("pps","application/mspowerpoint");
+		myMap.put("ppt","application/mspowerpoint");
+		myMap.put("ppz","application/mspowerpoint");
+		myMap.put("ps","application/postscript");
+		myMap.put("ptlk","application/listenup");
+		myMap.put("qd3","x-world/x-3dmf");
+		myMap.put("qd3d","x-world/x-3dmf");
+		myMap.put("qt","video/quicktime");
+		myMap.put("ra","audio/x-pn-realaudio");
+		myMap.put("ram","audio/x-pn-realaudio");
+		myMap.put("ras","image/cmu-raster");
+		myMap.put("reg","application/force-download");
+		myMap.put("rgb","image/x-rgb");
+		myMap.put("roff","application/x-troff");
+		myMap.put("rpm","audio/x-pn-realaudio-plugin");
+		myMap.put("rtc","application/rtc");
+		myMap.put("rtf","text/rtf");
+		myMap.put("rtx","text/richtext");
+		myMap.put("sca","application/x-supercard");
+		myMap.put("sgm","text/x-sgml");
+		myMap.put("sgml","text/x-sgml");
+		myMap.put("sh","application/x-sh");
+		myMap.put("shar","application/x-shar");
+		myMap.put("shtml","text/html");
+		myMap.put("sit","application/x-stuffit");
+		myMap.put("smp","application/studiom");
+		myMap.put("snd","audio/basic");
+		myMap.put("spc","text/x-speech");
+		myMap.put("spl","application/futuresplash");
+		myMap.put("spr","application/x-sprite");
+		myMap.put("sprite","application/x-sprite");
+		myMap.put("src","application/x-wais-source");
+		myMap.put("stream","audio/x-qt-stream");
+		myMap.put("sv4cpio","application/x-sv4cpio");
+		myMap.put("sv4crc","application/x-sv4crc");
+		myMap.put("svg","image/svg+xml");
+		myMap.put("swf","application/x-shockwave-flash");
+		myMap.put("t","application/x-troff");
+		myMap.put("talk","text/x-speech");
+		myMap.put("tar","application/x-tar");
+		myMap.put("tbk","application/toolbook");
+		myMap.put("tcl","application/x-tcl");
+		myMap.put("tex","application/x-tex");
+		myMap.put("texi","application/x-texinfo");
+		myMap.put("texinfo","application/x-texinfo");
+		myMap.put("tif","image/tiff");
+		myMap.put("tiff","image/tiff");
+		myMap.put("tr","application/x-troff");
+		myMap.put("troff","application/x-troff-me");
+		myMap.put("tsi","audio/tsplayer");
+		myMap.put("tsp","application/dsptype");
+		myMap.put("tsv","text/tab-separated-values");
+		myMap.put("txt","text/plain");
+		myMap.put("ustar","application/x-ustar");
+		myMap.put("viv","video/vnd.vivo");
+		myMap.put("vivo","video/vnd.vivo");
+		myMap.put("vmd","application/vocaltec-media-desc");
+		myMap.put("vmf","application/vocaltec-media-file");
+		myMap.put("vox","audio/voxware");
+		myMap.put("vts","workbook/formulaone");
+		myMap.put("vtts","workbook/formulaone");
+		myMap.put("wav","audio/wav");
+		myMap.put("wbmp","image/vnd.wap.wbmp");
+		myMap.put("webm","video/webm");
+		myMap.put("wml","text/vnd.wap.wml");
+		myMap.put("wmlc","application/vnd.wap.wmlc");
+		myMap.put("wmls","text/vnd.wap.wmlscript");
+		myMap.put("wmlsc","application/vnd.wap.wmlscriptc");
+		myMap.put("wrl","x-world/x-vrml");
+		myMap.put("xbm","image/x-xbitmap");
+		myMap.put("xhtml","application/xhtml+xml");
+		myMap.put("xla","application/msexcel");
+		myMap.put("xls","application/msexcel");
+		myMap.put("xlsx","application/vnd.openxmlformats-officedocument. spreadsheetml.sheet");
+		myMap.put("xml","text/xml");
+		myMap.put("xpm","image/x-xpixmap");
+		myMap.put("xwd","image/x-windowdump");
+		myMap.put("z","application/x-compress");
+		myMap.put("zip","application/zip");
+	    return myMap;
+	}
+	
+	private static String getMimetype ( String ext ) {
+		ext = ext.toLowerCase();
+		return mimeTypes.containsKey(ext)?mimeTypes.get(ext):mimeTypes.get("file"); 
+	}
+	
+	
 
 	/**
 	 * Inner class that extract the width and height values from the specified
@@ -112,7 +298,7 @@
 
 	public BlobService() {
 		if (DtoServiceAccess.getService(BlobMappingDto.class) instanceof IDTOService<?>) {
-			dtoBlobMappingDtoService = (IDTOService<BlobMappingDto>) DtoServiceAccess.getService(BlobMappingDto.class);
+			dtoBlobMappingDtoService = DtoServiceAccess.getService(BlobMappingDto.class);
 		}
 		this.blobAPI = new BlobTypingAPI();
 	}
@@ -198,6 +384,10 @@
 	public String createBlobMapping(InputStream stream, String fileName, String mimeType) {
 		BlobMappingDto blobMapping = new BlobMappingDto();
 		blobMapping.setFileName(fileName);
+		if ( mimeType == null || mimeType.isEmpty() ) {
+			int i = fileName.lastIndexOf('.');
+			mimeType = getMimetype(i>0?fileName.substring(i+1):"file");
+		}
 		blobMapping.setMimeTypeId(blobAPI.getMimeTypeContentTypeId(mimeType));
 		try {
 			List<Object> blobList = createBlobMappingBlobs(stream, mimeType);