cmsprojectdriver.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,511 行 · 第 1/5 页
JAVA
1,511 行
CmsResource.DATE_EXPIRED_DEFAULT,
0);
m_driverManager.getVfsDriver().createResource(dbc, onlineProject.getUuid(), systemFolder, null);
systemFolder.setState(CmsResource.STATE_UNCHANGED);
m_driverManager.getVfsDriver().writeResource(
dbc,
onlineProject.getUuid(),
systemFolder,
CmsDriverManager.UPDATE_ALL);
////////////////////////////////////////////////////////////////////////////////////////////
// setup project stuff
////////////////////////////////////////////////////////////////////////////////////////////
// important: must access through driver manager to ensure proper cascading
CmsProject setupProject = m_driverManager.getProjectDriver().createProject(
dbc,
CmsUUID.getConstantUUID(SETUP_PROJECT_NAME),
admin,
administrators,
administrators,
SETUP_PROJECT_NAME,
"The Project for the initial import",
I_CmsPrincipal.FLAG_ENABLED,
CmsProject.PROJECT_TYPE_TEMPORARY);
rootFolder.setState(CmsResource.STATE_CHANGED);
// create the root-folder for the offline project
CmsResource offlineRootFolder = m_driverManager.getVfsDriver().createResource(
dbc,
setupProject.getUuid(),
rootFolder,
null);
offlineRootFolder.setState(CmsResource.STATE_UNCHANGED);
m_driverManager.getVfsDriver().writeResource(
dbc,
setupProject.getUuid(),
offlineRootFolder,
CmsDriverManager.UPDATE_ALL);
// important: must access through driver manager to ensure proper cascading
m_driverManager.getProjectDriver().createProjectResource(
dbc,
setupProject.getUuid(),
offlineRootFolder.getRootPath());
systemFolder.setState(CmsResource.STATE_CHANGED);
// create the system-folder for the offline project
CmsResource offlineSystemFolder = m_driverManager.getVfsDriver().createResource(
dbc,
setupProject.getUuid(),
systemFolder,
null);
offlineSystemFolder.setState(CmsResource.STATE_UNCHANGED);
m_driverManager.getVfsDriver().writeResource(
dbc,
setupProject.getUuid(),
offlineSystemFolder,
CmsDriverManager.UPDATE_ALL);
}
/**
* @see org.opencms.db.I_CmsProjectDriver#getSqlManager()
*/
public CmsSqlManager getSqlManager() {
return m_sqlManager;
}
/**
* @see org.opencms.db.I_CmsDriver#init(org.opencms.db.CmsDbContext, org.opencms.configuration.CmsConfigurationManager, java.util.List, org.opencms.db.CmsDriverManager)
*/
public void init(
CmsDbContext dbc,
CmsConfigurationManager configurationManager,
List successiveDrivers,
CmsDriverManager driverManager) {
Map configuration = configurationManager.getConfiguration();
String poolUrl = configuration.get("db.project.pool").toString();
String classname = configuration.get("db.project.sqlmanager").toString();
m_sqlManager = this.initSqlManager(classname);
m_sqlManager.init(I_CmsProjectDriver.DRIVER_TYPE_ID, poolUrl);
m_driverManager = driverManager;
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ASSIGNED_POOL_1, poolUrl));
}
if ((successiveDrivers != null) && !successiveDrivers.isEmpty()) {
if (LOG.isWarnEnabled()) {
LOG.warn(Messages.get().getBundle().key(
Messages.LOG_SUCCESSIVE_DRIVERS_UNSUPPORTED_1,
getClass().getName()));
}
}
}
/**
* @see org.opencms.db.I_CmsProjectDriver#initSqlManager(String)
*/
public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) {
return CmsSqlManager.getInstance(classname);
}
/**
* @see org.opencms.db.I_CmsProjectDriver#publishDeletedFolder(org.opencms.db.CmsDbContext, org.opencms.report.I_CmsReport, int, int, org.opencms.file.CmsProject, org.opencms.file.CmsFolder, org.opencms.util.CmsUUID, int)
*/
public void publishDeletedFolder(
CmsDbContext dbc,
I_CmsReport report,
int m,
int n,
CmsProject onlineProject,
CmsFolder currentFolder,
CmsUUID publishHistoryId,
int publishTag) throws CmsDataAccessException {
try {
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(Messages.get().container(Messages.RPT_DELETE_FOLDER_0), I_CmsReport.FORMAT_NOTE);
report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
dbc.removeSiteRoot(currentFolder.getRootPath())));
report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
CmsResourceState folderState = fixMovedResource(
dbc,
onlineProject,
currentFolder,
publishHistoryId,
publishTag);
// read the folder online
CmsFolder onlineFolder = m_driverManager.readFolder(dbc, currentFolder.getRootPath(), CmsResourceFilter.ALL);
// write history before deleting
internalWriteHistory(dbc, currentFolder, folderState, null, publishHistoryId, publishTag);
try {
// delete the properties online and offline
m_driverManager.getVfsDriver().deletePropertyObjects(
dbc,
onlineProject.getUuid(),
onlineFolder,
CmsProperty.DELETE_OPTION_DELETE_STRUCTURE_AND_RESOURCE_VALUES);
m_driverManager.getVfsDriver().deletePropertyObjects(
dbc,
dbc.currentProject().getUuid(),
currentFolder,
CmsProperty.DELETE_OPTION_DELETE_STRUCTURE_AND_RESOURCE_VALUES);
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_DELETING_PROPERTIES_1,
currentFolder.getRootPath()), e);
}
throw e;
}
try {
// remove the folder online and offline
m_driverManager.getVfsDriver().removeFolder(dbc, dbc.currentProject(), currentFolder);
m_driverManager.getVfsDriver().removeFolder(dbc, onlineProject, currentFolder);
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_REMOVING_RESOURCE_1,
currentFolder.getRootPath()), e);
}
throw e;
}
try {
// remove the ACL online and offline
m_driverManager.getUserDriver().removeAccessControlEntries(
dbc,
onlineProject,
onlineFolder.getResourceId());
m_driverManager.getUserDriver().removeAccessControlEntries(
dbc,
dbc.currentProject(),
currentFolder.getResourceId());
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(
Messages.get().getBundle().key(Messages.LOG_REMOVING_ACL_1, currentFolder.getRootPath()),
e);
}
throw e;
}
try {
m_driverManager.getVfsDriver().deleteRelations(
dbc,
onlineProject.getUuid(),
onlineFolder,
CmsRelationFilter.TARGETS);
m_driverManager.getVfsDriver().deleteRelations(
dbc,
dbc.currentProject().getUuid(),
currentFolder,
CmsRelationFilter.TARGETS);
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_REMOVING_RELATIONS_1,
currentFolder.getRootPath()), e);
}
throw e;
}
report.println(
org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
I_CmsReport.FORMAT_OK);
if (LOG.isDebugEnabled()) {
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_DEL_FOLDER_3,
currentFolder.getRootPath(),
String.valueOf(m),
String.valueOf(n)));
}
}
} finally {
// notify the app. that the published folder and it's properties have been modified offline
OpenCms.fireCmsEvent(new CmsEvent(
I_CmsEventListener.EVENT_RESOURCE_AND_PROPERTIES_MODIFIED,
Collections.singletonMap("resource", currentFolder)));
}
}
/**
* @see org.opencms.db.I_CmsProjectDriver#publishFile(org.opencms.db.CmsDbContext, org.opencms.report.I_CmsReport, int, int, org.opencms.file.CmsProject, org.opencms.file.CmsResource, java.util.Set, org.opencms.util.CmsUUID, int)
*/
public void publishFile(
CmsDbContext dbc,
I_CmsReport report,
int m,
int n,
CmsProject onlineProject,
CmsResource offlineResource,
Set publishedContentIds,
CmsUUID publishHistoryId,
int publishTag) throws CmsDataAccessException {
/*
* Never use onlineResource.getState() here!
* Only use offlineResource.getState() to determine the state of an offline resource!
*
* In case a resource has siblings, after a sibling was published the structure
* and resource states are reset to UNCHANGED -> the state of the corresponding
* onlineResource is still NEW, DELETED or CHANGED.
* Thus, using onlineResource.getState() will inevitably result in unpublished resources!
*/
try {
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);
if (offlineResource.getState().isDeleted()) {
report.print(Messages.get().container(Messages.RPT_DELETE_FILE_0), I_CmsReport.FORMAT_NOTE);
report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
dbc.removeSiteRoot(offlineResource.getRootPath())));
report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
publishDeletedFile(dbc, onlineProject, offlineResource, publishHistoryId, publishTag);
dbc.pop();
// delete old historical entries
m_driverManager.getHistoryDriver().deleteEntries(
dbc,
new CmsHistoryFile(offlineResource),
OpenCms.getSystemInfo().getHistoryVersionsAfterDeletion(),
-1);
report.println(
org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
I_CmsReport.FORMAT_OK);
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_DEL_FILE_3,
String.valueOf(m),
String.valueOf(n),
offlineResource.getRootPath()));
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?