diff --git a/.classpath b/.classpath
index 89e87d5..0bc30bd 100644
--- a/.classpath
+++ b/.classpath
@@ -19,7 +19,6 @@
-
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
index 8140941..fa4afb3 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
@@ -385,11 +385,6 @@ public class TemplateComponent {
switch (this.getType()) {
case DYNA_IMAGE:
ClientImage da = (ClientImage) this.content;
- /*
- * to get the URL of the image for the offline version you cannot use getURL(), it will return the absolut url of the image with host too
- * so just go inside and get /usersArea.....
- *
- * */
content = da.getDroppedImage().getElement().getAttribute("src");
GWT.log("Poss Content=" + content);
id = da.getIdInBasket();
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
index 302dc0c..aa0d000 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
@@ -19,6 +19,7 @@ import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+import javax.xml.bind.DatatypeConverter;
import net.sf.csv4j.CSVFileProcessor;
import net.sf.csv4j.CSVLineProcessor;
@@ -706,8 +707,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
- private void importDynamicImagesFromHL(Model model) {
- ServiceUtil myUtil = new ServiceUtil(getASLSession());
+ private void convertDynamicImagesFromHL(Model model) {
_log.debug("model == NULL " + (model == null));
Vector sections = model.getSections();
for (BasicSection section : sections) {
@@ -715,18 +715,9 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
if (component.getType() == ComponentType.DYNA_IMAGE) {
_log.debug("Found Simple Image: " + component.getPossibleContent());
if (component.getIdInBasket() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check
-
String imageID = component.getIdInBasket();
- String imageNameFile = UUID.randomUUID().toString();
-
- String imageTargetDIR =
- new StringBuilder(
- myUtil.getTemplatePath(model.getTemplateName(), getVreName(), getUsername()))
- .append("images").append(File.separator).toString();
-
- imageNameFile = copyImageFromBasket(imageID, imageTargetDIR, imageNameFile);
- component.setPossibleContent(getImageURL(imageNameFile, model.getTemplateName()));
- _log.trace("NEW setPossibleContent: " + component.getPossibleContent());
+ component.setPossibleContent(getdDataImagebase64(imageID));
+ _log.trace("Image converted base 64 OK: " + component.getPossibleContent());
}
}
if (component.getType() == ComponentType.REPEAT_SEQUENCE || component.getType() == ComponentType.BODY_TABLE_IMAGE) { //there could be images inside
@@ -735,16 +726,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
_log.debug("Found Image IN SEQUENCE, type is: " + component.getType());
if (co.getIdInBasket() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check
String imageID = co.getIdInBasket();
- String imageNameFile = UUID.randomUUID().toString();
-
- String imageTargetDIR =
- new StringBuilder(
- myUtil.getTemplatePath(model.getTemplateName(), getVreName(), getUsername()))
- .append("images").append(File.separator).toString();
- imageNameFile = copyImageFromBasket(imageID, imageTargetDIR, imageNameFile);
-
- co.setPossibleContent(getImageURL(imageNameFile, model.getTemplateName()));
- _log.trace("NEW setPossibleContent in SEQUENCE: " + co.getPossibleContent());
+ co.setPossibleContent(getdDataImagebase64(imageID));
+ _log.trace("Image converted base 64 OK, in SEQUENCE: " + co.getPossibleContent());
}
}
}
@@ -752,6 +735,56 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
}
+
+ /**
+ * convert the image into a String encoded base 64
+ * @param imageIDinWorkspace the id of the image in workspace
+ * @return the string representing the image converted to be put in the img src attribute e.g. data:image/ong;base64,a...z
+ */
+ private String getdDataImagebase64(String imageIDinWorkspace) {
+ Workspace root = null;
+ try {
+ root = getWorkspaceArea();
+
+ WorkspaceItem item = null;
+ item = root.getItem(imageIDinWorkspace);
+ if (item.getType() == WorkspaceItemType.FOLDER_ITEM) {
+ _log.debug("Item is a Folder Item");
+ FolderItem imageItem = (FolderItem) item;
+ InputStream data = null;
+
+ if (imageItem.getFolderItemType()==FolderItemType.EXTERNAL_IMAGE){
+ _log.debug("EXTERNAL_IMAGE -|- " + item.getType() + " itemId=" + item.getId());
+ ExternalImage image = (ExternalImage)item;
+ _log.debug("EXTERNAL_IMAGE Name= " + item.getName() + " Asking InputStream ..");
+ data = image.getData();
+ _log.debug("Got inputStream");
+ }
+ else if (imageItem.getFolderItemType()==FolderItemType.IMAGE_DOCUMENT){
+ ImageDocument image = (ImageDocument)item;
+ if (image.getMimeType().equals("image/tiff"))
+ data = image.getThumbnail();
+ else
+ data = image.getData();
+ }
+ if (data != null) {
+ _log.debug("Encoding image in base64");
+ byte[] imageBytes = IOUtils.toByteArray(data);
+ String extension = getImageExtension(imageItem);
+ String srcAttrValue = "data:image/"+extension+";base64,"+DatatypeConverter.printBase64Binary(imageBytes);
+ _log.debug("Encoded image=" + srcAttrValue);
+ return srcAttrValue;
+ }
+ return null;
+ }
+ else
+ return null;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
/**
*
* @param imageName the generated image name
@@ -769,7 +802,6 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
return sb.toString();
}
-
/**
*
* @param imageIDinBasket .
@@ -967,11 +999,9 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
public void saveReport(String folderid, String newname) {
Model model = readTemplateFromSession();
- //raplacing " " with _
_log.info("Serializing Model in folder: " + folderid );
-
_log.info("Trying to convert dynamic images ... ");
- importDynamicImagesFromHL(model);
+ convertDynamicImagesFromHL(model);
ServiceUtil myUtil = new ServiceUtil(getASLSession());
boolean result = myUtil.writeModel(model, "CURRENT_OPEN", getVreName(), getUsername());
@@ -1441,7 +1471,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
model = (Model) session.getAttribute(CURRENT_REPORT_INSTANCE);
_log.debug("Trying to convert dynamic images ... ");
- importDynamicImagesFromHL(model);
+ convertDynamicImagesFromHL(model);
boolean result = myUtil.writeModel(model, "CURRENT_OPEN", getVreName(), getUsername());