⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmsprojectdriver.java

📁 一个cms内容管理平台
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                }

                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 + -