Hi Stanislav,
Below is the java code, client side code and db structure.
public class LoadGridServlet extends ConnectorServlet
{
private static final long serialVersionUID = 1L;
private String jsonString;
private String gridType;
// Dynamic Load record count
private int dynamicLoadRowCount=0;
public synchronized int getDynamicLoadRowCount()
{
return dynamicLoadRowCount;
}
public synchronized void setDynamicLoadRowCount(int dynamicLoadRowCount)
{
this.dynamicLoadRowCount = dynamicLoadRowCount;
}
public synchronized String getGridType()
{
return gridType;
}
public synchronized void setGridType(String gridType)
{
this.gridType = gridType;
}
public synchronized String getJsonString()
{
return jsonString;
}
public synchronized void setJsonString(String jsonString)
{
this.jsonString = jsonString;
}
protected void configure()
{
IDAOFactory daoFactory = null;
IConnectionManager conMgnr = null;
try
{
AbstractGridImpl abstractGridobj = getImplObj();
String appName = CommonServiceLocator.getInstance().getAppName();
daoFactory = DAOConfigFactory.getInstance().getDAOFactory(appName);
conMgnr = daoFactory.getJDBCDAO().getConnectionManager();
GridConnector connector = new GridConnector(conMgnr.getConnection(), DBType.Oracle);
connector.event.attach(abstractGridobj);
BaseConnector options = new OptionsConnector(conMgnr.getConnection(), DBType.Oracle);
options.enable_log("c:\\logs\\option.txt", true);
options.render_sql("select DISTINCT csp.SHORT_TITLE as value, csp.SHORT_TITLE as label from CATISSUE_SPECIMEN_PROTOCOL csp","csp.IDENTIFIER","csp.SHORT_TITLE(value),csp.SHORT_TITLE(label)");
connector.set_options("CS.SHORT_TITLE(TITLE)", options);
connector.render_sql( "SELECT ED.IDENTIFIER AS IDENTIFIER, CS.SHORT_TITLE AS TITLE, FORM_ID, to_char(STUDYSTARTDATE,'MM/DD/YYYY') as STUDYSTARTDATE,to_char(STUDYENDDATE,'MM/DD/YYYY') as STUDYENDDATE,FILETYPE,CU.LAST_NAME||', '||CU.FIRST_NAME AS USERNAME,to_char(JOBSTARTTIME,'MM/DD/YYYY HH24:MI') as JOBSTARTTIME ,STATUS from EXPORT_DATA_DETAILS ED,CATISSUE_SPECIMEN_PROTOCOL CS,CATISSUE_USER CU WHERE CS.IDENTIFIER=ED.CS_ID AND CU.IDENTIFIER=ED.USER_IDENTIFIER Order By ED.IDENTIFIER DESC", "IDENTIFIER", "STATUS,CS.SHORT_TITLE (TITLE),FORM_ID,FILETYPE,JOBSTARTTIME,STUDYSTARTDATE,STUDYENDDATE,USERNAME");
if (dynamicLoadRowCount != 0)
{
connector.dynamic_loading(dynamicLoadRowCount);
}
}
catch (Exception ex)
{
Logger.getLogger(LoadGridServlet.class).error(ex.getMessage(), ex);
}
finally
{
try
{
conMgnr.closeConnection();
}
catch (DAOException e)
{
Logger.getLogger(LoadGridServlet.class).error(e.getMessage(), e);
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,
IOException
{
setJsonString(req.getParameter("paramJson"));
setGridType(req.getParameter("gridType"));
if (req.getParameter("dynamicLoadRowCount") != null)
{
setDynamicLoadRowCount(Integer.parseInt(req.getParameter("dynamicLoadRowCount")));
}
super.doGet(req, res);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,
IOException
{
setJsonString(req.getParameter("paramJson"));
setGridType(req.getParameter("gridType"));
super.doGet(req, res);
}
/**
*
* @return
* @throws IOException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws ClassNotFoundException
*/
protected AbstractGridImpl getImplObj() throws IOException, InstantiationException,
IllegalAccessException, ClassNotFoundException
{
InputStream inputStream = LoadGridServlet.class.getClassLoader().getResourceAsStream(
Constants.GRID_SETUP_PROP_FILE);
Properties props = new Properties();
props.load(inputStream);
String className = props.getProperty(gridType);
AbstractGridImpl abstractGridobj = (AbstractGridImpl) Class.forName(className)
.newInstance();
return abstractGridobj;
}
}
javascript functions
function getExportDataGrid(userId,isAdmin){
mygrid = new dhtmlXGridObject('downloadDataDetails');
mygrid.setImagePath("dhtmlx_suite/imgs/");
mygrid.setHeader("Actions,Clinical Study,Study Form,File Type,Exported On,Encounter Start Date,Encounter End Date,Exported By");
mygrid.setInitWidths("70,100,*,70,130,100,100,150");
mygrid.setEditable(false);
mygrid.setColAlign("left,left,left,center,center,center,center,left");
mygrid.setSkin("dhx_skyblue");
mygrid.enablePaging(true, 15, 5, "exportData_PagingArea", true, "infoArea");
mygrid.setPagingSkin("bricks");
mygrid.attachHeader("#connector_text_filter,#connector_select_filter,,#connector_select_filter,,,,");
mygrid.init();
var paramsArr = {
userId : userId,
isAdmin : isAdmin
};
var gridQString = "LoadGridServlet?gridType=exportdata&dynamicLoadRowCount=15¶mJson="
+ createJsonOnjectForGrid(paramsArr);
mygrid.loadXML(gridQString + "&connector=true",hideDownloadImage());
// mygrid.load(gridQString,function(){getSavedFiltersResponse();});
mygrid.attachEvent("onPageChanged", function(ind,fInd,lInd){firstInd= fInd;lastInd= lInd;});//explain usage of the indices
}
DB Schema
CREATE TABLE “EXPORT_DATA_DETAILS”
( “IDENTIFIER” NUMBER,
“USER_IDENTIFIER” NUMBER,
“CS_ID” NUMBER,
“STUDYSTARTDATE” DATE,
“STUDYENDDATE” DATE,
“FILENAME” VARCHAR2(640 BYTE),
“JOBSTARTTIME” TIMESTAMP (6),
“JOBENDTIME” TIMESTAMP (6),
“FILETYPE” VARCHAR2(10 BYTE),
“STATUS” VARCHAR2(30 BYTE),
“ERRORMESSAGE” VARCHAR2(1024 BYTE),
“FILECONTENT” BLOB,
“TMP_ID” NUMBER(19,0),
“FORM_ID” CLOB,
PRIMARY KEY (“IDENTIFIER”)
) ;
CREATE TABLE “CATISSUE_SPECIMEN_PROTOCOL”
( “IDENTIFIER” NUMBER(19,0) NOT NULL ENABLE,
“PRINCIPAL_INVESTIGATOR_ID” NUMBER(19,0),
“TITLE” VARCHAR2(255 BYTE) NOT NULL ENABLE,
“SHORT_TITLE” VARCHAR2(255 BYTE),
“IRB_IDENTIFIER” VARCHAR2(255 BYTE),
“START_DATE” DATE,
“END_DATE” DATE,
“ENROLLMENT” NUMBER(*,0),
“DESCRIPTION_URL” VARCHAR2(255 BYTE),
“ACTIVITY_STATUS” VARCHAR2(50 BYTE),
“PARTCIPNT_MATCH_WITHIN_CSCP” NUMBER(1,0),
“IS_EMPI_ENABLE” NUMBER(1,0),
“PPI_FORMAT” VARCHAR2(255 BYTE),
“IS_TO_GENERATE_PARTICIPANTCODE” NUMBER(1,0) DEFAULT 0,
“IS_TO_STORE_PHI” NUMBER(1,0) DEFAULT 0,
PRIMARY KEY (“IDENTIFIER”)
)
CREATE TABLE “CATISSUE_USER”
( “IDENTIFIER” NUMBER(19,0) NOT NULL ENABLE,
“EMAIL_ADDRESS” VARCHAR2(255 BYTE),
“FIRST_NAME” VARCHAR2(255 BYTE),
“LAST_NAME” VARCHAR2(255 BYTE),
“LOGIN_NAME” VARCHAR2(255 BYTE) NOT NULL ENABLE,
“START_DATE” DATE,
“ACTIVITY_STATUS” VARCHAR2(50 BYTE),
“DEPARTMENT_ID” NUMBER(19,0),
“CANCER_RESEARCH_GROUP_ID” NUMBER(19,0),
“INSTITUTION_ID” NUMBER(19,0),
“ADDRESS_ID” NUMBER(19,0),
“CSM_USER_ID” NUMBER(19,0),
“STATUS_COMMENT” VARCHAR2(500 BYTE),
“FIRST_TIME_LOGIN” NUMBER(1,0) DEFAULT 1,
“IS_ADMIN” NUMBER(1,0) DEFAULT 0,
“WUSTLKEY” VARCHAR2(100 BYTE),
PRIMARY KEY (“IDENTIFIER”)
)
Thank you.