import java.io.File; import java.io.PrintWriter; import java.io.IOException; import java.io.FilenameFilter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import static com.zucchetti.sitepainter.Library.Empty; import com.zucchetti.sitepainter.Library; import com.zucchetti.SPBridge.SPJSPBridge; public class SPDBAdministration extends SPServlet implements SPInvokable { static public class ServletStatus extends SPPageServletStatus { } public void init(ServletConfig config) throws ServletException { super.init(config); entityGlobals.name = "SPDBAdministration"; entityGlobals.userName = "SPDBAdministration"; } public void doProcess(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { ServletStatus status = new ServletStatus(); SPParameterSource source = SPLib.GetSource(request); status.request=request; status.response=response; status.containing = this; status.context = SPLib.GetContext(SPLib.GetContextID(request), request); status.m_cTheme = SPLib.GetTheme(status.context); status.m_cBrowser = SPLib.GetBrowser(request); SPLib.SetContentType(response); status.out=response.getWriter(); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""+status.context.Translate("ADMIN_DATABASE_ADMINISTRATION")+""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println(""); status.out.println("
"); status.out.println("

Administration

"); if (!CPLib.IsAdministrator(status.context) && status.context.HasAdministeredUsers()) { status.out.println(""); status.out.println("

"+status.context.Translate("MSG_ACC_NOT_ALLOWED")+"

"); } else { String result; boolean administrated=false; //action indica l'operazione da eseguire String action = source.GetParameter("action", "dbadmin"); //forceExecute obbliga il DBAdm a eseguire l'amministrazione ignorando che la data del plan non e' cambiata boolean forceExecute = source.GetParameter("force", false); //showSql indica se visualizzare o meno il codice eseguito nul database boolean showSql = source.GetParameter("showsql", true); String initializeDataFrom = status.context.GetInitializeDataFrom(); String defaultFrom = ( source.GetParameter("importData", false) ? initializeDataFrom : ""); String importDataFromConfig = source.GetParameter("importDataFrom",defaultFrom); DBAdm dbadm = new DBAdm(status.context, new SPXDCReaderFactory(status.context.GetInstance()), SPLib.GetClassesPath(servletContext), action); if (!"".equals(importDataFromConfig) && !status.context.GetInstance().equals(importDataFromConfig) && !"".equals(CPPooler.GetServer(importDataFromConfig))) { dbadm.setImportDataFrom(importDataFromConfig,source.GetParameter("RemoveExistingData",false)); } if ("dbadmin_preview".equals(action)) { String modifiedXDCFiles = CPLib.MustAdmin(status.context, new SPXDCReaderFactory(status.context.GetInstance()), SPLib.GetClassesPath(servletContext)); status.out.println(""); if (!(CPLib.Empty(modifiedXDCFiles) || CPLib.eq(modifiedXDCFiles, "ALL"))) { if ( ! CPLib.eq(modifiedXDCFiles, "ALL_TOINIT") ) { status.out.print("

"+status.context.Translate("ADMIN_MODIFIED_XDC_FILES")+":

"); status.out.println(modifiedXDCFiles); } status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_DATABASE_RUN")+""); if (!CPLib.Empty( initializeDataFrom )) { status.out.println("
"); } status.out.println(""+status.context.Translate("ADMIN_CANCEL")+""); status.out.println("
"); } } else if ("dbadmin".equals(action) || "createcompany".equals(action) || "script".equals(action)) { //se viene passato il nome di un'azienda, amministro le tabelle solo di quella azienda String company = source.GetParameter("codazi", ""), companyDesc = source.GetParameter("desazi", ""); boolean executeDBAdminRoutines = source.GetParameter("runBatch", true), scriptOnly = "script".equals(action); if (scriptOnly) { forceExecute = true; } status.out.println("
"); if(CPLib.GetDBAdminRunning(status.context.GetInstance())){ status.out.println(status.context.Translate("ADMIN_DATABASE_ALREADY_RUNNING")+"!"); } else { String dbUser = source.GetParameter("dbUser",""); String dbPassword = source.GetParameter("dbPassword",""); // if(dbadm.AdminDatabase(forceExecute, company, companyDesc, "script".equals(action), executeDBAdminRoutines,status.out)){ if(dbadm.AdminDatabase(forceExecute, company, companyDesc, "script".equals(action), executeDBAdminRoutines,status.out, dbUser, dbPassword)){ if(!scriptOnly && showSql){ result = dbadm.GetExecutedText(); if(CPLib.Empty(result)){ result = "

"+status.context.Translate("ADMIN_DATABASE_NO_OPERATION")+".

"; } else if (CPLib.eq(result, "ERROR_DB_LOGIN")) { result = "

"+status.context.Translate("ADMIN_DATABASE_ERROR_LOGIN")+".

"; result += "
"+ ""+ //""+ "
"+ //""+ "
"+ ""+ "
"; } else if (CPLib.eq(result, "NOT_RUN")) { result = "

"+status.context.Translate("ADMIN_DATABASE_DESIGN_NOT_MODIFIED")+". "+status.context.Translate("ADMIN_DATABASE_RUN_ANYWAY")+".

"; } else if (CPLib.eq(result, "ERROR_REGISTRY")) { result = ""; status.out.println("

"+status.context.Translate("ADMIN_DATABASE_NOT_COMPLETE")+"

"); com.zucchetti.PortalStudio.JSPLib.PutMustAdminDatabase(status.context.GetInstance(),false); } else { if (CPLib.eq(result, "DO_SOMETHING")) result=""; administrated=true; } status.out.println(result); if(administrated){ status.out.println("

"+status.context.Translate("ADMIN_DATABASE_COMPLETE")+"

"); com.zucchetti.PortalStudio.JSPLib.PutMustAdminDatabase(status.context.GetInstance(),false); } } else { status.out.println("

"); status.out.println(status.context.Translate("System tables created")+"
"); status.out.println(status.context.Translate("Database administration script created")); status.out.println("

"); } com.zucchetti.SPBridge.Sitepainter sp = new com.zucchetti.SPBridge.Sitepainter(request); sp.resetAdminPageShowed("db"); try { CPPooler.ReloadTableNames2(); } catch(Exception e) { } } else { if(showSql){ status.out.println(status.context.Translate("ADMIN_DATABASE_NOT_COMPLETE")); } } } status.out.println("
"); if(!CPLib.Empty(company)){ status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_CONTINUE")+""); status.out.println("
"); status.out.println(""); } else { status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_CLOSE")+""); status.out.println("
"); status.out.println(""); } status.out.println("
"); } else if ("systemtables".equals(action)) { //Create System Tables status.out.println("
"); if (dbadm.AdminSystemTables()) { if (showSql) { result = dbadm.GetExecutedText(); status.out.println("

"); if (CPLib.Empty(result)) { status.out.println("
"+status.context.Translate("System tables created successfully")+".
"); } else if (CPLib.eq(result, "NOT_RUN")) { status.out.println("
"+status.context.Translate("System tables already exist")+".
"); } else { status.out.println("
"+CPLib.Strtran(result, "\n", "
")); } status.out.println("

"); } } status.out.println("
"); status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_CLOSE")+""); status.out.println("
"); status.out.println(""); } else if ("deletecompany".equals(action)) { //Delete Company String company = source.GetParameter("codazi", ""); status.out.println("
"); if (dbadm.DeleteCompany(company)) { result = dbadm.GetExecutedText(); try { CPPooler.ReloadTableNames2(); } catch(Exception e) { } } else { result = status.context.Translate("Errors while deleting company")+"."; } status.out.println("

"); status.out.println("
"+CPLib.Strtran(result, "\n", "
")); status.out.println("

"); status.out.println("
"); status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_CONTINUE")+""); status.out.println("
"); status.out.println(""); status.out.println("
"); } else if ("addlanguage".equals(action)) { //Adds a new language status.out.println("
"); if (dbadm.AdminDatabase(true, "", "", false, false)) { result = dbadm.GetExecutedText(); if (CPLib.Empty(result)) { result = status.context.Translate("ADMIN_DATABASE_NO_OPERATION")+"."; } else { administrated=true; } if (administrated) { status.out.println("

"+status.context.Translate("Language added successfully")+"

"); } try { CPPooler.ReloadTableNames2(); } catch(Exception e) { } } else { result = status.context.Translate("Errors while adding language")+"."; } status.out.println("
"); status.out.println(""+status.context.Translate("ADMIN_CONTINUE")+""); status.out.println("
"); status.out.println(""); } } status.out.println("
"); status.out.println(""); status.out.println(""); } }