📄 cmsupdatebean.java
字号:
/**
* Prepares step 6 of the update wizard.<p>
*/
public void prepareUpdateStep6() {
if (isInitialized()) {
// lock the wizard for further use
lockWizard();
// save Properties to file "opencms.properties"
saveProperties(getProperties(), CmsSystemInfo.FILE_PROPERTIES, false);
}
}
/**
* Sets the admin Pwd.<p>
*
* @param adminPwd the admin Pwd to set
*/
public void setAdminPwd(String adminPwd) {
m_adminPwd = adminPwd;
}
/**
* Sets the admin User.<p>
*
* @param adminUser the admin User to set
*/
public void setAdminUser(String adminUser) {
m_adminUser = adminUser;
}
/**
* Sets the keep History parameter value.<p>
*
* @param keepHistory the keep History parameter value to set
*/
public void setKeepHistory(boolean keepHistory) {
m_keepHistory = keepHistory;
}
/**
* Sets the DB update flag.<p>
*
* @param needDbUpdate the value to set
*/
public void setNeedDbUpdate(boolean needDbUpdate) {
m_needDbUpdate = needDbUpdate;
}
/**
* Sets the update Project.<p>
*
* @param updateProject the update Project to set
*/
public void setUpdateProject(String updateProject) {
m_updateProject = updateProject;
}
/**
* Sets the update site.<p>
*
* @param site the update site to set
*/
public void setUpdateSite(String site) {
m_updateSite = site;
}
/**
* @see org.opencms.main.I_CmsShellCommands#shellExit()
*/
public void shellExit() {
System.out.println();
System.out.println();
System.out.println("The update is finished!\nThe OpenCms system used for the update will now shut down.");
}
/**
* @see org.opencms.main.I_CmsShellCommands#shellStart()
*/
public void shellStart() {
System.out.println();
System.out.println("Starting Workplace update for OpenCms!");
String[] copy = org.opencms.main.Messages.COPYRIGHT_BY_ALKACON;
for (int i = copy.length - 1; i >= 0; i--) {
System.out.println(copy[i]);
}
System.out.println("This is OpenCms " + OpenCms.getSystemInfo().getVersionNumber());
System.out.println();
System.out.println();
}
/**
* Installed all modules that have been set using {@link #setInstallModules(String)}.<p>
*
* This method is invoked as a shell command.<p>
*
* @throws Exception if something goes wrong
*/
public void updateModulesFromUpdateBean() throws Exception {
// read here how the list of modules to be installed is passed from the setup bean to the
// setup thread, and finally to the shell process that executes the setup script:
// 1) the list with the package names of the modules to be installed is saved by setInstallModules
// 2) the setup thread gets initialized in a JSP of the setup wizard
// 3) the instance of the setup bean is passed to the setup thread by setAdditionalShellCommand
// 4) the setup bean is passed to the shell by startSetup
// 5) because the setup bean implements I_CmsShellCommands, the shell constructor can pass the shell's CmsObject back to the setup bean
// 6) thus, the setup bean can do things with the Cms
if ((m_cms != null) && (m_installModules != null)) {
I_CmsReport report = new CmsShellReport(m_cms.getRequestContext().getLocale());
Set utdModules = new HashSet(getUptodateModules());
for (int i = 0; i < m_installModules.size(); i++) {
String name = (String)m_installModules.get(i);
if (!utdModules.contains(name)) {
String filename = (String)m_moduleFilenames.get(name);
try {
updateModule(name, filename, report);
} catch (Exception e) {
// log a exception during module import, but make sure the next module is still imported
e.printStackTrace(System.err);
}
} else {
report.println(
Messages.get().container(Messages.RPT_MODULE_UPTODATE_1, name),
I_CmsReport.FORMAT_HEADLINE);
}
}
}
}
/**
* Fills the relations db tables during the update.<p>
*
* @throws Exception if something goes wrong
*/
public void updateRelations() throws Exception {
if (!m_needDbUpdate) {
// skip if not updating from 6.x
return;
}
I_CmsReport report = new CmsShellReport(m_cms.getRequestContext().getLocale());
report.println(Messages.get().container(Messages.RPT_START_UPDATE_RELATIONS_0), I_CmsReport.FORMAT_HEADLINE);
String storedSite = m_cms.getRequestContext().getSiteRoot();
CmsProject project = null;
try {
String projectName = "Update relations project";
try {
// try to read a (leftover) unlock project
project = m_cms.readProject(projectName);
} catch (CmsException e) {
// create a Project to unlock the resources
project = m_cms.createProject(
projectName,
projectName,
OpenCms.getDefaultUsers().getGroupAdministrators(),
OpenCms.getDefaultUsers().getGroupAdministrators(),
CmsProject.PROJECT_TYPE_TEMPORARY);
}
m_cms.getRequestContext().setSiteRoot(""); // change to the root site
m_cms.getRequestContext().setCurrentProject(project);
List types = OpenCms.getResourceManager().getResourceTypes();
int n = types.size();
int m = 0;
Iterator itTypes = types.iterator();
while (itTypes.hasNext()) {
I_CmsResourceType type = (I_CmsResourceType)itTypes.next();
m++;
report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_SUCCESSION_2,
String.valueOf(m),
String.valueOf(n)), I_CmsReport.FORMAT_NOTE);
report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
type.getTypeName()));
report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
if (type instanceof I_CmsLinkParseable) {
try {
CmsXmlContentRepairSettings settings = new CmsXmlContentRepairSettings(m_cms);
settings.setIncludeSubFolders(true);
settings.setVfsFolder("/");
settings.setResourceType(type.getTypeName());
CmsXmlContentRepairThread t = new CmsXmlContentRepairThread(m_cms, settings);
t.start();
synchronized (this) {
t.join();
}
report.println(
org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
I_CmsReport.FORMAT_OK);
} catch (Exception e) {
report.println(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ERROR_0), I_CmsReport.FORMAT_ERROR);
report.addError(e);
// log the error
e.printStackTrace(System.err);
}
} else {
report.println(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_SKIPPED_0), I_CmsReport.FORMAT_WARNING);
}
}
} finally {
try {
if (project != null) {
try {
m_cms.unlockProject(project.getUuid()); // unlock everything
OpenCms.getPublishManager().publishProject(
m_cms,
report,
OpenCms.getPublishManager().getPublishList(m_cms));
OpenCms.getPublishManager().waitWhileRunning();
} finally {
m_cms.getRequestContext().setCurrentProject(m_cms.readProject(CmsProject.ONLINE_PROJECT_ID));
}
}
} finally {
m_cms.getRequestContext().setSiteRoot(storedSite);
}
report.println(
Messages.get().container(Messages.RPT_FINISH_UPDATE_RELATIONS_0),
I_CmsReport.FORMAT_HEADLINE);
}
}
/**
* Returns the admin Group.<p>
*
* @return the admin Group
*/
protected String getAdminGroup() {
return m_adminGroup;
}
/**
* Sets the admin Group.<p>
*
* @param adminGroup the admin Group to set
*/
protected void setAdminGroup(String adminGroup) {
m_adminGroup = adminGroup;
}
/**
* Imports a module (zipfile) from the default module directory,
* creating a temporary project for this.<p>
*
* @param moduleName the name of the module to replace
* @param importFile the name of the import .zip file located in the update module directory
* @param report the shell report to write the output
*
* @throws Exception if something goes wrong
*
* @see org.opencms.importexport.CmsImportExportManager#importData(org.opencms.file.CmsObject, String, String, org.opencms.report.I_CmsReport)
*/
protected void updateModule(String moduleName, String importFile, I_CmsReport report) throws Exception {
String fileName = getModuleFolder() + importFile;
report.println(
Messages.get().container(Messages.RPT_BEGIN_UPDATE_MODULE_1, moduleName),
I_CmsReport.FORMAT_HEADLINE);
if (OpenCms.getModuleManager().getModule(moduleName) != null) {
OpenCms.getModuleManager().deleteModule(m_cms, moduleName, true, report);
}
OpenCms.getImportExportManager().importData(m_cms, fileName, null, report);
report.println(
Messages.get().container(Messages.RPT_END_UPDATE_MODULE_1, moduleName),
I_CmsReport.FORMAT_HEADLINE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -