📄 cmsbackupdriver.java
字号:
m_sqlManager.closeAll(dbc, null, stmt4, null);
}
}
/**
* @see org.opencms.db.I_CmsBackupDriver#destroy()
*/
public void destroy() throws Throwable {
finalize();
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SHUTDOWN_DRIVER_1, getClass().getName()));
}
}
/**
* @see org.opencms.db.I_CmsBackupDriver#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.backup.pool").toString();
String classname = configuration.get("db.backup.sqlmanager").toString();
m_sqlManager = this.initSqlManager(classname);
m_sqlManager.init(I_CmsBackupDriver.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_CmsBackupDriver#initSqlManager(String)
*/
public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) {
return CmsSqlManager.getInstance(classname);
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupFile(CmsDbContext, int, String)
*/
public CmsBackupResource readBackupFile(CmsDbContext dbc, int tagId, String resourcePath)
throws CmsDataAccessException {
CmsBackupResource file = null;
PreparedStatement stmt = null;
ResultSet res = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_FILES_READ_BACKUP");
stmt.setString(1, resourcePath);
stmt.setInt(2, tagId);
res = stmt.executeQuery();
if (res.next()) {
file = createBackupResource(res, true);
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
throw new CmsVfsResourceNotFoundException(Messages.get().container(
Messages.ERR_BACKUP_FILE_NOT_FOUND_1,
resourcePath.toString()));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return file;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupFileHeaders(org.opencms.db.CmsDbContext)
*/
public List readBackupFileHeaders(CmsDbContext dbc) throws CmsDataAccessException {
CmsBackupResource currentBackupResource = null;
ResultSet res = null;
List allHeaders = new ArrayList();
PreparedStatement stmt = null;
Connection conn = null;
Set storage = new HashSet();
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_RESOURCES_READ_ALL_BACKUP");
res = stmt.executeQuery();
while (res.next()) {
currentBackupResource = createBackupResource(res, false);
// only add each structureId x resourceId combination once
String key = currentBackupResource.getStructureId().toString()
+ currentBackupResource.getResourceId().toString();
if (!storage.contains(key)) {
// no entry found, so add it
allHeaders.add(currentBackupResource);
storage.add(key);
}
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
storage = null;
}
return allHeaders;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupFileHeaders(org.opencms.db.CmsDbContext, java.lang.String, org.opencms.util.CmsUUID)
*/
public List readBackupFileHeaders(CmsDbContext dbc, String resourcePath, CmsUUID id) throws CmsDataAccessException {
CmsBackupResource currentBackupResource = null;
ResultSet res = null;
List allHeaders = new ArrayList();
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_RESOURCES_READ_ALL_VERSIONS_BACKUP");
stmt.setString(1, resourcePath);
stmt.setString(2, id.toString());
res = stmt.executeQuery();
while (res.next()) {
currentBackupResource = createBackupResource(res, false);
allHeaders.add(currentBackupResource);
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return allHeaders;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupMaxVersion(org.opencms.db.CmsDbContext, org.opencms.util.CmsUUID)
*/
public int readBackupMaxVersion(CmsDbContext dbc, CmsUUID resourceId) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
ResultSet res = null;
int maxBackupVersion = 0;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_HISTORY_RESOURCE_MAX_BACKUP_VERSION");
stmt.setString(1, resourceId.toString());
res = stmt.executeQuery();
if (res.next()) {
maxBackupVersion = res.getInt(1);
} else {
maxBackupVersion = 0;
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return maxBackupVersion;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupProject(org.opencms.db.CmsDbContext, int)
*/
public CmsBackupProject readBackupProject(CmsDbContext dbc, int tagId) throws CmsDataAccessException {
PreparedStatement stmt = null;
CmsBackupProject project = null;
ResultSet res = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_PROJECTS_READBYVERSION_BACKUP");
stmt.setInt(1, tagId);
res = stmt.executeQuery();
if (res.next()) {
List projectresources = readBackupProjectResources(dbc, tagId);
project = new CmsBackupProject(
res.getInt("PUBLISH_TAG"),
res.getInt(m_sqlManager.readQuery("C_PROJECTS_PROJECT_ID")),
res.getString(m_sqlManager.readQuery("C_PROJECTS_PROJECT_NAME")),
res.getString(m_sqlManager.readQuery("C_PROJECTS_PROJECT_DESCRIPTION")),
res.getInt(m_sqlManager.readQuery("C_PROJECTS_TASK_ID")),
new CmsUUID(res.getString(m_sqlManager.readQuery("C_PROJECTS_USER_ID"))),
new CmsUUID(res.getString(m_sqlManager.readQuery("C_PROJECTS_GROUP_ID"))),
new CmsUUID(res.getString(m_sqlManager.readQuery("C_PROJECTS_MANAGERGROUP_ID"))),
res.getLong(m_sqlManager.readQuery("C_PROJECTS_DATE_CREATED")),
res.getInt(m_sqlManager.readQuery("C_PROJECTS_PROJECT_TYPE")),
CmsDbUtil.getTimestamp(res, "PROJECT_PUBLISHDATE"),
new CmsUUID(res.getString("PROJECT_PUBLISHED_BY")),
res.getString("PROJECT_PUBLISHED_BY_NAME"),
res.getString("USER_NAME"),
res.getString("GROUP_NAME"),
res.getString("MANAGERGROUP_NAME"),
projectresources);
} else {
throw new CmsDbEntryNotFoundException(Messages.get().container(
Messages.ERR_NO_BACKUP_PROJECT_WITH_TAG_ID_1,
new Integer(tagId)));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return project;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupProjectResources(org.opencms.db.CmsDbContext, int)
*/
public List readBackupProjectResources(CmsDbContext dbc, int tagId) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
ResultSet res = null;
List projectResources = new ArrayList();
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_PROJECTRESOURCES_READ_BACKUP");
stmt.setInt(1, tagId);
res = stmt.executeQuery();
while (res.next()) {
projectResources.add(res.getString("RESOURCE_PATH"));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return projectResources;
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupProjects(org.opencms.db.CmsDbContext)
*/
public List readBackupProjects(CmsDbContext dbc) throws CmsDataAccessException {
List projects = new ArrayList();
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
// create the statement
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_PROJECTS_READLAST_BACKUP");
res = stmt.executeQuery();
int i = 0;
int max = 300;
while (res.next() && (i < max)) {
List resources = readBackupProjectResources(dbc, res.getInt("PUBLISH_TAG"));
projects.add(new CmsBackupProject(
res.getInt("PUBLISH_TAG"),
res.getInt("PROJECT_ID"),
res.getString("PROJECT_NAME"),
res.getString("PROJECT_DESCRIPTION"),
res.getInt("TASK_ID"),
new CmsUUID(res.getString("USER_ID")),
new CmsUUID(res.getString("GROUP_ID")),
new CmsUUID(res.getString("MANAGERGROUP_ID")),
res.getLong("DATE_CREATED"),
res.getInt("PROJECT_TYPE"),
CmsDbUtil.getTimestamp(res, "PROJECT_PUBLISHDATE"),
new CmsUUID(res.getString("PROJECT_PUBLISHED_BY")),
res.getString("PROJECT_PUBLISHED_BY_NAME"),
res.getString("USER_NAME"),
res.getString("GROUP_NAME"),
res.getString("MANAGERGROUP_NAME"),
resources));
i++;
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return (projects);
}
/**
* @see org.opencms.db.I_CmsBackupDriver#readBackupProjectTag(org.opencms.db.CmsDbContext, long)
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -