diff --git a/pom.xml b/pom.xml
index d151d6e..347a794 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
org.gcube.portlets.user
databases-manager-portlet
war
- 1.2.0-SNAPSHOT
+ 1.3.0-SNAPSHOT
DatabasesResourceManagerPortlet
Databases Resource Manager Portlet
@@ -168,6 +168,12 @@
2.8.0
provided
+
+
+ org.gcube.portlets.user
+ uri-resolver-manager
+ [1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
+
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/ComputationOutput.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/ComputationOutput.java
index da4ab0d..1ab63de 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/ComputationOutput.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/ComputationOutput.java
@@ -6,10 +6,12 @@ public class ComputationOutput {
private LinkedHashMap mapValues;
private LinkedHashMap mapKeys;
+ private String urlFile;
public ComputationOutput() {
mapKeys = new LinkedHashMap();
mapValues = new LinkedHashMap();
+ urlFile="";
}
public void setMapValues(LinkedHashMap mapValues) {
@@ -27,4 +29,12 @@ public class ComputationOutput {
public LinkedHashMap getmapKeys() {
return mapKeys;
}
+
+ public void setUrlFile(String url){
+ this.urlFile=url;
+ }
+
+ public String getUrlFile(){
+ return this.urlFile;
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/SubmitQueryResultWithFileFromServlet.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/SubmitQueryResultWithFileFromServlet.java
index c05bd8d..c2b1a90 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/SubmitQueryResultWithFileFromServlet.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/SubmitQueryResultWithFileFromServlet.java
@@ -12,16 +12,27 @@ public class SubmitQueryResultWithFileFromServlet extends BaseModelData
private List attributes;
private String convertedQuery;
private String fileName;
+ private String urlFile;
public SubmitQueryResultWithFileFromServlet() {
}
+// public SubmitQueryResultWithFileFromServlet(List attributes,
+// String query, String fileName, String urlFile) {
+// set("attributes", attributes);
+// set("convertedQuery", query);
+// set("fileName", fileName);
+// set("urlFile", urlFile);
+//
+// }
+
public SubmitQueryResultWithFileFromServlet(List attributes,
- String query, String fileName) {
+ String query, String urlFile) {
set("attributes", attributes);
set("convertedQuery", query);
- set("fileName", fileName);
+// set("fileName", fileName);
+ set("urlFile", urlFile);
}
@@ -29,12 +40,16 @@ public class SubmitQueryResultWithFileFromServlet extends BaseModelData
return get("attributes");
}
- public String getFileName() {
- return get("fileName");
- }
+// public String getFileName() {
+// return get("fileName");
+// }
public String getConvertedQuery() {
return get("convertedQuery");
}
+
+ public String getUrlFile(){
+ return get("urlFile");
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
index 71babcf..d1ce3c3 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
@@ -997,9 +997,10 @@ public class GxtBorderLayoutPanel extends ContentPanel {
// listAttributes, dataQuery.getQuery());
// get path
- String fileName = obj.getFileName();
+// String fileName = obj.getFileName();
+ String urlFile = obj.getUrlFile();
parseSubmitQueryResult(form, dialogID,
- listAttributes, query, fileName, UID);
+ listAttributes, query, urlFile, UID);
}
@@ -1009,7 +1010,7 @@ public class GxtBorderLayoutPanel extends ContentPanel {
// start the parsing of the submit result in order to obtain a table
private void parseSubmitQueryResult(Dialog dialog, final int dialogID,
- final List listAttributes, String query, String fileName,
+ final List listAttributes, String query, final String urlFile,
final String UID) {
final Dialog form = dialog;
@@ -1278,8 +1279,8 @@ public class GxtBorderLayoutPanel extends ContentPanel {
});
// add the button to download the result
- final String urlFile = Window.Location.getProtocol() + "//"
- + Window.Location.getHost() + fileName;
+// final String urlFile = Window.Location.getProtocol() + "//"
+// + Window.Location.getHost() + fileName;
Button download = new Button("Download",
new SelectionListener() {
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java b/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
index 4850ed1..fc06002 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
@@ -72,6 +72,8 @@ import org.gcube.portlets.user.databasesmanager.server.util.SessionUtil;
import org.gcube.portlets.user.databasesmanager.shared.ConstantsPortlet;
import org.gcube.portlets.user.databasesmanager.shared.SessionExpiredException;
import org.gcube.portlets.user.databasesmanager.shared.StatisticalManagerException;
+import org.gcube.portlets.user.uriresolvermanager.UriResolverManager;
+
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
@@ -150,6 +152,10 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
} else {
cacheManager.addCache(DBCache);
logger.info("dbmanager-> cache added to the cacheManager");
+
+ logger.info("dbmanager-> ** SIZE OF THE MEMORY STORE: "+ DBCache.calculateInMemorySize());
+// logger.trace("dbmanager-> ** SIZE OF THE OFF HEAP"+ DBCache.calculateOffHeapSize());
+ logger.info("dbmanager-> ** SIZE OF THE DISK STORE SIZE: "+ DBCache.calculateOnDiskSize());
}
}
@@ -211,6 +217,9 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
// size.maxDepthExceededBehavior(MaxDepthExceededBehavior.ABORT);
// config.sizeOfPolicy(size);
DBCache = new Cache(config);
+
+
+
} catch (Exception e) {
// logger.error("dbmanager-> Error while starting the servlet. Failed to create the cache",
// e);
@@ -358,6 +367,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
if ((value == null) || (value.booleanValue() == false)) {
DataExchangedThroughQueue dataqueue = new DataExchangedThroughQueue(
scope);
+
queue.offer(dataqueue);
Thread t = new Thread(dataLoader);
t.start();
@@ -700,9 +710,12 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
// create data structure
ComputationOutput outputData = new ComputationOutput();
+ //file name
+ String FileName = "QueryResult"+"_" + System.currentTimeMillis() + ".csv";
+
// computation id
String computationId = startComputation(algorithmId,
- inputParameters, outputData, scope, UID);
+ inputParameters, outputData, scope, UID, FileName);
// get JobID
@@ -757,25 +770,32 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
// updateSubmitQueryResultMap(UID, output);
// remove job with the specified uid
removeJob(UID);
-
+ //TODO ** COMMENTED
// generate the file csv output
- String name = "SubmitQuery";
- String fileName = storeResultIntoCSVFile(output, name);
+// String name = "SubmitQuery";
+
+// String fileName = storeResultIntoCSVFile(output, name);
// get the web application path
- HttpServletRequest request = this
- .getThreadLocalRequest();
- String applicationPath = request.getContextPath();
- // logger.info("dbmanager-> Application Path: " +
- // applicationPath);
- String partialPathFile = applicationPath
- + "/computationResult/" + fileName;
+// HttpServletRequest request = this
+// .getThreadLocalRequest();
+// String applicationPath = request.getContextPath();
+// // logger.info("dbmanager-> Application Path: " +
+// // applicationPath);
+// String partialPathFile = applicationPath
+// + "/computationResult/" + fileName;
+
+
+ String urlFile=outputData.getUrlFile();
+// result = new SubmitQueryResultWithFileFromServlet(
+// listAttributes, convertedQuery, partialPathFile, urlFile);
result = new SubmitQueryResultWithFileFromServlet(
- listAttributes, convertedQuery, partialPathFile);
+ listAttributes, convertedQuery, urlFile);
// put the two data in cache
net.sf.ehcache.Element dataToCache = new net.sf.ehcache.Element(
keyData, result);
+
insertDataIntoCache(dataToCache);
// remove the header in order to parse only the result
@@ -783,6 +803,8 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
net.sf.ehcache.Element submitQueryResultToCache = new net.sf.ehcache.Element(
keySubmitQueryResult, output);
+ //TODO **TO DECOMMENT
+// updateListSubmitQueryResult(UID, output);
insertDataIntoCache(submitQueryResultToCache);
}
@@ -806,7 +828,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
if (!(e instanceof StatisticalManagerException)) {
// GWT can't serialize all exceptions
throw new Exception(
- "Error in server while loading data. Exception: " + e);
+ "Error in server while loading data.");
}
throw e;
} finally {
@@ -1381,6 +1403,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
if (value != null) {
result = (List) value;
+ logger.trace("dbmanager-> ** Data get from cache");
updateListSubmitQueryResult(UID, result);
// data = parseCVSString(result, listAttributes);
@@ -1404,6 +1427,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
//get the result bound to session
result = getSubmitQueryResult(UID);
+ logger.trace("dbmanager-> ** Data get from ASL session");
// logger.error("dbmanager-> Error in server while loading data. variable value null");
// throw new Exception("Error in server while loading data.");
@@ -1411,23 +1435,27 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
data = parseCVSString(result, listAttributes);
+ if(data!=null){
+ int start = config.getOffset();
+ int limit = data.size();
- int start = config.getOffset();
- int limit = data.size();
+ if (config.getLimit() > 0) {
+ limit = Math.min(start + config.getLimit(), limit);
+ }
- if (config.getLimit() > 0) {
- limit = Math.min(start + config.getLimit(), limit);
+ int totalNumber = data.size();
+ sublist = new ArrayList(data.subList(start, limit));
+ loadResult = new BasePagingLoadResult(sublist,
+ config.getOffset(), totalNumber);
+
+ // System.out.println("start: " + start);
+ // System.out.println("limit: " + limit);
+ // System.out.println("sublist size: " + sublist.size());
+ }else{
+ logger.error("dbmanager-> Error in server while loading data. object data null");
+ throw new Exception("Error in server while loading data.");
}
- int totalNumber = data.size();
- sublist = new ArrayList(data.subList(start, limit));
- loadResult = new BasePagingLoadResult(sublist,
- config.getOffset(), totalNumber);
-
- // System.out.println("start: " + start);
- // System.out.println("limit: " + limit);
- // System.out.println("sublist size: " + sublist.size());
-
} else {
logger.error("dbmanager-> Error in server while loading data. key null");
throw new Exception("Error in server while loading data.");
@@ -1752,12 +1780,12 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
List parameters, ComputationOutput outputData,
String scope) throws Exception {
return startComputation(algorithmName, parameters, outputData, scope,
- null);
+ null, null);
}
private String startComputation(String algorithmName,
List parameters, ComputationOutput outputData,
- String scopeValue, String jobID) throws Exception {
+ String scopeValue, String jobID, String FileName) throws Exception {
SMComputationConfig config = new SMComputationConfig();
SMInputEntry[] list = new SMInputEntry[parameters.size()];
@@ -1788,7 +1816,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
logger.info("dbmanager-> startComputation: the computation has started!");
while (percentage < 100) {
percentage = checkComputationStatus(scope, computationId,
- username, outputData);
+ username, outputData, FileName);
Thread.sleep(3000);
}
logger.info("dbmanager-> startComputation: the computation has finished!");
@@ -1805,7 +1833,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
private float checkComputationStatus(String scope, String computationId,
- String user, ComputationOutput outputData) throws Exception {
+ String user, ComputationOutput outputData, String FileName) throws Exception {
// System.out.println("checkComputation " + computationId);
ScopeProvider.instance.set(scope);
@@ -1836,7 +1864,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
int resourceTypeIndex = smResource.resourceType();
SMResourceType smResType = SMResourceType.values()[resourceTypeIndex];
- displayOutput(smResource, smResType, outputData);
+ displayOutput(smResource, smResType, outputData, scope, FileName);
// print check
// logger.info("SM resource Name: " + smResource.name());
@@ -1851,7 +1879,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
private void displayOutput(SMResource smResource, SMResourceType smResType,
- ComputationOutput outputData) throws Exception {
+ ComputationOutput outputData, String scope, String FileName) throws Exception {
if (smResType.equals(SMResourceType.OBJECT)) {
// switch (smResType) {
@@ -1863,7 +1891,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
SMObject objRes = (SMObject) smResource;
if (objRes.name().contentEquals(PrimitiveTypes.MAP.toString())) {
logger.info("dbmanager-> Output is a map");
- getMap(objRes, outputData);
+ getMap(objRes, outputData, scope, FileName);
} else if (objRes.name().contentEquals(
PrimitiveTypes.IMAGES.toString())) {
@@ -1885,14 +1913,14 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
// get output result
- private void getMap(SMObject objRes, ComputationOutput outputData)
+ private void getMap(SMObject objRes, ComputationOutput outputData, String scope, String FileName)
throws Exception {
// output data values
LinkedHashMap mapValues = new LinkedHashMap();
// output data keys
LinkedHashMap mapKeys = new LinkedHashMap();
- // logger.info("getStorageInputStream - started");
+// logger.info("**getStorageInputStream - started");
InputStream is = getStorageClientInputStream(objRes.url());
// object serializer
XStream xstream = new XStream();
@@ -1914,11 +1942,41 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
Map smMap = (Map) (xstream
.fromXML(is));
is.close();
- // logger.info("getStorageInputStream - finished");
+// logger.info("**getStorageInputStream - finished");
- // logger.info("build the resultMap - started");
+// logger.info("**build the resultMap - started");
+
int i = 0;
for (String key : smMap.keySet()) {
+
+ if (key.equals("File")){
+ logger.info("dbmanager-> " + "the map contains file");
+ SMResource smres = smMap.get("File");
+ int resourceTypeIndex = smres.resourceType();
+ SMResourceType smsubResType = SMResourceType.values()[resourceTypeIndex];
+
+// logger.info("dbmanager-> Output is a file");
+ SMFile fileRes = (SMFile) smres;
+// logger.info("dbmanager-> **FILE URL " + fileRes.url());
+// logger.info("dbmanager-> **FILE MIMETYPE " + fileRes.mimeType());
+
+ ScopeProvider.instance.set(scope);
+ UriResolverManager resolver = new UriResolverManager("SMP");
+ Map params = new HashMap();
+ params.put("smp-uri", fileRes.url());
+ params.put("fileName", FileName);
+ params.put("contentType", "text/plain");
+
+ String shortLink = resolver.getLink(params, true);
+ if ((shortLink!=null)&&(!shortLink.equals(""))){
+ outputData.setUrlFile(shortLink);
+ logger.info("dbmanager-> Http link of the generated File: " + shortLink);
+ }else{
+ logger.error("dbmanager-> Error in server while generating the file. Http link null");
+ throw new Exception("Error in server while generating the file.");
+ }
+
+ } else{
// add key value
mapKeys.put(String.valueOf(i), key);
SMResource smres = smMap.get(key);
@@ -1934,10 +1992,11 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
mapValues.put(String.valueOf(i), outstring);
i++;
}
+ }
}
outputData.setMapValues(mapValues);
outputData.setmapKeys(mapKeys);
- // logger.info("build the resultMap - finished");
+// logger.info("**build the resultMap - finished");
}
private InputStream getStorageClientInputStream(String url)
@@ -2076,6 +2135,10 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
if (DBCache.getStatus().toString().equals(Status.STATUS_ALIVE.toString())){
DBCache.put(data);
logger.trace("dbmanager-> element with key: " + data.getKey().toString()+" added in cache");
+
+ logger.info("dbmanager-> ** SIZE OF THE MEMORY STORE: "+ DBCache.calculateInMemorySize());
+// logger.trace("dbmanager-> ** SIZE OF THE OFF HEAP"+ DBCache.calculateOffHeapSize());
+ logger.info("dbmanager-> ** SIZE OF THE DISK STORE SIZE: "+ DBCache.calculateOnDiskSize());
}
}
}
@@ -2767,7 +2830,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
}
//TODO ****TO REMOVE
if (outputParameters!=null){
- logger.info("dbmanager-> ***print output ");
+// logger.info("dbmanager-> ***print output ");
Set keys = outputParameters.keySet();
Object[] array = keys.toArray();