81: Allow the creation and use of expressions on multi column in TDM portlet

Task-Url: https://support.d4science.org/issues/81

Updated apply rule on table

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-gwt-service@115078 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2015-05-27 16:36:01 +00:00
parent 162662e6ee
commit 37e88a0598
4 changed files with 171 additions and 0 deletions

View File

@ -120,5 +120,8 @@ public class SessionConstants {
public static final String RULES_ON_COLUMN_APPLY_AND_DETACH_SESSION = "RULES_ON_COLUMN_APPLY_AND_DETACH_SESSION";
public static final String RULES_ON_COLUMN_DETACH_SESSION = "RULES_ON_COLUMN_DETACH_SESSION";
public static final String RULES_ON_TABLE_APPLY_SESSION = "RULES_ON_TABLE_APPLY_SESSION";
}

View File

@ -31,6 +31,7 @@ import org.gcube.portlets.user.td.gwtservice.shared.history.RollBackSession;
import org.gcube.portlets.user.td.gwtservice.shared.json.JSONExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.map.MapCreationSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyAndDetachColumnRulesSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyTableRuleSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.DetachColumnRulesSession;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXImportSession;
@ -90,6 +91,7 @@ public class SessionUtil {
if (username == null) {
logger.warn("no user found in session, use test user");
throw new TDGWTSessionExpiredException("Session Expired!");
/*
// Remove comment for Test
username = Constants.DEFAULT_USER;
@ -1123,6 +1125,38 @@ public class SessionUtil {
}
//
public static ApplyTableRuleSession getApplyTableRuleSession(
HttpSession httpSession) {
ApplyTableRuleSession applyTableRuleSession = (ApplyTableRuleSession) httpSession
.getAttribute(SessionConstants.RULES_ON_TABLE_APPLY_SESSION);
if (applyTableRuleSession != null) {
return applyTableRuleSession;
} else {
applyTableRuleSession = new ApplyTableRuleSession();
httpSession.setAttribute(
SessionConstants.RULES_ON_TABLE_APPLY_SESSION,
applyTableRuleSession);
return applyTableRuleSession;
}
}
public static void setApplyTableRuleSession(
HttpSession httpSession,
ApplyTableRuleSession applyTableRuleSession) {
ApplyTableRuleSession atrs = (ApplyTableRuleSession) httpSession
.getAttribute(SessionConstants.RULES_ON_TABLE_APPLY_SESSION);
if (atrs != null) {
httpSession
.removeAttribute(SessionConstants.RULES_ON_TABLE_APPLY_SESSION);
}
httpSession.setAttribute(
SessionConstants.RULES_ON_TABLE_APPLY_SESSION,
applyTableRuleSession);
}
//
public static DetachColumnRulesSession getDetachColumnRulesSession(
HttpSession httpSession) {

View File

@ -196,6 +196,7 @@ import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorCreator;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyAndDetachColumnRulesSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyTableRuleSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.DetachColumnRulesSession;
import org.gcube.portlets.user.td.gwtservice.shared.rule.description.RuleDescriptionData;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
@ -9559,6 +9560,72 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements
}
}
/**
*
* @param applyTableRuleSession
* @param session
* @return
* @throws TDGWTServiceException
*/
public String startApplyTableRule(
ApplyTableRuleSession applyTableRuleSession,
HttpSession session) throws TDGWTServiceException {
try {
// HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getAslSession(session);
SessionUtil.setApplyTableRuleSession(session,
applyTableRuleSession);
if (applyTableRuleSession == null) {
logger.error("Apply Table Rule Session is null");
throw new TDGWTServiceException(
"Error in apply rule on table: ApplyTableRuleSession is null");
}
AuthorizationProvider.instance.set(new AuthorizationToken(
aslSession.getUsername(), aslSession.getScope()));
TabularDataService service = TabularDataServiceFactory.getService();
checkTRId(applyTableRuleSession.getTrId());
TabularResourceId tabularResourceId = new TabularResourceId(
Long.valueOf(applyTableRuleSession.getTrId()
.getId()));
TabularResource tabularResource = service
.getTabularResource(tabularResourceId);
checkTabularResourceIsFlow(tabularResource);
checkTabularResourceLocked(tabularResource);
checkTabularResourceIsFinal(tabularResource);
//TODO
Task trTask = null;
//service.applyTableRule(tabularResourceId,....);
//logger.debug("Rules On Table Apply: TaskId " + trTask.getId());
TaskWrapper taskWrapper = new TaskWrapper(trTask,
UIOperationsId.RuleOnColumnApply,
applyTableRuleSession.getTrId());
SessionUtil.setStartedTask(session, taskWrapper);
return null;
//return trTask.getId().getValue();
} catch (TDGWTServiceException e) {
throw e;
} catch (SecurityException e) {
e.printStackTrace();
throw new TDGWTServiceException(SECURITY_EXCEPTION_RIGHTS);
} catch (Throwable e) {
e.printStackTrace();
throw new TDGWTServiceException("Error in apply rules on table: "
+ e.getLocalizedMessage());
}
}
/**
*

View File

@ -0,0 +1,67 @@
package org.gcube.portlets.user.td.gwtservice.shared.rule;
import java.io.Serializable;
import java.util.HashMap;
import org.gcube.portlets.user.td.gwtservice.shared.rule.description.RuleDescriptionData;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
/**
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ApplyTableRuleSession implements Serializable {
private static final long serialVersionUID = -1922171869337643740L;
private TRId trId;
private RuleDescriptionData ruleDescriptionData;
private HashMap<String, String> placeHolderToColumnMap;
public ApplyTableRuleSession() {
super();
}
public ApplyTableRuleSession(TRId trId,
RuleDescriptionData ruleDescriptionData,
HashMap<String, String> placeHolderToColumnMap) {
super();
this.trId = trId;
this.ruleDescriptionData = ruleDescriptionData;
this.placeHolderToColumnMap = placeHolderToColumnMap;
}
public TRId getTrId() {
return trId;
}
public void setTrId(TRId trId) {
this.trId = trId;
}
public RuleDescriptionData getRuleDescriptionData() {
return ruleDescriptionData;
}
public void setRuleDescriptionData(RuleDescriptionData ruleDescriptionData) {
this.ruleDescriptionData = ruleDescriptionData;
}
public HashMap<String, String> getPlaceHolderToColumnMap() {
return placeHolderToColumnMap;
}
public void setPlaceHolderToColumnMap(
HashMap<String, String> placeHolderToColumnMap) {
this.placeHolderToColumnMap = placeHolderToColumnMap;
}
@Override
public String toString() {
return "ApplyTableRuleSession [trId=" + trId + ", ruleDescriptionData="
+ ruleDescriptionData + ", placeHolderToColumnMap="
+ placeHolderToColumnMap + "]";
}
}