Commit 01a22843 authored by rtiwari's avatar rtiwari

EJB ADDED FOR DI3ISUN015


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@94094 ce508802-f39f-4f6c-b175-0d175dae99d5
parent e8137ad7
/**
* DEVELOP BY RITESH ON 02/JAN/14
* PURPOSE: ROAD PERMIT RECORDS GENERATION PROCESS (DI3ISUN015)
*/
package ibase.webitm.ejb.dis;
import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import javax.ejb.Stateless;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
// added for ejb3
@Stateless
public class RpermitGenIC extends ValidatorEJB implements RpermitGenICLocal,RpermitGenICRemote
{
public String itemChanged(String xmlString, String xmlString1,String xmlString2, String objContext, String currentColumn,String editFlag, String xtraParams) throws RemoteException,ITMException
{
System.out.println("@@@@@@@ itemChanged called");
Document dom = null;
Document dom1 = null;
Document dom2 = null;
String valueXmlString = "";
try
{
if (xmlString != null && xmlString.trim().length() > 0)
{
dom = parseString(xmlString);
}
if (xmlString1 != null && xmlString1.trim().length() > 0)
{
dom1 = parseString(xmlString1);
}
if (xmlString2 != null && xmlString2.trim().length() > 0)
{
dom2 = parseString(xmlString2);
}
valueXmlString = itemChanged(dom, dom1, dom2, objContext,
currentColumn, editFlag, xtraParams);
} catch (Exception e)
{
System.out.println("Exception :[itemChanged( String, String )] :==>\n"+ e.getMessage());
}
return valueXmlString;
}
public String itemChanged(Document dom, Document dom1, Document dom2,String objContext, String currentColumn, String editFlag,String xtraParams) throws RemoteException, ITMException
{
System.out.println("@@@@@@@ itemChanged called");
StringBuffer valueXmlString = new StringBuffer();
NodeList parentNodeList = null;
NodeList childNodeList = null;
Node parentNode = null;
Node childNode = null;
Node parentNode1 = null;
String childNodeName = null;
String sql = "";
String loginSite = "",stateCodeTo="",finEntity="";
int currentFormNo = 0;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
GenericUtility genericUtility = null;
ConnDriver connDriver = null;
try
{
genericUtility = GenericUtility.getInstance();
connDriver = new ConnDriver();
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
connDriver = null;
loginSite = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode");
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(genericUtility.getApplDateFormat());
String currDate = sdf.format(currentDate.getTime());
if (objContext != null && objContext.trim().length() > 0)
{
currentFormNo = Integer.parseInt(objContext.trim());
}
valueXmlString = new StringBuffer("<?xml version = \"1.0\"?> <Root> <header> <editFlag>");
valueXmlString.append(editFlag).append("</editFlag> </header>");
switch (currentFormNo)
{
case 1:
parentNodeList = dom.getElementsByTagName("Detail1");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
valueXmlString.append("<Detail1>");
//int childNodeListLength = childNodeList.getLength();
if (currentColumn.trim().equalsIgnoreCase("itm_default"))
{
System.out.println("::itm_default:: - ");
sql = " select fin_entity, state_code from site where site_code = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, loginSite);
rs = pstmt.executeQuery();
if(rs.next())
{
finEntity = rs.getString("fin_entity");
stateCodeTo = rs.getString("state_code");
}
if (pstmt != null)
pstmt.close();
pstmt = null;
if (rs != null)
rs.close();
rs = null;
valueXmlString.append("<fin_entity>").append("<![CDATA["+ finEntity +"]]>").append("</fin_entity>");
valueXmlString.append("<state_code__to>").append("<![CDATA["+ stateCodeTo +"]]>").append("</state_code__to>");
valueXmlString.append("<eff_date>").append("<![CDATA["+ currDate +"]]>").append("</eff_date>");
valueXmlString.append("<valid_upto>").append("<![CDATA["+ currDate +"]]>").append("</valid_upto>");
}
valueXmlString.append("</Detail1>");
}
valueXmlString.append("</Root>");
} catch (Exception e)
{
e.printStackTrace();
System.out.println("Exception ::" + e.getMessage());
throw new ITMException(e);
} finally
{
try
{
if (conn != null)
{
if (pstmt != null)
pstmt.close();
pstmt = null;
if (rs != null)
rs.close();
rs = null;
conn.close();
conn = null;
}
} catch (Exception d)
{
d.printStackTrace();
}
}
return valueXmlString.toString();
}
}
/********************************************************
Title : UnitConvICLocal
Date : 04/11/2011
Developer: Akhilesh Sikarwar
********************************************************/
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
import javax.ejb.Local;
@Local
public interface RpermitGenICLocal extends ValidatorLocal
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String xmlString2, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, Document dom2, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
/********************************************************
Title : UnitConvICRemote
Date : 04/11/2011
Developer: Akhilesh Sikarwar
********************************************************/
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
import org.w3c.dom.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.ITMException;
import javax.ejb.Remote; // added for ejb3
@Remote // added for ejb3
public interface RpermitGenICRemote extends ValidatorRemote
{
public String wfValData(String xmlString, String xmlString1, String xmlString2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String wfValData(Document dom, Document dom1, Document dom2, String objContext, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(String xmlString, String xmlString1, String xmlString2, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
public String itemChanged(Document dom, Document dom1, Document dom2, String objContext, String currentColumn, String editFlag, String xtraParams) throws RemoteException,ITMException;
}
/**
* DEVELOP BY RITESH ON 02/JAN/14
* PURPOSE: ROAD PERMIT RECORDS GENERATION PROCESS (DI3ISUN015)
*/
package ibase.webitm.ejb.dis;
import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ProcessEJB;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import org.w3c.dom.Document;
@Stateless
public class RpermitGenPrc extends ProcessEJB implements RpermitGenPrcLocal,RpermitGenPrcRemote
{
static
{
System.out.println("-- RpermitGenPrc compiled -- ");
}
public String process() throws RemoteException,ITMException
{
return "";
}
public String process(String xmlString, String xmlString2, String windowName, String xtraParams) throws RemoteException,ITMException
{
Document detailDom = null;
Document headerDom = null;
GenericUtility genericUtility = GenericUtility.getInstance();
String retStr = "";
try
{
System.out.println("xmlString[process]::::::::::;;;"+xmlString);
System.out.println("xmlString2[process]::::::::::;;;"+xmlString2);
System.out.println("windowName[process]::::::::::;;;"+windowName);
System.out.println("xtraParams[process]:::::::::;;;"+xtraParams);
}
catch(Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
try
{
if(xmlString != null && xmlString.trim().length()!=0)
{
headerDom = genericUtility.parseString(xmlString);
System.out.println("headerDom" + headerDom);
}
if(xmlString2 != null && xmlString2.trim().length()!=0)
{
detailDom = genericUtility.parseString(xmlString2);
System.out.println("detailDom" + detailDom);
}
retStr = process(headerDom, detailDom, windowName, xtraParams);
}
catch (Exception e)
{
System.out.println("Exception :WoTransferPrc :process(String xmlString, String xmlString2, String windowName, String xtraParams):" + e.getMessage() + ":");
e.printStackTrace();
}
return retStr;
}
public String process(Document dom, Document dom2, String windowName,String xtraParams) throws RemoteException, ITMException
{
System.out.println("RpermitGenPrc process called........");
String errString = "";
Connection conn = null;
ConnDriver connDriver = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ITMDBAccessEJB itmDBAccessEJB = null;
GenericUtility genericUtility = null;
String transmode="",validuptostr="",efffromstr="",stateCodeTo="";
String finEntity="",sql="",rpermitFr="",rpermitTo="",remarks="";
StringBuffer getter1 = new StringBuffer("");
StringBuffer pattern1 = new StringBuffer("");
StringBuffer getter2 = new StringBuffer("");
StringBuffer pattern2 = new StringBuffer("");
boolean flagTo = false,flagFr = false;;
HashMap hmap = null;
int countCharFr = 0,countCharTo = 0,cnt=0;
String numStr2="",numStr1="",comp1="",comp2="";
try
{
genericUtility = new GenericUtility();
itmDBAccessEJB = new ITMDBAccessEJB();
connDriver = new ConnDriver();
conn = connDriver.getConnectDB("DriverITM");
connDriver = null;
conn.setAutoCommit(false);
hmap = new HashMap();
finEntity = (checkNull(genericUtility.getColumnValue("fin_entity", dom))).trim();
rpermitFr = (checkNull(genericUtility.getColumnValue("road_permit__from", dom))).trim();
rpermitTo = (checkNull(genericUtility.getColumnValue("road_permit__to", dom))).trim();
stateCodeTo = (checkNull(genericUtility.getColumnValue("state_code__to", dom))).trim();
efffromstr = checkNull(genericUtility.getColumnValue("eff_date", dom));
validuptostr = checkNull(genericUtility.getColumnValue("valid_upto", dom));
transmode = checkNull(genericUtility.getColumnValue("trans_mode", dom));
remarks = checkNull(genericUtility.getColumnValue("remarks", dom));
hmap.put("finEntity", finEntity);
hmap.put("rpermitFr", rpermitFr);
hmap.put("rpermitTo", rpermitTo);
hmap.put("stateCodeTo", stateCodeTo);
hmap.put("efffromstr", efffromstr);
hmap.put("validuptostr", validuptostr);
hmap.put("transmode", transmode);
hmap.put("remarks", remarks);
if(finEntity ==null || finEntity.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPFINENT1 ","","",conn);
return errString;
}
if(finEntity != null && finEntity.trim().length() > 0)
{
sql = "select count(*) from finent where fin_entity = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, finEntity);
rs = pstmt.executeQuery();
if(rs.next())
{
cnt = rs.getInt(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if(cnt == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPFINENTIN ","","",conn);
return errString;
}
}
if(rpermitFr ==null || rpermitFr.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPRPERFR1 ","","",conn);
return errString;
}
if(rpermitTo ==null || rpermitTo.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPRPERTO1 ","","",conn);
return errString;
}
if(efffromstr ==null || efffromstr.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPEDATE1 ","","",conn);
return errString;
}
if(validuptostr ==null || validuptostr.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPVDATE1 ","","",conn);
return errString;
}
if(stateCodeTo ==null || stateCodeTo.trim().length() == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPSTATCD1 ","","",conn);
return errString;
}
if(stateCodeTo != null && stateCodeTo.trim().length() > 0)
{
sql = "select count(*) from state where state_code = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, stateCodeTo);
rs = pstmt.executeQuery();
if(rs.next())
{
cnt = rs.getInt(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if(cnt == 0)
{
errString = itmDBAccessEJB.getErrorString("","VPSTATCDIN","","",conn);
return errString;
}
}
if(rpermitFr.trim().length() > 0 && rpermitTo.trim().length() > 0)
{
for(int i= rpermitFr.length()-1; i >= 0; i--)
{
countCharFr ++;
if((rpermitFr.charAt(i) <= 57 && rpermitFr.charAt(i) >= 48) && flagFr == false)
{
getter1.append(rpermitFr.charAt(i));
}
else
{
flagFr = true;
pattern1.append(rpermitFr.charAt(i));
}
}
for(int i= rpermitTo.length()-1; i >= 0; i--)
{
countCharTo ++;
if((rpermitTo.charAt(i) <= 57 && rpermitTo.charAt(i) >= 48) && flagTo == false)
{
getter2.append(rpermitTo.charAt(i));
}
else
{
flagTo = true;
pattern2.append(rpermitTo.charAt(i));
}
}
comp1 = pattern1.reverse().toString();
comp2= pattern2.reverse().toString();
numStr1 = getter1.reverse().toString();
numStr2 = getter2.reverse().toString();
System.out.println("numStr1:"+numStr1+"numStr2:"+numStr2);
//if(!comp1.equals(comp2) || countCharTo!= countCharFr)
if(!comp1.equals(comp2))
{
errString = itmDBAccessEJB.getErrorString("","VPPATERN1 ","","",conn);
return errString;
}
else
{
hmap.put("pattern1", comp1);
hmap.put("pattern2", comp2);
hmap.put("getter1", numStr1);
hmap.put("getter2", numStr2);
}
}
if(errString == null || errString.trim().length() == 0)
{
System.out.println(" method calling ....");
errString = generateRPermit(hmap,xtraParams,conn);
}
if((errString != null ) && (errString.indexOf("Success") > -1))
{
conn.commit();
System.out.println("--process completed--");
errString = itmDBAccessEJB.getErrorString("","VPSUCC1 ","","",conn);
}
else if((errString != null ) && (errString.indexOf("VPRANGNT1") > -1))
{
conn.rollback();
System.out.println("--error in generate permit no.--");
errString = itmDBAccessEJB.getErrorString("","VPRANGNT1 ","","",conn);
}
else
{
conn.rollback();
System.out.println("--process not completed--");
errString = itmDBAccessEJB.getErrorString("","VTEPFAIL ","","",conn);
}
}
catch( Exception e)
{
try
{
conn.rollback();
}
catch (SQLException ex)
{
Logger.getLogger(RpermitGenPrc.class.getName()).log(Level.SEVERE, null, ex);
}
e.printStackTrace();
}
finally
{
try
{
if(errString != null && errString.trim().length() > 0)
{
if(errString.indexOf("VPSUCC1") > -1 )
{
conn.commit();
System.out.println("--transaction commited--");
}
else
{
conn.rollback();
System.out.println("--transaction rollback--");
}
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if( conn != null && ! conn.isClosed() )
{
conn.close();
conn = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
}
catch(Exception e)
{
System.out.println("Exception : "+e);e.printStackTrace();
throw new ITMException(e);
}
}
return errString;
}
private String generateRPermit(HashMap gmap,String xtraParams,Connection conn) throws RemoteException, ITMException
{
String userId = "";
String termId = "";
String chgTerm="",chgUser="";
String sql = "";
PreparedStatement pstmt = null;
ResultSet rs = null;
GenericUtility genericUtility = null;
String retString = null;
//String loginSite ="";
String tranmode="";
Timestamp currDate = null,effFrom=null,validUpto=null;
java.util.Date dateEffFr = null,dateValidUpTo=null;
int rpermitNoTo = 0,rpermitNoFr = 1;
int inRows=0,range= 0,num = 0,cnt=0;
String zeros="",numStr="",finEntity="",remarks="";
String stateCodeTo = "",rpermitFr="",rpermitTo="",pattern1="";
try
{
System.out.println("@@@@@@@ generateRPermit called::");
genericUtility = GenericUtility.getInstance();
SimpleDateFormat sdf1 = new SimpleDateFormat(genericUtility.getDBDateFormat());
dateEffFr = genericUtility.getDateObject((String)gmap.get("efffromstr"));
effFrom = java.sql.Timestamp.valueOf(sdf1.format(dateEffFr).toString() + " 00:00:00.0");
dateValidUpTo = genericUtility.getDateObject((String)gmap.get("validuptostr"));
validUpto = java.sql.Timestamp.valueOf(sdf1.format(dateValidUpTo).toString() + " 00:00:00.0");
currDate = java.sql.Timestamp.valueOf(sdf1.format(new java.util.Date()).toString() + " 00:00:00.0");
userId = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginCode"); System.out.println("--login code--"+userId);
chgTerm = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "termId"); System.out.println("--term id--"+termId);
chgUser = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"userId");System.out.println("--term id--"+termId);
//loginSite = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode");
rpermitFr = (String)gmap.get("getter1");
rpermitTo = (String)gmap.get("getter2");
pattern1 = (String)gmap.get("pattern1");
stateCodeTo = (String)gmap.get("stateCodeTo");
finEntity = (String)gmap.get("finEntity");
remarks = (String)gmap.get("remarks");
tranmode = (String)gmap.get("transmode");
//String pattern2 = (String)gmap.get("pattern2");
if(rpermitFr != null && rpermitFr.trim().length()>0)
rpermitNoFr = Integer.parseInt(rpermitFr);
if(rpermitTo != null && rpermitTo.trim().length()>0)
rpermitNoTo = Integer.parseInt(rpermitTo);
range = rpermitNoTo - rpermitNoFr;
System.out.println("rpermitNoFr::"+rpermitNoFr+"rpermitNoTo:"+rpermitNoTo);
for(int k = 0;k<= range;k++)
{
sql = "select COUNT(*) from roadpermit where RD_PERMIT_NO = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pattern1+rpermitFr);
rs = pstmt.executeQuery();
if(rs.next())
{
cnt = rs.getInt(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if(cnt > 0)
{
conn.rollback();
System.out.println("--transaction rollback--");
retString = "VPRANGNT1";
return retString;
}
sql = " Insert into roadpermit (RD_PERMIT_NO,DESCR,STAN_CODE__FROM,STAN_CODE__TO,PERMIT_DATE,EXPIRY_DATE, " +
" STATUS,CHG_DATE,CHG_USER,CHG_TERM,REMARKS,FIN_ENTITY,STATE_CODE__TO,tran_mode) values ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pattern1+rpermitFr);
pstmt.setString(2, "");
pstmt.setString(3, "");
pstmt.setString(4, "");
pstmt.setTimestamp(5, effFrom);
pstmt.setTimestamp(6, validUpto);
pstmt.setString(7, "O");
pstmt.setTimestamp(8, currDate);
pstmt.setString(9, chgUser);
pstmt.setString(10,chgTerm);
pstmt.setString(11,remarks);
pstmt.setString(12,finEntity);
pstmt.setString(13,stateCodeTo);
pstmt.setString(14,tranmode);
inRows = inRows+ pstmt.executeUpdate();
pstmt.close();
pstmt = null;
zeros="";
num = Integer.parseInt(rpermitFr);
num ++;
numStr = Integer.toString(num);
for(int i = 1; i <= rpermitFr.length() - numStr.length();i++)
{
zeros = zeros+0 ;
}
rpermitFr = zeros+num;
System.out.println(" result string "+rpermitFr);
}
System.out.println("No. Of Rows Inserted ::"+inRows);
if(inRows > 0)
{
retString = "Success";
}
}
catch(Exception e)
{
e.printStackTrace();
retString = e.getMessage();
throw new ITMException(e);
}
finally
{
try
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
}
catch(Exception e)
{
e.printStackTrace();
retString = e.getMessage();
throw new ITMException(e);
}
}
System.out.println("Returning Result [" + retString + "]");
return retString;
}
private String checkNull(String input)
{
if(input == null)
{
input = "";
}
return input;
}
}
\ No newline at end of file
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
//import javax.ejb.EJBObject;
import org.w3c.dom.*;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.ProcessLocal;
import javax.ejb.Local; // added for ejb3
@Local // added for ejb3
public interface RpermitGenPrcLocal extends ibase.webitm.ejb.ProcessLocal//, EJBObject
{
public String process() throws RemoteException,ITMException;
public String process(Document dom, Document dom2, String windowName, String xtraParams) throws RemoteException,ITMException;
public String process(String xmlString, String xmlString2, String windowName, String xtraParams) throws RemoteException,ITMException;
// public String getData(String xmlString, String xmlString2, String windowName, String xtraParams) throws RemoteException,ITMException;
// public String getData(Document dom, Document dom2, String windowNamem, String xtraParams) throws RemoteException,ITMException;
}
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
//import javax.ejb.EJBObject;
import org.w3c.dom.*;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.ProcessRemote;
import javax.ejb.Remote; // added for ejb3
@Remote // added for ejb3
public interface RpermitGenPrcRemote extends ibase.webitm.ejb.ProcessRemote//, EJBObject
{
public String process() throws RemoteException,ITMException;
public String process(Document dom, Document dom2, String windowName, String xtraParams) throws RemoteException,ITMException;
public String process(String xmlString, String xmlString2, String windowName, String xtraParams) throws RemoteException,ITMException;
// public String getData(String xmlString, String xmlString2, String windowName, String xtraParams) throws RemoteException,ITMException;
// public String getData(Document dom, Document dom2, String windowNamem, String xtraParams) throws RemoteException,ITMException;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment