import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import com.zucchetti.sitepainter.SPPrxycizer; @com.zucchetti.sitepainter.EntityRoles({}) public class postin_user extends SPServlet implements SPInvokable { public static String m_cEntityUid = "!*3a05248c*!"; static public class ServletStatus extends SPMasterServletStatus { ServletStatus() { m_cAllVirtNames = "postit"; } public String w_code; public void BuildLastWhereFromPK() { if (CPLib.Empty(m_cLastWhere)) { m_cLastWhere = m_cLastWhere+CPLib.BuildLastWhereFromPK(w_code,context,"postit","code","C",10,0,( ! (CPLib.Empty(m_cLastWhere))?" and ":"")); } } void FillParameters() { m_Parameters = source.GetParametersProperties(); m_cWv = (CPLib.gt(m_Parameters.size(),0)?"_not_empty_":""); } public void MergeCallerVars(SPParameterSource source) { } public void WriteSenderFormPKVars() { ServletStatus status = this; if (CPLib.eq(m_cClientMode,"query") || CPLib.eq(m_cClientMode,"view")) { status.out.println( "" + ""); } } } public void doProcess(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { // Inizializzazione delle variabili della classe globale di stato ServletStatus status = new ServletStatus(); status.containing = this; SPParameterSource source = SPLib.GetSource(request); // Controlla lo stato di login e la sicurezza associata alla procedura if ( ! (EnterServlet(status,source,request,response))) { return; } boolean requiredPwd; requiredPwd = (CPLib.eq(status.m_cAction,"delete")?false:false); boolean requiredOTP; requiredOTP = (CPLib.eq(status.m_cAction,"delete")?false:false); int accessType; accessType = (requiredOTP?3:((requiredPwd?2:SPLib.AccessType((CPLib.eq(status.m_cAction,"delete")?"delete":"access"),entityGlobals.name)))); if ( ! (CheckAccessSecurity(status,(CPLib.eq(accessType,3)?"OTP":(CPLib.eq(accessType,2)?"password":""))))) { RequestPwdOrOTP(status,(CPLib.eq(accessType,3)?"OTP":"password")); return; } // Ora esegue l' operazione richiesta da m_cAction postin_userBO BO; BO = getBO(status); BO.m_bSkipCheckOTPSecurity = false; status.m_cVirtName = BO.m_cVirtName_postit; if (CPLib.eq(status.m_cAction,"start")) { status.m_cMode = ""; status.m_cClientMode = "query"; BO.Blank(); } else if (CPLib.eq(status.m_cAction,"query")) { Query(status,BO); LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"view")) { View(status,BO); } else if (CPLib.eq(status.m_cAction,"first")) { MoveTo(status,1); LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"previous")) { MoveTo(status,status.m_nRecPos-1); LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"next")) { MoveTo(status,status.m_nRecPos+1); LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"last")) { MoveTo(status,status.m_nLastRec); LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"moveto")) { LoadCurrentRecord(status,BO); } else if (CPLib.eq(status.m_cAction,"edit")) { Edit(status,BO,source); } else if (CPLib.eq(status.m_cAction,"editload")) { EditLoad(status,BO,source); } else if (CPLib.eq(status.m_cAction,"write")) { Write(status,BO,source); } else if (CPLib.eq(status.m_cAction,"writeload")) { Write(status,BO,source); } else if (CPLib.eq(status.m_cAction,"new")) { New(status,BO,source); } else if (CPLib.eq(status.m_cAction,"save")) { Save(status,BO); } else if (CPLib.eq(status.m_cAction,"discard")) { Discard(status,BO); } else if (CPLib.eq(status.m_cAction,"delete")) { Delete(status,BO,source); } else if (CPLib.eq(status.m_cAction,"deletemessage")) { DeleteMessage(status,BO,source); } else if (CPLib.eq(status.m_cAction,"painter")) { Painter(status); } else if (CPLib.eq(status.m_cAction,"autozoom")) { OpenZoom(status,source); } else if (CPLib.eq(status.m_cAction,"zoom")) { OpenPSZoom(status,source); } // * --- Area Manuale = Do Action // * --- Fine Area Manuale // status.m_cClientMode: stato che deve assumere il client // status.m_bError: indica se si e' verificato un errore // status.m_bExit: indica se e' un punto di uscita // status.m_cAtExit: azione di uscita Forward localForward = Forward.Unforwarded; if ( ! (status.m_bExit) || CPLib.Empty(status.m_cAtExit)) { } else if (CPLib.eq(CPLib.Left(status.m_cAtExit,8),"workflow")) { ExitToWorkflow(status); } else if (CPLib.eq(CPLib.Left(status.m_cAtExit,8),"activity")) { ExitToActivity(status,BO); } else if (status.m_bError && CPLib.ne(status.m_cClientMode,"bringback")) { // Il programma da eseguire in uscita non sa come visualizzare l' errore, viene quindi lanciata la pagina di errore che poi eseguira' il programma di uscita status.m_cClientMode = "error"; } else if (status.m_bError) { } else if (CPLib.eq(status.m_cAtExit,"new")) { status.CleanInterfaceSettings(); New(status,BO,source); } else if (CPLib.eq(status.m_cAtExit,"edit")) { status.w_code = BO.w_code; BO.Initialize(); Edit(status,BO,source); } else if (CPLib.eq(status.m_cAtExit,"autozoom")) { // Si puo' proseguire con lo zoom OpenZoom(status,source); } else if (CPLib.eq(status.m_cAtExit,"close")) { // Si puo' proseguire con la chiusura della pagina corrente status.m_cClientMode = "close"; } else if (CPLib.eq(status.m_cAtExit,"close&reload")) { // Si puo' proseguire con la chiusura della pagina corrente e rinfrescare il chiamante status.m_bReload = true; status.m_cClientMode = "close"; } else { status.m_cAtExit = "workflow"+"\n"+"@END"+"\n"+status.m_cAtExit; ManageWorkflow(status,"@END"); } // ora interpreta la seconda parte del workflow (i vari set sull' oggetto reale) ExecuteWorkflowStartingScript(status,BO); // Ora manda la pagina di risposta NotifyEvent("Response start",status,BO); if (Forward.IsForwarded(status.forwardedto)) { SPLib.ForwardTo(status.forwardedto,servletContext,status.request,status.response); return; } SPLib.SetContentType(response); if ("get".equalsIgnoreCase(request.getMethod())) { SPLib.NoCache(response); } status.out = response.getWriter(); if (CPLib.eq(status.m_cClientMode,"error")) { WriteErrorPage(status); } else if (CPLib.eq(status.m_cClientMode,"close")) { WriteExitPage(BO,status,localForward); } else if (CPLib.eq(status.m_cClientMode,"bringback")) { BringBackPage(BO,status); } else if (CPLib.eq(status.m_cAction,"createportlet")) { CreatePortlet(status,BO); } else { WriteFormPage(BO,status); } } public String getEntityTitle() { return "Post-In"; } public SPEntityGlobals getEntityGlobals() { // Costanti globali dell' entita' SPEntityGlobals l_eg = new SPEntityGlobals(); l_eg.name = "postin_user"; l_eg.userName = getEntityTitle(); l_eg.m_nEntityWidth = 232; l_eg.m_nEntityHeight = 132; l_eg.isPublic = false; l_eg.canAccess = true; l_eg.canInsert = true; l_eg.canChange = true; l_eg.canDelete = true; l_eg.m_cStates = "[]"; l_eg.zoomableTables = new String[]{"postit"}; l_eg.zoneItems = new ZoneItem[]{new ZoneItem("page_1","PostIn","page"),new ZoneItem("page_2","MSG_POSTIT_OPTIONS","page")}; l_eg.securedBoxes = new String[][] {}; l_eg.securedTabs = new String[][] {}; l_eg.keyColumns = new String[]{"code"}; l_eg.items = new SPItem[]{ new SPItem("code","C",10,0, "hide","id"), new SPItem("postit","M",10,0, "edit","message"), new SPItem("scrivi_postit","C",500,0, "hide",""), new SPItem("textualpostit","M",10,0, "edit",""), new SPItem("usercode","N",4,0, "hide","user"), new SPItem("createdby","N",4,0, "hide","from user"), new SPItem("color","C",9,0, "edit",""), new SPItem("rgb","C",9,0, "edit",""), new SPItem("MultiCompS","M",10,0, "edit",""), new SPItem("status","C",3,0, "edit",""), new SPItem("datestart","T",14,0, "edit","MSG_POSTIT_SINCE"), new SPItem("datestop","T",14,0, "edit","MSG_POSTIT_TO"), new SPItem("color_sample","M",10,0, "edit","") }; l_eg.m_lHasHistorical = false; return l_eg; } ArrayList i_sidebarItems = null; public org.json.JSONArray getSidebarItems(int p_nPage) { if (CPLib.IsNull(i_sidebarItems)) { i_sidebarItems = InitializeSidebarItemsArray(2); org.json.JSONArray l_sidebarPageItems; } if (CPLib.ge(p_nPage,0) && CPLib.lt(p_nPage,i_sidebarItems.size())) { return i_sidebarItems.get(p_nPage); } else { return new org.json.JSONArray(); } } // m_layerGroups inizializzato dal primo accesso a FillLayerGroups org.json.JSONObject m_layerGroups = null; public void FillLayerGroups(CPMNTChild[] p_MNTs) { if (CPLib.IsNull(m_layerGroups)) { org.json.JSONObject l_layerGroups = null; l_layerGroups = new org.json.JSONObject("{}"); if ( ! (CPLib.IsNull(p_MNTs))) { CPLib.AppendFoundlingChildOnLayerGroup(p_MNTs,l_layerGroups); } m_layerGroups = l_layerGroups; } } public String GetLayerGroupHeader(String p_cGroupName,String p_cLayerName,String p_cLayerId,postin_userBO BO) { CPMNTChild[] l_MNTs = BO.m_MNTs; FillLayerGroups(l_MNTs); return GetGenericLayerGroupHeader(getLayerGroup(p_cGroupName),p_cLayerName,p_cLayerId,BO.m_Ctx,l_MNTs); } public org.json.JSONArray getLayerGroup(String group) { return m_layerGroups.getJSONArray(group); } org.json.JSONArray i_notifyItems = null; public org.json.JSONArray getNotifyItems() { if (CPLib.IsNull(i_notifyItems)) { i_notifyItems = new org.json.JSONArray(); } return i_notifyItems; } ArrayList i_contextmenu = null; public org.json.JSONArray getContextMenu(int p_nPage) { if (CPLib.IsNull(i_contextmenu)) { i_contextmenu = InitializeContextMenuArray(2); org.json.JSONArray l_contextmenuPageItems; } if (CPLib.ge(p_nPage,0) && CPLib.lt(p_nPage,i_contextmenu.size())) { return i_contextmenu.get(p_nPage); } else { return new org.json.JSONArray(); } } public String[][] JSTranslations(CPContext p_Context) { String[][] l_translations; l_translations=new String[][]{{"10898152712",p_Context.Translate("from user")}, {"11734680314",p_Context.Translate("MSG_POSTIT_TO")}, {"11785011051",p_Context.Translate("MSG_POSTIT_CLICK_COLOR")}, {"1705",p_Context.Translate("id")}, {"1809361341",p_Context.Translate("message")}, {"1925495360",p_Context.Translate("Post-In")}, {"494757",p_Context.Translate("user")}, {"812962054",p_Context.Translate("MSG_POSTIT_SINCE")}, {"922350922",p_Context.Translate("MSG_POSTIT_TEXT_TOOLTIP")}}; return l_translations; } void WriteStyles(postin_userBO BO,ServletStatus status) { if ( ! ( ! (CPLib.Empty(status.m_cAltInterface)))) { status.out.println( "" + ""); } if (CPLib.eq(status.m_cClientMode,"painter")) { status.out.println( "" + ""); } } void WriteMainForm(postin_userBO BO,ServletStatus status) { status.out.println( "
" + ""); status.out.println( "" + ""); status.out.println( "" + ""); status.out.println( "" + ""); status.out.println( "
" + " " + "
" + ""); if ( ! (CPLib.Empty(status.m_cAltInterface))) { status.request.setAttribute("com__zucchetti__sitepainter__altinterface__url",status.m_cAltInterface); status.request.setAttribute("com__zucchetti__sitepainter__altinterface__m_cEntityUid",m_cEntityUid); SPLib.Include(servletContext,status,status.m_cAltInterface); } else { WriteControls(BO,status); } status.out.println( "" + ""); PrintPwdOTPDiv(status,"postin_user",BO.m_bLoaded,(BO.m_bLoaded?false:false),(BO.m_bLoaded?false:false)); status.out.println( "
" + ""); } void WriteControls(postin_userBO BO,ServletStatus status) { WriteControls_p1(BO,status); WriteControls_p2(BO,status); PrintNotifyContent(status,getNotifyItems()); WriteExtendedTabs(BO.m_MNTs,BO.extendedFields,status,3); } void WriteControls_p1(postin_userBO BO,ServletStatus status) { status.out.println( "" + ""); } void WriteControls_p2(postin_userBO BO,ServletStatus status) { status.out.println( "" + ""); } void WriteControls_p1_b0(postin_userBO BO,ServletStatus status) { status.out.println( "
" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.out.println( "
" + ""); } void WriteControls_p2_b0(postin_userBO BO,ServletStatus status) { status.out.println( "
" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + "" + "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "
" + ""); } static void PrintState(postin_userBL BO,ServletStatus status) { PrintStateChildren(BO,status); PrintStateWorkVars(BO,status); } static void PrintStateChildren(postin_userBL BO,ServletStatus status) { PrintMNTState(status,BO,BO.m_MNTs); } static void PrintStateWorkVars(postin_userBL BO,ServletStatus status) { status.out.print("DeclareWVs("); status.out.print(SPLib.ToJSValue(BO.w_code,"C",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_postit,"M",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_usercode,"N",4,0)); status.out.print(","+SPLib.ToJSValue(BO.w_createdby,"N",4,0)); status.out.print(","+SPLib.ToJSValue(BO.w_status,"C",3,0)); status.out.print(","+SPLib.ToJSValue(BO.w_datestart,"T",14,0)); status.out.print(","+SPLib.ToJSValue(BO.w_datestop,"T",14,0)); status.out.print(","+SPLib.ToJSValue(BO.w_scrivi_postit,"C",500,0)); status.out.print(","+SPLib.ToJSValue(BO.w_textualpostit,"M",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_color,"C",9,0)); status.out.print(","+SPLib.ToJSValue(BO.w_rgb,"C",9,0)); status.out.print(","+SPLib.ToJSValue(BO.w_MultiCompS,"M",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_color_sample,"M",10,0)); if (CPLib.eq(status.m_cClientMode,"edit") || CPLib.eq(status.m_cClientMode,"new")) { status.out.print(","+"1"); } status.out.println(")"); if (CPLib.eq(status.m_cClientMode,"edit") || CPLib.eq(status.m_cClientMode,"new")) { status.out.println("m_bUpdated="+SPLib.ToJSValue(BO.m_bUpdated,"L",0,0)+";"); } } void WriteMainFormVarScript(postin_userBO BO,ServletStatus status) { status.out.println( "" + ""); } void WriteMainFormScript(postin_userBO BO,ServletStatus status) { status.out.println( "" + ""); } postin_userBO getBO(ServletStatus status) { postin_userBO BO = new postin_userBO(status.context); LoadExtensions(BO); return BO; } void LoadExtensions(postin_userBO BO) { XDCHolder xdc = CPLib.GetXDCHolder(SPLib.GetClassesPath(),new SPXDCReaderFactory(BO.m_Ctx.GetInstance()),BO.m_Ctx.GetInstance()); XDCTable t = xdc.GetXDCTable("postit",true); BO.extendedFields = CPExtenderLib.GetExtendedItemsFromTable(t); } public void NotifyEvent(String p_cEvent,ServletStatus status,postin_userBO BO) { super.NotifyEvent(p_cEvent,status,BO); if (CPLib.eq(p_cEvent,"New record")) { Calculation_LVEAFYAGZK(status,BO); } CPLib.NotifyEvent(p_cEvent,BO,BO.m_Ctx,BO.specificEventsHandlers,BO.allEventsHandlers); } void Calculation_LVEAFYAGZK(ServletStatus status,postin_userBO BO) { BO.w_code = status.source.GetParameter("code",""); postin_addwarnR l_oRoutine_postin_addwarn; l_oRoutine_postin_addwarn = postin_addwarnR.Make(status.context,BO); if ( ! (Forward.IsForwarded(status.forwardedto))) { status.forwardedto = l_oRoutine_postin_addwarn.Run(); if (Forward.IsForwarded(status.forwardedto)) { SPLib.ForwardTo(status.forwardedto,servletContext,status.request,status.response); } } } void WriteTableCombo(ServletStatus status,postin_userBO BO) { String l_cTmp; CPResultSet l_rsLoad=null; } CPResultSet QueryKeyCursor(postin_userBO BO,ServletStatus status) { String l_cServer = BO.m_cServer_postit; String l_cPhName = BO.m_cPhName_postit; // Creazione del cursore delle chiavi. Costruisce la frase SQL nella tabella // associata alla maschera selezionando solo i campi della chiave di ricerca che // soddisfa la clausola di "where" passata come parametro. Riceve altresė come // parametro la clausola di "order by". // * --- Area Manuale = BO - Query Key Set Init // * --- Fine Area Manuale int l_nIdx; CPResultSet l_rsKeys=null; if ( ! (CPLib.Empty(status.m_cLastWhere))) { String l_cLastWhere = status.m_cLastWhere; String l_cQueryFilter = postin_userBL.QueryFilter(status.context); if ( ! (CPLib.Empty(l_cQueryFilter))) { if ( ! (CPLib.Empty(l_cLastWhere))) { l_cLastWhere = "("+l_cLastWhere+") and"; } l_cLastWhere = l_cLastWhere+" ("+l_cQueryFilter+")"; } if (l_rsKeys!=null) l_rsKeys.Close(); l_rsKeys = status.context.GetSql().Query(l_cServer,CPSql.BuildSQLPhrase(" "+BO.m_cVirtName_postit+".code",CPLib.GetTablesWithAliases(l_cPhName,status.m_cAllVirtNames,status.context),l_cLastWhere,status.m_cLastOrderBy)); } else { l_rsKeys = new CPResultSet(); } l_nIdx = 1; while (CPLib.lt(l_nIdx,status.m_nRecPos) && ! (l_rsKeys.Eof())) { l_rsKeys.Next(); l_nIdx = l_nIdx+1; } // * --- Area Manuale = BO - Query Key Set End // * --- Fine Area Manuale return l_rsKeys; } CPResultSet QueryKeyCursor(SPMasterServletStatus status) { String l_cServer = status.context.GetServer("postit"); String l_cPhName = CPSql.ManipulateTablePhName("postit",l_cServer); // Creazione del cursore delle chiavi. Costruisce la frase SQL nella tabella // associata alla maschera selezionando solo i campi della chiave di ricerca che // soddisfa la clausola di "where" passata come parametro. Riceve altresė come // parametro la clausola di "order by". CPResultSet l_rsKeys=null; if ( ! (CPLib.Empty(status.m_cLastWhere))) { String l_cLastWhere = status.m_cLastWhere; if (l_rsKeys!=null) l_rsKeys.Close(); l_rsKeys = status.context.GetSql().Query(l_cServer,CPSql.BuildSQLPhrase(" "+l_cPhName+".code",CPLib.GetTablesWithAliases(l_cPhName,status.m_cAllVirtNames,status.context),l_cLastWhere,status.m_cLastOrderBy)); } return l_rsKeys; } void Query(ServletStatus status,postin_userBO BO) { if ( ! (CPLib.Empty(status.m_cLastWhere))) { CPResultSet l_rsCount=null; String l_cLastWhere = status.m_cLastWhere; String l_cQueryFilter = postin_userBL.QueryFilter(status.context); if ( ! (CPLib.Empty(l_cQueryFilter))) { if ( ! (CPLib.Empty(l_cLastWhere))) { l_cLastWhere = "("+l_cLastWhere+") and"; } l_cLastWhere = l_cLastWhere+" ("+l_cQueryFilter+")"; } if (l_rsCount!=null) l_rsCount.Close(); l_rsCount = BO.m_Sql.Query(BO.m_cServer_postit,CPSql.BuildSQLPhrase(" count(*) as reccount",CPLib.GetTablesWithAliases(BO.m_cPhName_postit,status.m_cAllVirtNames,BO.m_Ctx),l_cLastWhere,"")); try { status.m_nLastRec = l_rsCount.GetInt("reccount"); if (CPLib.eq(status.m_nLastRec,0)) { status.m_nRecPos = 0; } else { status.m_nRecPos = 1; } } finally { l_rsCount.Close(); } } else { status.m_nRecPos = 0; status.m_nLastRec = 0; } status.m_cMode = ""; } void View(ServletStatus status,postin_userBO BO) { String _m = status.m_cMode; if ( ! (BO.m_bLoaded)) { Query(status,BO); LoadCurrentRecord(status,BO); } if ( ! (status.m_bError) && ! (BO.m_bLoaded) && CPLib.ne(_m,"empty")) { status.m_cErrMsg = "MSG_RECORD_NOT_FOUND"; status.m_bError = true; status.m_bExit = true; if ( ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } } else { NotifyEvent("View",status,BO); } status.m_cClientMode = "view"; } void Edit(ServletStatus status,postin_userBO BO,SPParameterSource source) { BO.Load(status.w_code); if (BO.m_bLoaded && BO.CanEdit()) { NotifyEvent("Edit Started",status,BO); // A valle dela NotifyEvent imposto le variabili passate da hyperlink e simili if (SetPassedWorkVars(status,BO,source,entityGlobals.keyColumns)) { // Posso che m_cMode="hyperlink" status.m_cMode = "edit"; status.m_cClientMode = "edit"; } else { status.m_cClientMode = "error"; } } else { if (BO.m_bLoaded) { status.m_cErrMsg = (CPLib.Empty(BO.LastErrorMessage())?"":BO.LastErrorMessage()); } else { status.m_cErrMsg = "MSG_RECORD_NOT_FOUND"; } status.m_bError = true; status.m_bExit = true; status.m_cClientMode = "query"; if ( ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { status.m_bExit = true; // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } } if ( ! (CPLib.IsNull(source)) && source.Has("m_OnlyContext")) { status.m_cClientMode = "bringback"; } } void New(ServletStatus status,postin_userBO BO,SPParameterSource source) { BO.Initialize(); if (BO.CanAdd()) { NotifyEvent("New record",status,BO); // A valle della NotifyEvent imposto le variabili passate da hyperlink e simili if (CPLib.IsNull(source) || SetPassedWorkVars(status,BO,source)) { // Posso che m_cMode="hyperlink" status.m_cMode = "new"; status.m_cClientMode = "new"; } else { status.m_cClientMode = "error"; } } else { status.m_cErrMsg = BO.m_cLastMsgError; status.m_bError = true; status.m_bExit = true; status.m_cClientMode = "query"; if ( ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { status.m_bExit = true; // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } } if ( ! (CPLib.IsNull(source)) && source.Has("m_OnlyContext")) { status.m_cClientMode = "bringback"; } } void Write(ServletStatus status,postin_userBO BO,SPParameterSource source) { boolean l_bResult = false; String l_cTrsMsgErr = ""; boolean l_bTrsOk = true; String l_cTransMsgErr = ""; if (HasAllKeys(status,source)) { Edit(status,BO,source); } else if (CPLib.eq(status.m_cAction,"write")) { status.m_bError = true; status.m_cClientMode = "error"; status.m_cErrMsg = "MSG_WRITE_FAILED_FOR_KEY"; } if ( ! (BO.m_bLoaded) && CPLib.eq(status.m_cAction,"writeload")) { status.m_cErrMsg = ""; status.m_bError = false; New(status,BO,source); } if ( ! (status.m_bError)) { l_bResult = BO.CanSave(); l_bResult = l_bResult && BO.BRCanSave(); if (l_bResult) { BO.m_Sql.BeginTransaction(); l_bResult = BO.Save(true); l_cTrsMsgErr = BO.m_Sql.TransactionErrorMessage(); l_bTrsOk = BO.m_Sql.EndTransaction(); if (l_bResult && l_bTrsOk && BO.IsUpdated()) { if (BO.m_bLoaded) { BO.NotifyEvent("Record Updated"); } else { BO.NotifyEvent("Record Inserted"); } } } if (l_bTrsOk && l_bResult) { status.m_bExit = true; status.m_cClientMode = "query"; } else { status.m_bError = true; status.m_cClientMode = "error"; if ( ! (l_bTrsOk)) { // Gestione dell'errore di transazione if (CPLib.ne(l_cTrsMsgErr,"")) { status.m_cErrMsg = l_cTrsMsgErr; } } else if ( ! (l_bResult)) { CheckErrorToBrowser(BO.m_nLastError,BO.LastErrorMessage(),status); } } } // la write non ha parte visuale status.m_cClientMode = "bringback"; } void LoadCurrentRecord(ServletStatus status,postin_userBO BO) { // Dichiarazione del cursore locale del link CPResultSet l_rsKeys=null; l_rsKeys = QueryKeyCursor(BO,status); try { if (l_rsKeys.Eof()) { BO.Blank(); status.w_code = ""; } else { BO.w_code = l_rsKeys.GetString("code"); // Ottimizzazione: liberata connessione database prima di eseguire la Load l_rsKeys.Close(); BO.Load(); status.w_code = BO.w_code; } } finally { // In ogni evenienza bisogna liberare la connessione del database l_rsKeys.Close(); } status.m_cClientMode = "query"; if (BO.m_bLoaded && ! (BO.CanView())) { status.m_cErrMsg = BO.LastErrorMessage(); status.m_bError = true; status.m_bExit = true; if ( ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } } } void EditLoad(ServletStatus status,postin_userBO BO,SPParameterSource source) { Edit(status,BO,source); if ( ! (BO.m_bLoaded)) { status.m_cErrMsg = ""; status.m_bError = false; status.m_bExit = false; New(status,BO,source); } } void Delete(ServletStatus status,postin_userBO BO,SPParameterSource source) { boolean l_bResult = false; String l_cTrsMsgErr = ""; boolean l_bTrsOk = true; // alla fine del metodo controllo se devo rispondere a JSURL boolean l_bBringBack = CPLib.eq(status.m_cMode,"hyperlink"); if (HasAllKeys(status,source)) { BO.m_Sql.BeginTransaction(); // la funzione CanDelete viene gestita dal BO l_bResult = BO.Delete(status.w_code); l_cTrsMsgErr = BO.m_Sql.TransactionErrorMessage(); l_bTrsOk = BO.m_Sql.EndTransaction(); if (l_bResult && l_bTrsOk) { BO.NotifyEvent("Record Deleted"); status.m_bBODeleted = true; } status.m_cClientMode = "query"; if (l_bTrsOk) { if (CPLib.gt(status.m_nLastRec,1)) { if (CPLib.eq(status.m_nRecPos,status.m_nLastRec)) { status.m_nRecPos = status.m_nRecPos-1; } status.m_nLastRec = status.m_nLastRec-1; LoadCurrentRecord(status,BO); } else { status.m_nLastRec = 0; status.m_nRecPos = 0; BO.Blank(); } } else { status.m_bError = true; // Gestione dell'errore di transazione if (CPLib.ne(l_cTrsMsgErr,"")) { status.m_cErrMsg = l_cTrsMsgErr; } } status.m_bExit = true; } else { status.m_bError = true; status.m_cClientMode = "error"; status.m_cErrMsg = "MSG_DELETE_FAILED_FOR_KEY"; } if ( ! (l_bResult) && ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { status.m_bExit = true; // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } else if (l_bBringBack) { status.m_cClientMode = "bringback"; } } void DeleteMessage(ServletStatus status,postin_userBO BO,SPParameterSource source) { BO.Load(status.w_code); status.m_cBOWarnMessageDeleted = status.context.Translate("MSG_PROCEED_WITH_DELETE"); status.m_bExit = true; status.m_cClientMode = "bringback"; } void Save(ServletStatus status,postin_userBO BO) { boolean l_bResult = false; String l_cTrsMsgErr = ""; boolean l_bTrsOk = true; String l_cTransMsgErr = ""; BO.SetFromContext(status.m_cWv,status.m_Parameters); if (CheckVars(status,BO)) { if (( ! (BO.IsLoaded()) || status.CheckOP(BO.m_cOldCPCCCHK))) { l_bResult = BO.CanSave(); l_bResult = l_bResult && BO.BRCanSave(); if (l_bResult) { BO.m_Sql.BeginTransaction(); l_bResult = BO.Save(true); l_cTrsMsgErr = BO.m_Sql.TransactionErrorMessage(); l_bTrsOk = BO.m_Sql.EndTransaction(); if (l_bResult && l_bTrsOk && BO.IsUpdated()) { if (BO.m_bLoaded) { BO.NotifyEvent("Record Updated"); } else { BO.NotifyEvent("Record Inserted"); } } } } else { BO.m_cLastMsgError = "MSG_LOOK_INTO_COUNTERS"; BO.m_nLastError = 0; l_bResult = false; } } else { status.m_bError = true; status.m_bExit = true; status.m_cMode = "error"; BO.m_cLastMsgError = "MSG_ERROR_SAVING_CONFIG"; BO.m_nLastError = 0; l_bResult = false; } if (l_bTrsOk && l_bResult) { status.m_bExit = true; status.m_cOldKeysToRaiseParms = SPLib.ToJSValue("({code:"+SPLib.ToJSValue(BO.w_code,"C",10,0)+",action:"+SPLib.ToJSValue(status.m_cMode,"C",0,0)+"})","C",0,0); // valorizzazione dei placeholder del workflow: l'Initialize cancella i valori nel BO e solo in questo punto conosco i valori di campi in chiave sottoposti ad autonumber SetWorkflowPlaceholders(status,BO); if (CPLib.eq(status.m_cMode,"new")) { if (CPLib.ne(CPLib.Left(status.m_cAtExit,5),"close") && CPLib.ne(status.m_cAtExit,"edit")) { New(status,BO,null); } } else { status.m_cClientMode = "query"; } } else { status.m_bError = true; status.m_cClientMode = status.m_cMode; if ( ! (l_bTrsOk)) { // Gestione dell'errore di transazione if (CPLib.ne(l_cTrsMsgErr,"")) { status.m_cErrMsg = l_cTrsMsgErr; } } else if ( ! (l_bResult)) { CheckErrorToBrowser(BO.m_nLastError,BO.LastErrorMessage(),status); } if ( ! (CPLib.Empty(status.m_cAtExit)) && HasMarker(status,"@ERROR")) { status.m_bExit = true; // valorizzazione dei placeholder del workflow: qui e' gia' valorizzato status.m_cErrMsg SetWorkflowPlaceholders(status,BO); } } } void Discard(ServletStatus status,postin_userBO BO) { BO.SetFromContext(status.m_cWv,status.m_Parameters); if (CPLib.eq(status.m_cMode,"edit")) { NotifyEvent("Edit Aborted",status,BO); } // valorizzazione dei placeholder del workflow: la blank puo' cancellare i valori preesistenti SetWorkflowPlaceholders(status,BO); if (CPLib.eq(status.m_cMode,"new")) { NotifyEvent("New record aborted",status,BO); BO.Blank(); } else if (CPLib.eq(status.m_cMode,"edit") && CPLib.ne(CPLib.Left(status.m_cAtExit,5),"close") && CPLib.ne(status.m_cAtExit,"autozoom")) { LoadCurrentRecord(status,BO); } status.m_cClientMode = "query"; status.m_bExit = true; } void CreatePortlet(ServletStatus status,postin_userBO BO) { org.json.JSONArray items = new org.json.JSONArray(); org.json.JSONObject item = new org.json.JSONObject(); item.put("type","Form"); item.put("description",entityGlobals.userName); item.put("h",132); item.put("w",232); item.put("color","transparent"); item.put("form_type","false"); item.put("security","none"); item.put("sp_theme","false"); item.put("language","true"); org.json.JSONObject pageProp = null; org.json.JSONArray pagesProp = null; pagesProp = new org.json.JSONArray(); pageProp = new org.json.JSONObject("{\"h\":300,\"layer\":\"\",\"layout_steps_values\":{},\"title\":\"PostIn\",\"w\":400}"); pagesProp.put(pageProp); pageProp = new org.json.JSONObject("{\"h\":300,\"layer\":\"\",\"layout_steps_values\":{},\"title\":\"MSG_POSTIT_OPTIONS\",\"w\":400}"); pagesProp.put(pageProp); item.put("pagesProp",pagesProp); item.put("pages_names","PostIn,MSG_POSTIT_OPTIONS"); item.put("altInterfaceFor","postin_user"); items.put(item); String s; org.json.JSONObject ctrl = null; s = "{\"class_Css\":\"postInTextArea\",\"h\":125,\"name\":\"textualpostit\",\"page\":1,\"scroll\":true,\"spuid\":\"AXQOJKZPCB\",\"tabindex\":4,\"type\":\"Textbox\",\"typevar\":\"memo\",\"w\":225,\"x\":2,\"y\":2,\"zone\":\"pag1_1\",\"zonepath\":\"[1,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"checked_value\":\""+"'"+"W"+"'"+"\",\"h\":20,\"maxlength\":3,\"name\":\"status\",\"page\":2,\"spuid\":\"QHAFRTKOJS\",\"tabindex\":1,\"type\":\"Checkbox\",\"typevar\":\"character\",\"unchecked_value\":\""+"'"+"A"+"'"+"\",\"w\":22,\"x\":143,\"y\":21,\"zone\":\"pag2_1\",\"zonepath\":\"[2,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":18,\"name\":\"label_ZGDCTVATTU\",\"page\":2,\"spuid\":\"ZGDCTVATTU\",\"tabindex\":6,\"type\":\"Label\",\"value\":\"MSG_POSTIT_LINK\",\"w\":122,\"x\":16,\"y\":23,\"zone\":\"pag2_1\",\"zonepath\":\"[2,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"MSG_POSTIT_SINCE\",\"h\":22,\"maxlength\":19,\"name\":\"datestart\",\"page\":2,\"picker\":true,\"spuid\":\"AIFEBZGNZP\",\"tabindex\":2,\"type\":\"Textbox\",\"typevar\":\"datetime\",\"w\":117,\"x\":74,\"y\":84,\"zone\":\"pag2_2\",\"zonepath\":\"[2,2]\",\"zoom\":\"stdz\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":18,\"name\":\"label_IGAXWLZQBV\",\"page\":2,\"spuid\":\"IGAXWLZQBV\",\"tabindex\":8,\"type\":\"Label\",\"value\":\"MSG_POSTIT_SINCE\",\"w\":72,\"x\":0,\"y\":84,\"zone\":\"pag2_2\",\"zonepath\":\"[2,2]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"MSG_POSTIT_TO\",\"h\":22,\"maxlength\":19,\"name\":\"datestop\",\"page\":2,\"picker\":true,\"spuid\":\"GPUYALDNLH\",\"tabindex\":3,\"type\":\"Textbox\",\"typevar\":\"datetime\",\"w\":117,\"x\":74,\"y\":106,\"zone\":\"pag2_3\",\"zonepath\":\"[2,3]\",\"zoom\":\"stdz\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":18,\"name\":\"label_WTBKZVYTLX\",\"page\":2,\"spuid\":\"WTBKZVYTLX\",\"tabindex\":7,\"type\":\"Label\",\"value\":\"MSG_POSTIT_TO\",\"w\":24,\"x\":48,\"y\":108,\"zone\":\"pag2_3\",\"zonepath\":\"[2,3]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"h\":22,\"name\":\"color_sample\",\"page\":2,\"scroll\":true,\"spuid\":\"TINSZXUJXJ\",\"tabindex\":4,\"type\":\"Textbox\",\"typevar\":\"memo\",\"w\":24,\"x\":141,\"y\":134,\"zone\":\"pag2_4\",\"zonepath\":\"[2,4]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":18,\"name\":\"label_HUWCVWEWXR\",\"page\":2,\"spuid\":\"HUWCVWEWXR\",\"tabindex\":5,\"type\":\"Label\",\"value\":\"MSG_POSTIT_BCKG\",\"w\":137,\"x\":1,\"y\":139,\"zone\":\"pag2_4\",\"zonepath\":\"[2,4]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); CPLib.addExtFieldsToJson(items,BO.extendedFields); SPLib.SetMimeType(status.response,"application/json"); items.write(status.out); } void WriteFormPage(postin_userBO BO,ServletStatus status) { status.themeWriter = new SPTheme(status.out,status.GetThemeStatus("",status.context.Translate(entityGlobals.userName),status.context.Translate("MSG_FORM_FUNCTION_"+status.m_cClientMode.toUpperCase())),"form"); status.out.println( "" + ""); status.out.println( "" + ""); status.out.println( "" + ""); status.WriteSkinnedCss(); status.out.println( "" + ""); WriteMetaTags(status); String l_cJsUid; com.zucchetti.sitepainter.Library.WriteLegacyScripts(status.request,status.out); com.zucchetti.sitepainter.Library.WriteFrameworkScripts(status.request,status.out); status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath("stdFunctions.js"); status.out.println( "" + ""); if (com.zucchetti.sitepainter.Library.IsMobile(status.request)) { l_cJsUid = SPPrxycizer.proxycizedPath("spmobilelib.js"); status.out.println( "" + ""); } status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath("controls.js"); status.out.println( "" + ""); if (status.is_live_editing) { l_cJsUid = SPPrxycizer.proxycizedPath("visualweb/VisualWEB.js"); status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath("LiveEditing.js"); status.out.println( "" + ""); } l_cJsUid = SPPrxycizer.proxycizedPath("SPBOUILib.js"); status.out.println( "" + ""); if (CPLib.gt(BO.extendedFields.length,0)) { l_cJsUid = SPPrxycizer.proxycizedPath("ExtendedFields.js"); status.out.println( "" + ""); } if (CPLib.eq(status.m_cClientMode,"query") || CPLib.eq(status.m_cClientMode,"view")) { status.out.println( "" + ""); } else if (CPLib.eq(status.m_cClientMode,"new") || CPLib.eq(status.m_cClientMode,"edit")) { status.out.println( "" + ""); } if (CPLib.eq(status.m_cClientMode,"painter")) { l_cJsUid = SPPrxycizer.proxycizedPath("sppainterentity.js"); status.out.println( "" + ""); PrintPainterProps(status); status.out.println( "" + ""); } else { status.out.println( "" + ""); } IncludeJS(status); RaiseSavedEntity(BO,status); RaiseDeletedEntity(BO,status); RaiseDiscardedEntity(BO,status); // Dichiarazione delle variabili di script WriteMainFormVarScript(BO,status); l_cJsUid = SPPrxycizer.proxycizedPath(status.m_cTheme+"/styleVariables.js"); status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath(status.m_cTheme+"/calendar.js"); status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath(status.m_cTheme+"/calculator.js"); status.out.println( "" + ""); if (CPLib.ne(status.m_bAutoResize,"")) { status.out.println( "" + ""); } l_cJsUid = SPPrxycizer.proxycizedPath(status.m_cTheme+"/tabStrip.js"); status.out.println( "" + ""); status.themeWriter.WriteInclude(); WriteStyles(BO,status); status.out.println( "" + ""+SPLib.ToHTMLRepresentation(status.context.Translate(entityGlobals.userName))+"" + "" + ""); status.out.println( "" + ""); status.m_cBodyAttributes = "onload=OnLoad() onhelp=CancelHelp()"; if (CPLib.eq(status.m_cClientMode,"edit") || CPLib.eq(status.m_cClientMode,"new")) { status.m_cBodyAttributes = status.m_cBodyAttributes+" onkeydown=window.ManageKeys(event,false,false)"; } else { status.m_cBodyAttributes = status.m_cBodyAttributes+" onkeydown=window.ManageKeys(event,true,false)"; } status.m_cBodyAttributes = status.m_cBodyAttributes+" onfocus=EnsureControlFocus()"; status.themeWriter.WriteBody_Begin(132,status.m_cBodyAttributes,status.context.Translate("MSG_LOADING")+"..."); status.out.println( "" + ""); WriteMainFormScript(BO,status); status.AssignOP(BO.m_cOldCPCCCHK); status.WriteSenderForm(entityGlobals,BO.m_bLoaded); WriteMainForm(BO,status); status.themeWriter.WriteBody_EndHtml(); status.themeWriter.WriteBody_End(); PrintWarns(BO,status,BO.IsLoaded()); status.out.println( "" + ""); } void OpenZoom(ServletStatus status,SPParameterSource source) { ForwardZoom("../jsp/SPPortalZoom.jsp",status,source); } void OpenPSZoom(ServletStatus status,SPParameterSource source) { ForwardZoom("../jsp/SPPortalZoomBase_portlet.jsp",status,source); } void ForwardZoom(String p_cForwardZoomResource,ServletStatus status,SPParameterSource source) { SPLib.NoCache(status.response); Forward f; f = new Forward(SPLib.GetZoomResource(p_cForwardZoomResource),false,Forward.Start,false); f.SetParameter("Table","postit"); f.SetParameter("Autozoom",entityGlobals.name); f.SetParameter("PKFields","code"); f.SetParameter("Popup","true"); f.SetParameter("m_cAtExit",(SPLib.IsMobile(status.request)?"autozoom":"close")); f.SetParameter("Caption",status.context.Translate(entityGlobals.userName)); if ( ! (CPLib.Empty(entityGlobals.m_cZoomConfigName))) { f.SetParameter("ConfigName",entityGlobals.m_cZoomConfigName); } SetParameterSequence(source,f,status.request); status.forwardedto = f; } void RaiseLoadedEntity(postin_userBO BO,ServletStatus status) { RaiseEventLoadedEntity(status,SPLib.ToJSValue("({code:"+SPLib.ToJSValue(BO.w_code,"C",10,0)+",action:"+SPLib.ToJSValue(status.m_cClientMode,"C",0,0)+"})","C",0,0)); } void RaiseSavedEntity(postin_userBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"save") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDeletedEntity(postin_userBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"delete") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDiscardedEntity(postin_userBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"discard")) { status.out.println( "" + ""); } } void WriteExitPage(postin_userBO BO,ServletStatus status,Forward f) { WriteExitPage(status,SPLib.ToJSValue("({code:"+SPLib.ToJSValue(BO.w_code,"C",10,0)+",action:"+SPLib.ToJSValue(status.m_cMode,"C",0,0)+"})","C",0,0), f); } void WriteExitPage(postin_userBO BO,ServletStatus status) { WriteExitPage(BO,status,Forward.Unforwarded); } protected void BringBackPage(postin_userBO BO,ServletStatus status) throws IOException { if (CPLib.eq(BO.m_nLastError,4) || CPLib.eq(BO.m_nLastError,5)) { RequestPwdOrOTP(status,(CPLib.eq(BO.m_nLastError,5)?"OTP":"password")); return; } String msg = status.context.Translate("MSG_END_ROUTINE"); SPLib.SetContentType(status.response); SPLib.NoCache(status.response); status.out = status.response.getWriter(); String l_cJsUid; status.out.println( "" + ""); status.out.println( "" + ""); status.out.println( "" + ""+status.context.Translate("MSG_ROUTINE_WIND")+"" + "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath("stdFunctions.js"); status.out.println( "" + ""); l_cJsUid = SPPrxycizer.proxycizedPath("controls.js"); status.out.println( "" + ""); if (status.m_bError) { msg = status.context.Translate("MSG_END_ROUTINE_WITH_MSG"); status.out.println( "" + ""); } else { status.out.println( "" + ""); } status.out.println( "

" + ""+msg+"" + "

" + ""); String l_cPreviousErr = status.m_cErrMsg; String l_cUserErr = status.m_cErrMsg; if (status.m_bError) { status.out.println( "" + ""); } status.out.println( "" + ""); } void IncludeJS(ServletStatus status) { String l_cJsUid; l_cJsUid = SPPrxycizer.proxycizedPath("postin_user_onload.js"); status.out.println( "" + ""); /* --- Area Manuale = UI - Include */ /* --- Fine Area Manuale */ } // m_CallableNames inizializzato dal primo accesso a GetCallableNames private static volatile String[] m_CallableNames; public static String[] GetCallableNames() { if (CPLib.IsNull(m_CallableNames)) { java.util.Set building = new java.util.HashSet(); GetCallableNames(building); m_CallableNames = CPLib.SetOfStringsAsArray(building); } return (String[])m_CallableNames.clone(); } public static void GetCallableNames(java.util.Set callable) { if (CPLib.IsNull(m_CallableNames)) { CPLib.AddToSet(callable,"postin_user_onload"); } else { CPLib.AddStringsToSet(callable,m_CallableNames); } } void AppendCallableIDS(ServletStatus status,String sep) { PrintCallableIDS(GetCallableNames(),status,sep); } public String GetCheckVars(ServletStatus status,postin_userBO BO,String p_cUID) { com.zucchetti.sitepainter.Library.HashCreator hCreator = com.zucchetti.sitepainter.Library.GetHashCreator(); hCreator.Reset(); if (CPLib.eq(p_cUID,m_cEntityUid)) { hCreator.AddValue(CPLib.BoolToChar(BO.IsLoaded())); if (BO.IsLoaded()) { hCreator.AddValue(BO.m_cOldCPCCCHK); hCreator.AddValue(CPLib.ToSQL(CPLib.Trim(BO.w_code),"C",10,0)); } } return GetEntityHash(p_cUID,status,hCreator); } public boolean CheckVars(ServletStatus status,postin_userBO BO) { boolean result = true; if (SPServlet.m_nEnableCheckHash) { String a = GetCheckVars(status,BO,m_cEntityUid); String b = status.m_CheckVars.optString("_"); result = CPLib.eq(a,b); } return result; } }