📄 cmsupdatebean.java
字号:
* @return a list of module names
*/
public List getUptodateModules() {
if (m_uptodateModules == null) {
m_uptodateModules = new ArrayList();
m_modulesToUpdate = new ArrayList();
Map installedModules = getInstalledModules();
Map availableModules = getAvailableModules();
Iterator itMods = availableModules.entrySet().iterator();
while (itMods.hasNext()) {
Map.Entry entry = (Map.Entry)itMods.next();
String name = (String)entry.getKey();
CmsModuleVersion instVer = (CmsModuleVersion)installedModules.get(name);
CmsModuleVersion availVer = ((CmsModule)entry.getValue()).getVersion();
boolean uptodate = (!UPDATE_ALL_MODULES) && ((instVer != null) && (instVer.compareTo(availVer) >= 0));
if (uptodate) {
m_uptodateModules.add(name);
} else {
m_modulesToUpdate.add(name);
}
if (LOG.isDebugEnabled()) {
LOG.debug(name
+ " --- installed: "
+ instVer
+ " available: "
+ availVer
+ " --- uptodate: "
+ uptodate);
}
}
}
return m_uptodateModules;
}
/**
* Returns the workplace update thread.<p>
*
* @return the workplace update thread
*/
public CmsUpdateThread getWorkplaceUpdateThread() {
return m_workplaceUpdateThread;
}
/**
* @see org.opencms.setup.CmsSetupBean#htmlModules()
*/
public String htmlModules() {
StringBuffer html = new StringBuffer(1024);
Set uptodate = new HashSet(getUptodateModules());
Iterator itModules = sortModules(getAvailableModules().values()).iterator();
boolean hasModules = false;
for (int i = 0; itModules.hasNext(); i++) {
String moduleName = (String)itModules.next();
CmsModule module = (CmsModule)getAvailableModules().get(moduleName);
if (UPDATE_ALL_MODULES || !uptodate.contains(moduleName)) {
html.append(htmlModule(module, i));
hasModules = true;
} else {
html.append("<input type='hidden' name='availableModules' value='");
html.append(moduleName);
html.append("'>\n");
}
}
if (!hasModules) {
html.append("\t<tr>\n");
html.append("\t\t<td style='vertical-align: middle;'>\n");
html.append(Messages.get().getBundle().key(Messages.GUI_WARNING_ALL_MODULES_UPTODATE_0));
html.append("\t\t</td>\n");
html.append("\t</tr>\n");
}
return html.toString();
}
/**
* Creates a new instance of the setup Bean.<p>
*
* @param webAppRfsPath path to the OpenCms web application
* @param servletMapping the OpenCms servlet mapping
* @param defaultWebApplication the name of the default web application
*/
public void init(String webAppRfsPath, String servletMapping, String defaultWebApplication) {
try {
super.init(webAppRfsPath, servletMapping, defaultWebApplication);
if (m_workplaceUpdateThread != null) {
if (m_workplaceUpdateThread.isAlive()) {
m_workplaceUpdateThread.kill();
}
m_workplaceUpdateThread = null;
}
if (m_dbUpdateThread != null) {
if (m_dbUpdateThread.isAlive()) {
m_dbUpdateThread.kill();
}
m_dbUpdateThread = null;
m_newLoggingOffset = 0;
m_oldLoggingOffset = 0;
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* Returns the keep History parameter value.<p>
*
* @return the keep History parameter value
*/
public boolean isKeepHistory() {
return m_keepHistory;
}
/**
* Returns <code>true</code> if a DB update is needed.<p>
*
* @return <code>true</code> if a DB update is needed
*/
public boolean isNeedDbUpdate() {
return m_needDbUpdate;
}
/**
* Prepares step 1 of the update wizard.<p>
*/
public void prepareUpdateStep1() {
// nothing to do jet
}
/**
* Prepares step 1 of the update wizard.<p>
*/
public void prepareUpdateStep1b() {
if (!isInitialized()) {
return;
}
if ((m_dbUpdateThread != null) && (m_dbUpdateThread.isFinished())) {
// update is already finished, just wait for client to collect final data
return;
}
if (m_dbUpdateThread == null) {
m_dbUpdateThread = new CmsUpdateDBThread(this);
}
if (!m_dbUpdateThread.isAlive()) {
m_dbUpdateThread.start();
}
}
/**
* Generates the output for step 1 of the setup wizard.<p>
*
* @param out the JSP print stream
* @throws IOException in case errors occur while writing to "out"
*/
public void prepareUpdateStep1bOutput(JspWriter out) throws IOException {
m_oldLoggingDBOffset = m_newLoggingDBOffset;
m_newLoggingDBOffset = m_dbUpdateThread.getLoggingThread().getMessages().size();
if (isInitialized()) {
for (int i = m_oldLoggingDBOffset; i < m_newLoggingDBOffset; i++) {
String str = m_dbUpdateThread.getLoggingThread().getMessages().get(i).toString();
str = CmsEncoder.escapeWBlanks(str, CmsEncoder.ENCODING_UTF_8);
out.println("output[" + (i - m_oldLoggingDBOffset) + "] = \"" + str + "\";");
}
} else {
out.println("output[0] = 'ERROR';");
}
boolean threadFinished = m_dbUpdateThread.isFinished();
boolean allWritten = m_oldLoggingDBOffset >= m_dbUpdateThread.getLoggingThread().getMessages().size();
out.println("function initThread() {");
if (isInitialized()) {
out.print("send();");
if (threadFinished && allWritten) {
out.println("setTimeout('top.display.finish()', 1000);");
} else {
int timeout = 5000;
if (getUpdateDBThread().getLoggingThread().getMessages().size() < 20) {
timeout = 2000;
}
out.println("setTimeout('location.reload()', " + timeout + ");");
}
}
out.println("}");
}
/**
* Prepares step 5 of the update wizard.<p>
*/
public void prepareUpdateStep5() {
if (isInitialized()) {
try {
String fileName = getWebAppRfsPath() + FOLDER_UPDATE + "cmsupdate";
// read the file
FileInputStream fis = new FileInputStream(fileName + CmsConfigurationManager.POSTFIX_ORI);
String script = "";
int readChar = fis.read();
while (readChar > -1) {
script += (char)readChar;
readChar = fis.read();
}
fis.close();
// substitute macros
script = CmsStringUtil.substitute(script, C_ADMIN_USER, getAdminUser());
script = CmsStringUtil.substitute(script, C_ADMIN_PWD, getAdminPwd());
script = CmsStringUtil.substitute(script, C_UPDATE_PROJECT, getUpdateProject());
script = CmsStringUtil.substitute(script, C_UPDATE_SITE, getUpdateSite());
script = CmsStringUtil.substitute(script, C_ADMIN_GROUP, getAdminGroup());
// write the new script
FileOutputStream fos = new FileOutputStream(fileName + ".txt");
fos.write(script.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
/**
* Prepares step 5 of the update wizard.<p>
*/
public void prepareUpdateStep5b() {
if (!isInitialized()) {
return;
}
if ((m_workplaceUpdateThread != null) && (m_workplaceUpdateThread.isFinished())) {
// update is already finished, just wait for client to collect final data
return;
}
if (m_workplaceUpdateThread == null) {
m_workplaceUpdateThread = new CmsUpdateThread(this);
}
if (!m_workplaceUpdateThread.isAlive()) {
m_workplaceUpdateThread.start();
}
}
/**
* Generates the output for the update wizard.<p>
*
* @param out the JSP print stream
*
* @throws IOException in case errors occur while writing to "out"
*/
public void prepareUpdateStep5bOutput(JspWriter out) throws IOException {
m_oldLoggingOffset = m_newLoggingOffset;
m_newLoggingOffset = m_workplaceUpdateThread.getLoggingThread().getMessages().size();
if (isInitialized()) {
for (int i = m_oldLoggingOffset; i < m_newLoggingOffset; i++) {
String str = m_workplaceUpdateThread.getLoggingThread().getMessages().get(i).toString();
str = CmsEncoder.escapeWBlanks(str, CmsEncoder.ENCODING_UTF_8);
out.println("output[" + (i - m_oldLoggingOffset) + "] = \"" + str + "\";");
}
} else {
out.println("output[0] = 'ERROR';");
}
boolean threadFinished = m_workplaceUpdateThread.isFinished();
boolean allWritten = m_oldLoggingOffset >= m_workplaceUpdateThread.getLoggingThread().getMessages().size();
out.println("function initThread() {");
if (isInitialized()) {
out.print("send();");
if (threadFinished && allWritten) {
out.println("setTimeout('top.display.finish()', 500);");
} else {
int timeout = 5000;
if (getWorkplaceUpdateThread().getLoggingThread().getMessages().size() < 20) {
timeout = 1000;
}
out.println("setTimeout('location.reload()', " + timeout + ");");
}
}
out.println("}");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -