📄 cmsprojectdriver.java
字号:
}
try {
// write the file to the backup and publishing history
if (backupEnabled) {
if (offlineProperties == null) {
offlineProperties = m_driverManager.getVfsDriver().readPropertyObjects(
dbc,
dbc.currentProject(),
offlineResource);
}
m_driverManager.getBackupDriver().writeBackupResource(
dbc,
newFile,
offlineProperties,
backupTagId,
publishDate,
maxVersions);
}
m_driverManager.getProjectDriver().writePublishHistory(
dbc,
dbc.currentProject(),
publishHistoryId,
new CmsPublishedResource(offlineResource, backupTagId));
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_WRITING_PUBLISHING_HISTORY_1,
newFile.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_PUBLISHING_FILE_3,
offlineResource.getRootPath(),
String.valueOf(m),
String.valueOf(n)));
}
}
}
} finally {
// notify the app. that the published file and it's properties have been modified offline
OpenCms.fireCmsEvent(new CmsEvent(
I_CmsEventListener.EVENT_RESOURCE_AND_PROPERTIES_MODIFIED,
Collections.singletonMap("resource", offlineResource)));
}
}
/**
* @see org.opencms.db.I_CmsProjectDriver#publishFileContent(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsProject, org.opencms.file.CmsResource, java.util.Set)
*/
public CmsFile publishFileContent(
CmsDbContext dbc,
CmsProject offlineProject,
CmsProject onlineProject,
CmsResource offlineResource,
Set publishedResourceIds) throws CmsDataAccessException {
CmsFile newFile = null;
CmsFile offlineFile = null;
try {
// binary content gets only published once while a project is published
if (!publishedResourceIds.contains(offlineResource.getResourceId())) {
// read the file content offline
offlineFile = m_driverManager.getVfsDriver().readFile(
dbc,
offlineProject.getId(),
false,
offlineResource.getStructureId());
// create the file online
newFile = (CmsFile)offlineFile.clone();
newFile.setState(CmsResource.STATE_UNCHANGED);
m_driverManager.getVfsDriver().createResource(dbc, onlineProject, newFile, newFile.getContents());
// update the online/offline structure and resource records of the file
m_driverManager.getVfsDriver().publishResource(dbc, onlineProject, newFile, offlineFile, false);
// add the content ID to the content IDs that got already published
// publishedContentIds.add(offlineFileHeader.getContentId());
publishedResourceIds.add(offlineFile.getResourceId());
} else {
// create the sibling online
m_driverManager.getVfsDriver().createSibling(dbc, onlineProject, offlineResource);
newFile = m_driverManager.getVfsDriver().readFile(
dbc,
onlineProject.getId(),
false,
offlineResource.getStructureId());
}
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_PUBLISHING_FILE_CONTENT_1,
offlineResource.toString()), e);
}
throw e;
}
return newFile;
}
/**
* @see org.opencms.db.I_CmsProjectDriver#publishFolder(org.opencms.db.CmsDbContext, org.opencms.report.I_CmsReport, int, int, org.opencms.file.CmsProject, org.opencms.file.CmsFolder, boolean, long, org.opencms.util.CmsUUID, int, int)
*/
public void publishFolder(
CmsDbContext dbc,
I_CmsReport report,
int m,
int n,
CmsProject onlineProject,
CmsFolder offlineFolder,
boolean backupEnabled,
long publishDate,
CmsUUID publishHistoryId,
int backupTagId,
int maxVersions) throws CmsDataAccessException {
CmsResource newFolder = null;
CmsResource onlineFolder = null;
List offlineProperties = null;
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_PUBLISH_FOLDER_0), I_CmsReport.FORMAT_NOTE);
report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
dbc.removeSiteRoot(offlineFolder.getRootPath())));
report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
if (offlineFolder.getState() == CmsResource.STATE_NEW) {
try {
// create the folder online
newFolder = (CmsFolder)offlineFolder.clone();
newFolder.setState(CmsResource.STATE_UNCHANGED);
onlineFolder = m_driverManager.getVfsDriver().createResource(dbc, onlineProject, newFolder, null);
} catch (CmsVfsResourceAlreadyExistsException e) {
try {
onlineFolder = m_driverManager.getVfsDriver().readFolder(
dbc,
onlineProject.getId(),
newFolder.getRootPath());
m_driverManager.getVfsDriver().publishResource(
dbc,
onlineProject,
onlineFolder,
offlineFolder,
false);
} catch (CmsDataAccessException e1) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_READING_RESOURCE_1,
offlineFolder.getRootPath()), e);
}
throw e1;
}
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_PUBLISHING_RESOURCE_1,
offlineFolder.getRootPath()), e);
}
throw e;
}
} else if (offlineFolder.getState() == CmsResource.STATE_CHANGED) {
try {
// read the folder online
onlineFolder = m_driverManager.getVfsDriver().readFolder(
dbc,
onlineProject.getId(),
offlineFolder.getStructureId());
} catch (CmsVfsResourceNotFoundException e) {
try {
onlineFolder = m_driverManager.getVfsDriver().createResource(
dbc,
onlineProject,
offlineFolder,
null);
onlineFolder.setState(CmsResource.STATE_UNCHANGED);
m_driverManager.getVfsDriver().writeResourceState(
dbc,
dbc.currentProject(),
onlineFolder,
CmsDriverManager.UPDATE_ALL);
} catch (CmsDataAccessException e1) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_PUBLISHING_RESOURCE_1,
offlineFolder.getRootPath()), e);
}
throw e1;
}
}
try {
// update the folder online
m_driverManager.getVfsDriver().publishResource(
dbc,
onlineProject,
onlineFolder,
offlineFolder,
false);
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_PUBLISHING_RESOURCE_1,
offlineFolder.getRootPath()), e);
}
throw e;
}
}
try {
// write the ACL online
m_driverManager.getUserDriver().publishAccessControlEntries(
dbc,
dbc.currentProject(),
onlineProject,
offlineFolder.getResourceId(),
onlineFolder.getResourceId());
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(
Messages.get().getBundle().key(Messages.LOG_PUBLISHING_ACL_1, offlineFolder.getRootPath()),
e);
}
throw e;
}
try {
// write the properties online
m_driverManager.getVfsDriver().deletePropertyObjects(
dbc,
onlineProject.getId(),
onlineFolder,
CmsProperty.DELETE_OPTION_DELETE_STRUCTURE_AND_RESOURCE_VALUES);
offlineProperties = m_driverManager.getVfsDriver().readPropertyObjects(
dbc,
dbc.currentProject(),
offlineFolder);
CmsProperty.setAutoCreatePropertyDefinitions(offlineProperties, true);
m_driverManager.getVfsDriver().writePropertyObjects(dbc, onlineProject, onlineFolder, offlineProperties);
} catch (CmsDataAccessException e) {
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle().key(
Messages.LOG_PUBLISHING_PROPERTIES_1,
offlineFolder.getRootPath()), e);
}
throw e;
}
try {
// write the folder to the backup and publishing history
if (backupEnabled) {
if (offlineProperties == null) {
offlineProperties = m_driverManager.getVfsDriver().readPropertyObjects(
dbc,
dbc.currentProject(),
offlineFolder);
}
m_driverManager.getBackupDriver().writeBackupResource(
dbc,
offlineFolder,
offlineProperties,
backupTagId,
publishDate,
maxVersions);
}
m_driverManager.getProjectDriver().writePublishHistory(
dbc,
dbc.currentProject(),
publishHistoryId,
new CmsPublishedResource(offlineFolder, backupTagId));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -