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 spadministration_autonum extends SPServlet implements SPInvokable { public static String m_cEntityUid = "!*7e8c5180*!"; static public class ServletStatus extends SPMasterServletStatus { ServletStatus() { m_cAllVirtNames = "cpwarn"; } public String w_tablecode; public String w_warncode; public void BuildLastWhereFromPK() { if (CPLib.Empty(m_cLastWhere)) { m_cLastWhere = m_cLastWhere+CPLib.BuildLastWhereFromPK(w_tablecode,context,"cpwarn","tablecode","C",100,0,( ! (CPLib.Empty(m_cLastWhere))?" and ":"")); m_cLastWhere = m_cLastWhere+CPLib.BuildLastWhereFromPK(w_warncode,context,"cpwarn","warncode","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( "" + ""); 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 spadministration_autonumBO BO; BO = getBO(status); BO.m_bSkipCheckOTPSecurity = false; status.m_cVirtName = BO.m_cVirtName_cpwarn; 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_tablecode = BO.w_tablecode; status.w_warncode = BO.w_warncode; 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 "CP_AUTONUM"; } public SPEntityGlobals getEntityGlobals() { // Costanti globali dell' entita' SPEntityGlobals l_eg = new SPEntityGlobals(); l_eg.name = "spadministration_autonum"; l_eg.userName = getEntityTitle(); l_eg.m_nEntityWidth = 645; l_eg.m_nEntityHeight = 110; l_eg.isPublic = false; l_eg.canAccess = false; l_eg.canInsert = false; l_eg.canChange = false; l_eg.canDelete = false; l_eg.m_cStates = "[]"; l_eg.zoomableTables = new String[]{"cpwarn"}; l_eg.zoneItems = new ZoneItem[]{new ZoneItem("page_1","","page")}; l_eg.securedBoxes = new String[][] {}; l_eg.securedTabs = new String[][] {}; l_eg.keyColumns = new String[]{"tablecode","warncode"}; l_eg.items = new SPItem[]{ new SPItem("tablecode","C",100,0, "hide","ADMIN_TABLE"), new SPItem("warncode","C",10,0, "hide","ADMIN_COMPANY"), new SPItem("autonum","N",15,0, "edit","ADMIN_AUTONUM"), new SPItem("autonum_name","C",60,0, "edit","ADMIN_AUTONUM_NAME") }; 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(1); 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,spadministration_autonumBO 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(1); 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[][]{{"10075134622",p_Context.Translate("ADMIN_AUTONUM_NAME")}, {"11751808827",p_Context.Translate("ADMIN_AUTONUM")}, {"1782786947",p_Context.Translate("ADMIN_TABLE")}, {"882473320",p_Context.Translate("CP_AUTONUM")}, {"966854606",p_Context.Translate("ADMIN_COMPANY")}}; return l_translations; } void WriteStyles(spadministration_autonumBO BO,ServletStatus status) { if ( ! ( ! (CPLib.Empty(status.m_cAltInterface)))) { status.out.println( "" + ""); } if (CPLib.eq(status.m_cClientMode,"painter")) { status.out.println( "" + ""); } } void WriteMainForm(spadministration_autonumBO BO,ServletStatus status) { status.out.println( "
" + ""); status.out.println( "" + ""); status.out.println( "" + ""); status.out.println( "" + ""); if (CPLib.gt(BO.extendedFields.length,0) || CPLib.HasTabFoundlings(BO.m_MNTs,"")) { 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,"spadministration_autonum",BO.m_bLoaded,(BO.m_bLoaded?false:false),(BO.m_bLoaded?false:false)); status.out.println( "
" + ""); } void WriteControls(spadministration_autonumBO BO,ServletStatus status) { WriteControls_p1(BO,status); PrintNotifyContent(status,getNotifyItems()); WriteExtendedTabs(BO.m_MNTs,BO.extendedFields,status,2); } void WriteControls_p1(spadministration_autonumBO BO,ServletStatus status) { status.out.println( "" + ""); if ( ! (CPLib.gt(BO.extendedFields.length,0) || CPLib.HasTabFoundlings(BO.m_MNTs,""))) { status.out.println( "" + ""); } } void WriteControls_p1_b0(spadministration_autonumBO BO,ServletStatus status) { status.out.println( "
" + ""); status.out.println( "" + ""); status.out.println( "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "
" + ""); } static void PrintState(spadministration_autonumBL BO,ServletStatus status) { PrintStateChildren(BO,status); PrintStateWorkVars(BO,status); } static void PrintStateChildren(spadministration_autonumBL BO,ServletStatus status) { PrintMNTState(status,BO,BO.m_MNTs); } static void PrintStateWorkVars(spadministration_autonumBL BO,ServletStatus status) { status.out.print("DeclareWVs("); status.out.print(SPLib.ToJSValue(BO.w_tablecode,"C",100,0)); status.out.print(","+SPLib.ToJSValue(BO.w_warncode,"C",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_autonum,"N",15,0)); status.out.print(","+SPLib.ToJSValue(BO.w_autonum_name,"C",60,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(spadministration_autonumBO BO,ServletStatus status) { status.out.println( "" + ""); } void WriteMainFormScript(spadministration_autonumBO BO,ServletStatus status) { status.out.println( "" + ""); } spadministration_autonumBO getBO(ServletStatus status) { spadministration_autonumBO BO = new spadministration_autonumBO(status.context); LoadExtensions(BO); return BO; } void LoadExtensions(spadministration_autonumBO BO) { XDCHolder xdc = CPLib.GetXDCHolder(SPLib.GetClassesPath(),new SPXDCReaderFactory(BO.m_Ctx.GetInstance()),BO.m_Ctx.GetInstance()); XDCTable t = xdc.GetXDCTable("cpwarn",true); BO.extendedFields = CPExtenderLib.GetExtendedItemsFromTable(t); } public void NotifyEvent(String p_cEvent,ServletStatus status,spadministration_autonumBO BO) { super.NotifyEvent(p_cEvent,status,BO); CPLib.NotifyEvent(p_cEvent,BO,BO.m_Ctx,BO.specificEventsHandlers,BO.allEventsHandlers); } void WriteTableCombo(ServletStatus status,spadministration_autonumBO BO) { String l_cTmp; CPResultSet l_rsLoad=null; } CPResultSet QueryKeyCursor(spadministration_autonumBO BO,ServletStatus status) { String l_cServer = BO.m_cServer_cpwarn; String l_cPhName = BO.m_cPhName_cpwarn; // 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 = spadministration_autonumBL.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_cpwarn+".tablecode, "+BO.m_cVirtName_cpwarn+".warncode",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("cpwarn"); String l_cPhName = CPSql.ManipulateTablePhName("cpwarn",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+".tablecode, "+l_cPhName+".warncode",CPLib.GetTablesWithAliases(l_cPhName,status.m_cAllVirtNames,status.context),l_cLastWhere,status.m_cLastOrderBy)); } return l_rsKeys; } void Query(ServletStatus status,spadministration_autonumBO BO) { if ( ! (CPLib.Empty(status.m_cLastWhere))) { CPResultSet l_rsCount=null; String l_cLastWhere = status.m_cLastWhere; String l_cQueryFilter = spadministration_autonumBL.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_cpwarn,CPSql.BuildSQLPhrase(" count(*) as reccount",CPLib.GetTablesWithAliases(BO.m_cPhName_cpwarn,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,spadministration_autonumBO 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,spadministration_autonumBO BO,SPParameterSource source) { BO.Load(status.w_tablecode,status.w_warncode); 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,spadministration_autonumBO 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,spadministration_autonumBO 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,spadministration_autonumBO 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_tablecode = ""; status.w_warncode = ""; } else { BO.w_tablecode = l_rsKeys.GetString("tablecode"); BO.w_warncode = l_rsKeys.GetString("warncode"); // Ottimizzazione: liberata connessione database prima di eseguire la Load l_rsKeys.Close(); BO.Load(); status.w_tablecode = BO.w_tablecode; status.w_warncode = BO.w_warncode; } } 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,spadministration_autonumBO 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,spadministration_autonumBO 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_tablecode,status.w_warncode); 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,spadministration_autonumBO BO,SPParameterSource source) { BO.Load(status.w_tablecode,status.w_warncode); status.m_cBOWarnMessageDeleted = status.context.Translate("MSG_PROCEED_WITH_DELETE"); status.m_bExit = true; status.m_cClientMode = "bringback"; } void Save(ServletStatus status,spadministration_autonumBO 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("({tablecode:"+SPLib.ToJSValue(BO.w_tablecode,"C",100,0)+",warncode:"+SPLib.ToJSValue(BO.w_warncode,"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,spadministration_autonumBO 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,spadministration_autonumBO 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",110); item.put("w",645); 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\":\"Page 1\",\"w\":400}"); pagesProp.put(pageProp); item.put("pagesProp",pagesProp); item.put("pages_names","Page 1"); item.put("altInterfaceFor","spadministration_autonum"); items.put(item); String s; org.json.JSONObject ctrl = null; s = "{\"comment\":\"ADMIN_AUTONUM\",\"h\":22,\"maxlength\":13,\"name\":\"autonum\",\"page\":1,\"spuid\":\"BKNNIQVWMR\",\"tabindex\":5,\"type\":\"Textbox\",\"typevar\":\"numeric\",\"w\":118,\"x\":207,\"y\":83,\"zone\":\"pag1_1\",\"zonepath\":\"[1,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_DXYOJIRSOV\",\"page\":1,\"spuid\":\"DXYOJIRSOV\",\"tabindex\":6,\"type\":\"Label\",\"value\":\"ADMIN_AUTONUM\",\"w\":128,\"x\":73,\"y\":80,\"zone\":\"pag1_1\",\"zonepath\":\"[1,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"ADMIN_AUTONUM_NAME\",\"h\":25,\"maxlength\":60,\"name\":\"autonum_name\",\"page\":1,\"spuid\":\"WCYGSFGYKH\",\"tabindex\":7,\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":433,\"x\":207,\"y\":45,\"zone\":\"pag1_2\",\"zonepath\":\"[1,2]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_ALEDLKZNJJ\",\"page\":1,\"spuid\":\"ALEDLKZNJJ\",\"tabindex\":8,\"type\":\"Label\",\"value\":\"ADMIN_DESCRIPTION\",\"w\":128,\"x\":73,\"y\":45,\"zone\":\"pag1_2\",\"zonepath\":\"[1,2]\"}"; 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(spadministration_autonumBO 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( "" + ""); } if (CPLib.gt(BO.extendedFields.length,0) || CPLib.HasTabFoundlings(BO.m_MNTs,"")) { 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(110,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","cpwarn"); f.SetParameter("Autozoom",entityGlobals.name); f.SetParameter("PKFields","tablecode,warncode"); 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(spadministration_autonumBO BO,ServletStatus status) { RaiseEventLoadedEntity(status,SPLib.ToJSValue("({tablecode:"+SPLib.ToJSValue(BO.w_tablecode,"C",100,0)+",warncode:"+SPLib.ToJSValue(BO.w_warncode,"C",10,0)+",action:"+SPLib.ToJSValue(status.m_cClientMode,"C",0,0)+"})","C",0,0)); } void RaiseSavedEntity(spadministration_autonumBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"save") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDeletedEntity(spadministration_autonumBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"delete") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDiscardedEntity(spadministration_autonumBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"discard")) { status.out.println( "" + ""); } } void WriteExitPage(spadministration_autonumBO BO,ServletStatus status,Forward f) { WriteExitPage(status,SPLib.ToJSValue("({tablecode:"+SPLib.ToJSValue(BO.w_tablecode,"C",100,0)+",warncode:"+SPLib.ToJSValue(BO.w_warncode,"C",10,0)+",action:"+SPLib.ToJSValue(status.m_cMode,"C",0,0)+"})","C",0,0), f); } void WriteExitPage(spadministration_autonumBO BO,ServletStatus status) { WriteExitPage(BO,status,Forward.Unforwarded); } protected void BringBackPage(spadministration_autonumBO 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; /* --- Area Manuale = UI - Include */ /* --- spadministration_autonum */ status.out.println(""); /* --- 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)) { } else { CPLib.AddStringsToSet(callable,m_CallableNames); } } void AppendCallableIDS(ServletStatus status,String sep) { } public String GetCheckVars(ServletStatus status,spadministration_autonumBO 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_tablecode),"C",100,0)); hCreator.AddValue(CPLib.ToSQL(CPLib.Trim(BO.w_warncode),"C",10,0)); } } return GetEntityHash(p_cUID,status,hCreator); } public boolean CheckVars(ServletStatus status,spadministration_autonumBO 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; } }