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_tables extends SPServlet implements SPInvokable { public static String m_cEntityUid = "!*e2648660*!"; static public class ServletStatus extends SPMasterServletStatus { ServletStatus() { m_cAllVirtNames = "cpttbls"; } public String w_FileName; public void BuildLastWhereFromPK() { if (CPLib.Empty(m_cLastWhere)) { m_cLastWhere = m_cLastWhere+CPLib.BuildLastWhereFromPK(w_FileName,context,"cpttbls","FileName","C",30,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 spadministration_tablesBO BO; BO = getBO(status); BO.m_bSkipCheckOTPSecurity = false; status.m_cVirtName = BO.m_cVirtName_cpttbls; 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_FileName = BO.w_FileName; 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_TABLES"; } public SPEntityGlobals getEntityGlobals() { // Costanti globali dell' entita' SPEntityGlobals l_eg = new SPEntityGlobals(); l_eg.name = "spadministration_tables"; l_eg.userName = getEntityTitle(); l_eg.m_nEntityWidth = 570; l_eg.m_nEntityHeight = 155; 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[]{"cpttbls","cptsrvr"}; 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[]{"FileName"}; l_eg.items = new SPItem[]{ new SPItem("FileName","C",30,0, "edit","FileName"), new SPItem("PhName","C",50,0, "show","PhName"), new SPItem("ServerName","C",10,0, "edit","ServerName"), new SPItem("DateMod","C",14,0, "show","DateMod"), new SPItem("descserver","C",30,0, "show","ADMIN_DESCRIPTION") }; 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_tablesBO 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[][]{{"10656947118",p_Context.Translate("ADMIN_DESCRIPTION")}, {"11016806698",p_Context.Translate("FileName")}, {"113468624",p_Context.Translate("PhName")}, {"11603885930",p_Context.Translate("CP_TABLES")}, {"1703731040",p_Context.Translate("ServerName")}, {"1799604820",p_Context.Translate("DateMod")}}; return l_translations; } void WriteStyles(spadministration_tablesBO 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_tablesBO 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_tables",BO.m_bLoaded,(BO.m_bLoaded?false:false),(BO.m_bLoaded?false:false)); status.out.println( "
" + ""); } void WriteControls(spadministration_tablesBO BO,ServletStatus status) { WriteControls_p1(BO,status); PrintNotifyContent(status,getNotifyItems()); WriteExtendedTabs(BO.m_MNTs,BO.extendedFields,status,2); } void WriteControls_p1(spadministration_tablesBO 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_tablesBO BO,ServletStatus status) { status.out.println( "
" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.m_nTabIndex = status.m_nTabIndex+(1); status.out.println( "" + "" + ""+EventuallyContextMenu(status, "OJERXEZSWH", "cptsrvr", "spadministration_servers", "")+"" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + ""); status.out.println( "" + "" + "" + ""); status.out.println( "" + ""); status.out.println( "
" + ""); } static void PrintState(spadministration_tablesBL BO,ServletStatus status) { PrintStateChildren(BO,status); PrintStateWorkVars(BO,status); } static void PrintStateChildren(spadministration_tablesBL BO,ServletStatus status) { PrintMNTState(status,BO,BO.m_MNTs); } static void PrintStateWorkVars(spadministration_tablesBL BO,ServletStatus status) { status.out.print("DeclareWVs("); status.out.print(SPLib.ToJSValue(BO.w_FileName,"C",30,0)); status.out.print(","+SPLib.ToJSValue(BO.w_PhName,"C",50,0)); status.out.print(","+SPLib.ToJSValue(BO.w_ServerName,"C",10,0)); status.out.print(","+SPLib.ToJSValue(BO.w_DateMod,"C",14,0)); status.out.print(","+SPLib.ToJSValue(BO.w_descserver,"C",30,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_tablesBO BO,ServletStatus status) { status.out.println( "" + ""); } void WriteMainFormScript(spadministration_tablesBO BO,ServletStatus status) { status.out.println( "" + ""); } spadministration_tablesBO getBO(ServletStatus status) { spadministration_tablesBO BO = new spadministration_tablesBO(status.context); LoadExtensions(BO); return BO; } void LoadExtensions(spadministration_tablesBO BO) { XDCHolder xdc = CPLib.GetXDCHolder(SPLib.GetClassesPath(),new SPXDCReaderFactory(BO.m_Ctx.GetInstance()),BO.m_Ctx.GetInstance()); XDCTable t = xdc.GetXDCTable("cpttbls",true); BO.extendedFields = CPExtenderLib.GetExtendedItemsFromTable(t); } public void NotifyEvent(String p_cEvent,ServletStatus status,spadministration_tablesBO BO) { super.NotifyEvent(p_cEvent,status,BO); CPLib.NotifyEvent(p_cEvent,BO,BO.m_Ctx,BO.specificEventsHandlers,BO.allEventsHandlers); } void WriteTableCombo(ServletStatus status,spadministration_tablesBO BO) { String l_cTmp; CPResultSet l_rsLoad=null; } CPResultSet QueryKeyCursor(spadministration_tablesBO BO,ServletStatus status) { String l_cServer = BO.m_cServer_cpttbls; String l_cPhName = BO.m_cPhName_cpttbls; // 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_tablesBL.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_cpttbls+".FileName",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("cpttbls"); String l_cPhName = CPSql.ManipulateTablePhName("cpttbls",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+".FileName",CPLib.GetTablesWithAliases(l_cPhName,status.m_cAllVirtNames,status.context),l_cLastWhere,status.m_cLastOrderBy)); } return l_rsKeys; } void Query(ServletStatus status,spadministration_tablesBO BO) { if ( ! (CPLib.Empty(status.m_cLastWhere))) { CPResultSet l_rsCount=null; String l_cLastWhere = status.m_cLastWhere; String l_cQueryFilter = spadministration_tablesBL.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_cpttbls,CPSql.BuildSQLPhrase(" count(*) as reccount",CPLib.GetTablesWithAliases(BO.m_cPhName_cpttbls,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_tablesBO 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_tablesBO BO,SPParameterSource source) { BO.Load(status.w_FileName); 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_tablesBO 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_tablesBO 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_tablesBO 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_FileName = ""; } else { BO.w_FileName = l_rsKeys.GetString("FileName"); // Ottimizzazione: liberata connessione database prima di eseguire la Load l_rsKeys.Close(); BO.Load(); status.w_FileName = BO.w_FileName; } } 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_tablesBO 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_tablesBO 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_FileName); 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_tablesBO BO,SPParameterSource source) { BO.Load(status.w_FileName); status.m_cBOWarnMessageDeleted = status.context.Translate("MSG_PROCEED_WITH_DELETE"); status.m_bExit = true; status.m_cClientMode = "bringback"; } void Save(ServletStatus status,spadministration_tablesBO 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("({FileName:"+SPLib.ToJSValue(BO.w_FileName,"C",30,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_tablesBO 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_tablesBO 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",155); item.put("w",570); 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_tables"); items.put(item); String s; org.json.JSONObject ctrl = null; s = "{\"comment\":\"FileName\",\"h\":25,\"maxlength\":30,\"name\":\"FileName\",\"page\":1,\"spuid\":\"LAGKMWCQMG\",\"tabindex\":1,\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":223,\"x\":202,\"y\":20,\"zone\":\"pag1_1\",\"zonepath\":\"[1,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_MYDKBZFNNC\",\"page\":1,\"spuid\":\"MYDKBZFNNC\",\"tabindex\":2,\"type\":\"Label\",\"value\":\"FileName\",\"w\":136,\"x\":65,\"y\":20,\"zone\":\"pag1_1\",\"zonepath\":\"[1,1]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"PhName\",\"disabled\":\"true\",\"h\":25,\"maxlength\":50,\"name\":\"PhName\",\"page\":1,\"readonly\":\"true\",\"spuid\":\"PJWHAZGJKP\",\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":363,\"x\":202,\"y\":55,\"zone\":\"pag1_2\",\"zonepath\":\"[1,2]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_EGCZHELFTL\",\"page\":1,\"spuid\":\"EGCZHELFTL\",\"tabindex\":4,\"type\":\"Label\",\"value\":\"PhName\",\"w\":136,\"x\":65,\"y\":55,\"zone\":\"pag1_2\",\"zonepath\":\"[1,2]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"check\":\"file\",\"comment\":\"ServerName\",\"h\":25,\"maxlength\":10,\"name\":\"ServerName\",\"page\":1,\"picker\":true,\"spuid\":\"OJERXEZSWH\",\"tabindex\":5,\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":83,\"x\":202,\"y\":90,\"zone\":\"pag1_3\",\"zonepath\":\"[1,3]\",\"zoom\":\"stdz\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_JVNAUHUFGQ\",\"page\":1,\"spuid\":\"JVNAUHUFGQ\",\"tabindex\":6,\"type\":\"Label\",\"value\":\"ServerName\",\"w\":136,\"x\":65,\"y\":90,\"zone\":\"pag1_3\",\"zonepath\":\"[1,3]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"ADMIN_DESCRIPTION\",\"disabled\":\"true\",\"h\":25,\"maxlength\":30,\"name\":\"descserver\",\"page\":1,\"readonly\":\"true\",\"spuid\":\"FGUDUNQBGP\",\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":223,\"x\":318,\"y\":90,\"zone\":\"pag1_3\",\"zonepath\":\"[1,3]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"comment\":\"DateMod\",\"disabled\":\"true\",\"h\":25,\"maxlength\":14,\"name\":\"DateMod\",\"page\":1,\"readonly\":\"true\",\"spuid\":\"KDEUPENAMD\",\"type\":\"Textbox\",\"typevar\":\"character\",\"w\":111,\"x\":202,\"y\":125,\"zone\":\"pag1_4\",\"zonepath\":\"[1,4]\"}"; ctrl = new org.json.JSONObject(s); items.put(ctrl); s = "{\"align\":\"right\",\"h\":25,\"name\":\"label_AABHINDDSS\",\"page\":1,\"spuid\":\"AABHINDDSS\",\"tabindex\":8,\"type\":\"Label\",\"value\":\"DateMod\",\"w\":136,\"x\":65,\"y\":125,\"zone\":\"pag1_4\",\"zonepath\":\"[1,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(spadministration_tablesBO 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(155,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","cpttbls"); f.SetParameter("Autozoom",entityGlobals.name); f.SetParameter("PKFields","FileName"); 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_tablesBO BO,ServletStatus status) { RaiseEventLoadedEntity(status,SPLib.ToJSValue("({FileName:"+SPLib.ToJSValue(BO.w_FileName,"C",30,0)+",action:"+SPLib.ToJSValue(status.m_cClientMode,"C",0,0)+"})","C",0,0)); } void RaiseSavedEntity(spadministration_tablesBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"save") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDeletedEntity(spadministration_tablesBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"delete") && ! (status.m_bError)) { status.out.println( "" + ""); } } void RaiseDiscardedEntity(spadministration_tablesBO BO,ServletStatus status) { if (CPLib.eq(status.m_cAction,"discard")) { status.out.println( "" + ""); } } void WriteExitPage(spadministration_tablesBO BO,ServletStatus status,Forward f) { WriteExitPage(status,SPLib.ToJSValue("({FileName:"+SPLib.ToJSValue(BO.w_FileName,"C",30,0)+",action:"+SPLib.ToJSValue(status.m_cMode,"C",0,0)+"})","C",0,0), f); } void WriteExitPage(spadministration_tablesBO BO,ServletStatus status) { WriteExitPage(BO,status,Forward.Unforwarded); } protected void BringBackPage(spadministration_tablesBO 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 */ /* --- 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_tablesBO 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_FileName),"C",30,0)); } } else if (CPLib.eq(p_cUID,"OJERXEZSWH")) { SPLib.FillLinkHash(hCreator,BO.GetLinkProperties(p_cUID),BO); } return GetEntityHash(p_cUID,status,hCreator); } public boolean CheckVars(ServletStatus status,spadministration_tablesBO 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); if (result && ! (CPLib.Empty(BO.w_ServerName))) { a = GetCheckVars(status,BO,"OJERXEZSWH"); b = status.m_CheckVars.optString("OJERXEZSWH"); result = CPLib.eq(a,b); } } return result; } }