📄 cmsdbaccess.java
字号:
*
* @throws CmsException Throws CmsException if operation was not succesful
*/
public CmsFile createFile(CmsUser user,
CmsProject project,
CmsProject onlineProject,
String filename, int flags,int parentId,
byte[] contents, I_CmsResourceType resourceType)
throws CmsException {
if (filename.length() > C_MAX_LENGTH_RESOURCE_NAME){
throw new CmsException("["+this.getClass().getName()+"] "+"Resourcename too long(>"+C_MAX_LENGTH_RESOURCE_NAME+") ",CmsException.C_BAD_NAME);
}
int state= C_STATE_NEW;
// Test if the file is already there and marked as deleted.
// If so, delete it
try {
readFileHeader(project.getId(), filename, false);
throw new CmsException("["+this.getClass().getName()+"] ",CmsException.C_FILE_EXISTS);
} catch (CmsException e) {
// if the file is maked as deleted remove it!
if (e.getType()==CmsException.C_RESOURCE_DELETED) {
removeFile(project.getId(),filename);
state=C_STATE_CHANGED;
//throw new CmsException("["+this.getClass().getName()+"] ",CmsException.C_FILE_EXISTS);
}
if (e.getType()==CmsException.C_FILE_EXISTS) {
throw e;
}
}
String usedPool;
String usedStatement;
if (project.getId() == onlineProject.getId()) {
usedPool = m_poolNameOnline;
usedStatement = "_ONLINE";
} else {
usedPool = m_poolName;
usedStatement = "";
}
int resourceId = nextId(m_cq.get("C_TABLE_RESOURCES"+usedStatement));
int fileId = nextId(m_cq.get("C_TABLE_FILES"+usedStatement));
PreparedStatement statement = null;
PreparedStatement statementFileWrite = null;
Connection con = null;
try {
con = DriverManager.getConnection(usedPool);
statement = con.prepareStatement(m_cq.get("C_RESOURCES_WRITE"+usedStatement));
// write new resource to the database
statement.setInt(1,resourceId);
statement.setInt(2,parentId);
statement.setString(3, filename);
statement.setInt(4,resourceType.getResourceType());
statement.setInt(5,flags);
statement.setInt(6,user.getId());
statement.setInt(7,user.getDefaultGroupId());
statement.setInt(8,project.getId());
statement.setInt(9,fileId);
statement.setInt(10,C_ACCESS_DEFAULT_FLAGS);
statement.setInt(11,state);
statement.setInt(12,C_UNKNOWN_ID);
statement.setInt(13,resourceType.getLauncherType());
statement.setString(14,resourceType.getLauncherClass());
statement.setTimestamp(15,new Timestamp(System.currentTimeMillis()));
statement.setTimestamp(16,new Timestamp(System.currentTimeMillis()));
statement.setInt(17,contents.length);
statement.setInt(18,user.getId());
statement.executeUpdate();
statementFileWrite = con.prepareStatement(m_cq.get("C_FILES_WRITE"+usedStatement));
statementFileWrite.setInt(1,fileId);
statementFileWrite.setBytes(2,contents);
statementFileWrite.executeUpdate();
} catch (SQLException e){
throw new CmsException("["+this.getClass().getName()+"] "+e.getMessage(),CmsException.C_SQL_ERROR, e);
}finally {
// close all db-resources
if(statement != null) {
try {
statement.close();
} catch(SQLException exc) {
// nothing to do here
}
}
if(statementFileWrite != null) {
try {
statementFileWrite.close();
} catch(SQLException exc) {
// nothing to do here
}
}
if(con != null) {
try {
con.close();
} catch(SQLException exc) {
// nothing to do here
}
}
}
return readFile(project.getId(),onlineProject.getId(),filename);
}
/**
* Add a new group to the Cms.<BR/>
*
* Only the admin can do this.<P/>
*
* @param name The name of the new group.
* @param description The description for the new group.
* @param flags The flags for the new group.
* @param name The name of the parent group (or null).
*
* @return Group
*
* @throws CmsException Throws CmsException if operation was not succesfull.
*/
public CmsGroup createGroup (String name, String description, int flags,
String parent) throws CmsException
{
int parentId = C_UNKNOWN_ID;
CmsGroup group = null;
PreparedStatement statement = null;
Connection con = null;
try {
con = DriverManager.getConnection(m_poolName);
// get the id of the parent group if nescessary
if ((parent != null) && (!"".equals (parent))){
parentId = readGroup (parent).getId ();
}
// create statement
statement = con.prepareStatement(m_cq.get("C_GROUPS_CREATEGROUP"));
// write new group to the database
statement.setInt (1, nextId (C_TABLE_GROUPS));
statement.setInt (2, parentId);
statement.setString (3, name);
statement.setString (4, description);
statement.setInt (5, flags);
statement.executeUpdate ();
// create the user group by reading it from the database.
// this is nescessary to get the group id which is generated in the
// database.
group = readGroup (name);
} catch (SQLException e){
throw new CmsException ("[" + this.getClass ().getName () + "] " +
e.getMessage (), CmsException.C_SQL_ERROR, e);
} finally {
// close all db-resources
if(statement != null) {
try {
statement.close();
} catch(SQLException exc) {
// nothing to do here
}
}
if(con != null) {
try {
con.close();
} catch(SQLException exc) {
// nothing to do here
}
}
}
return group;
}
/**
* Deletes all properties for a project.
*
* @param project The project to delete.
*
* @throws CmsException Throws CmsException if operation was not succesful
*/
public void deleteProjectProperties(CmsProject project) throws CmsException {
// get all resources of the project
Vector resources = readResources(project);
for (int i = 0; i < resources.size(); i++) {
// delete the properties for each resource in project
deleteAllProperties(project.getId(),(CmsResource) resources.elementAt(i));
}
}
/**
* Returns all projects from the history.
*
*
* @return a Vector of projects.
*/
public Vector getAllBackupProjects() throws CmsException {
Vector projects = new Vector();
ResultSet res = null;
PreparedStatement statement = null;
Connection con = null;
try {
// create the statement
con = DriverManager.getConnection(m_poolNameBackup);
statement = con.prepareStatement(m_cq.get("C_PROJECTS_READLAST_BACKUP"));
statement.setInt(1, 300);
res = statement.executeQuery();
while(res.next()) {
Vector resources = readBackupProjectResources(res.getInt("VERSION_ID"));
projects.addElement( new CmsBackupProject(res.getInt("VERSION_ID"),
res.getInt("PROJECT_ID"),
res.getString("PROJECT_NAME"),
SqlHelper.getTimestamp(res,"PROJECT_PUBLISHDATE"),
res.getInt("PROJECT_PUBLISHED_BY"),
res.getString("PROJECT_PUBLISHED_BY_NAME"),
res.getString("PROJECT_DESCRIPTION"),
res.getInt("TASK_ID"),
res.getInt("USER_ID"),
res.getString("USER_NAME"),
res.getInt("GROUP_ID"),
res.getString("GROUP_NAME"),
res.getInt("MANAGERGROUP_ID"),
res.getString("MANAGERGROUP_NAME"),
SqlHelper.getTimestamp(res,"PROJECT_CREATEDATE"),
res.getInt("PROJECT_TYPE"),
resources));
}
} catch( SQLException exc ) {
throw new CmsException("[" + this.getClass().getName() + ".getAllBackupProjects()] " + exc.getMessage(),
CmsException.C_SQL_ERROR, exc);
} finally {
// close all db-resources
if(res != null) {
try {
res.close();
} catch(SQLException exc) {
// nothing to do here
}
}
if(statement != null) {
try {
statement.close();
} catch(SQLException exc) {
// nothing to do here
}
}
if(con != null) {
try {
con.close();
} catch(SQLException exc) {
// nothing to do here
}
}
}
return(projects);
}
/**
* Destroys this access-module
* @throws throws CmsException if something goes wrong.
*/
public void destroy() throws CmsException {
try {
((com.opencms.dbpool.CmsDriver) DriverManager.getDriver(m_poolName)).destroy();
} catch(SQLException exc) {
// destroy not possible - ignoring the exception
}
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging() ) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[mySql.CmsDbAccess] Destroyed");
}
}
/**
* Private method to init all default-resources
*/
protected void fillDefaults() throws CmsException {
// set the groups
CmsGroup guests = createGroup(C_GROUP_GUEST, "the guest-group", C_FLAG_ENABLED, null);
CmsGroup administrators = createGroup(C_GROUP_ADMIN, "the admin-group", C_FLAG_ENABLED | C_FLAG_GROUP_PROJECTMANAGER, null);
CmsGroup users = createGroup(C_GROUP_USERS, "the users-group to access the workplace", C_FLAG_ENABLED | C_FLAG_GROUP_ROLE | C_FLAG_GROUP_PROJECTCOWORKER, C_GROUP_GUEST);
CmsGroup projectleader = createGroup(C_GROUP_PROJECTLEADER, "the projectmanager-group", C_FLAG_ENABLED | C_FLAG_GROUP_PROJECTMANAGER | C_FLAG_GROUP_PROJECTCOWORKER | C_FLAG_GROUP_ROLE, users.getName());
// add the users
CmsUser guest = addUser(C_USER_GUEST, "", "the guest-user", "", "", "", 0, 0, C_FLAG_ENABLED, new Hashtable(), guests, "", "", C_USER_TYPE_SYSTEMUSER);
CmsUser admin = addUser(C_USER_ADMIN, "admin", "the admin-user", "", "", "", 0, 0, C_FLAG_ENABLED, new Hashtable(), administrators, "", "", C_USER_TYPE_SYSTEMUSER);
addUserToGroup(guest.getId(), guests.getId());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -