package gr.ntua.ivml.athena.actions;
import gr.ntua.ivml.athena.db.DB;
import gr.ntua.ivml.athena.mapping.MappingSummary;
import gr.ntua.ivml.athena.persistent.Lock;
import gr.ntua.ivml.athena.persistent.Mapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
public class LockRelease extends GeneralAction implements
ServletRequestAware,ServletResponseAware{
private HttpServletRequest request;
private HttpServletResponse response;
protected final Logger log = Logger.getLogger(getClass());
private long lockId;
private long mapping;
public void setServletRequest(HttpServletRequest request){
this.request = request;
}
public HttpServletRequest getServletRequest(){
return request;
}
public void setServletResponse(HttpServletResponse response){
this.response = response;
}
public HttpServletResponse getServletResponse(){
return response;
}
public long getLockId() {
return lockId;
}
public void setLockId(long lockId) {
this.lockId = lockId;
}
public void setMapping(long mapping) {
this.mapping = mapping;
}
public long getMapping(){
return mapping;
}
@Action(value="LockRelease")
public String execute() throws Exception {
boolean res=false;
Mapping em=DB.getMappingDAO().findById(getMapping(), false);
if(em.getJsonString()!=null){
if(em.getJsonString().isEmpty()==false && (MappingSummary.getMissingMappings(em)==null || MappingSummary.getMissingMappings(em).size()==0)){
em.setFinished(true);
}
else{em.setFinished(false);}
}else{em.setFinished(false);}
DB.getMappingDAO().makePersistent(em);
DB.commit();
Lock l=DB.getLockManager().getByDbID(getLockId());
res=DB.getLockManager().releaseLock(l);
return res+"";
}
}