?? a_cmsimport.java
字號:
}
// now try to import the groups in the stack
while (!m_groupsToCreate.empty()) {
Stack tempStack = m_groupsToCreate;
m_groupsToCreate = new Stack();
while (tempStack.size() > 0) {
Map groupdata = (HashMap)tempStack.pop();
name = (String)groupdata.get(CmsImportExportManager.N_NAME);
description = (String)groupdata.get(CmsImportExportManager.N_DESCRIPTION);
flags = (String)groupdata.get(CmsImportExportManager.N_FLAGS);
parentgroup = (String)groupdata.get(CmsImportExportManager.N_PARENTGROUP);
// try to import the group
importGroup(name, description, flags, parentgroup);
}
}
} catch (CmsImportExportException e) {
throw e;
} catch (Exception e) {
m_report.println(e);
CmsMessageContainer message = Messages.get().container(Messages.ERR_IMPORTEXPORT_ERROR_IMPORTING_GROUPS_0);
if (LOG.isDebugEnabled()) {
LOG.debug(message.key(), e);
}
throw new CmsImportExportException(message, e);
}
}
/**
* Imports a single user.<p>
* @param name user name
* @param description user description
* @param flags user flags
* @param password user password
* @param firstname firstname of the user
* @param lastname lastname of the user
* @param email user email
* @param address user address
* @param type user type
* @param userInfo user info
* @param userGroups user groups
*
* @throws CmsImportExportException in case something goes wrong
*/
protected void importUser(
String name,
String description,
String flags,
String password,
String firstname,
String lastname,
String email,
String address,
String type,
Map userInfo,
List userGroups) throws CmsImportExportException {
// create a new user id
String id = new CmsUUID().toString();
try {
try {
m_report.print(Messages.get().container(Messages.RPT_IMPORT_USER_0), I_CmsReport.FORMAT_NOTE);
m_report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
name));
m_report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
m_cms.importUser(
id,
name,
password,
description,
firstname,
lastname,
email,
address,
Integer.parseInt(flags),
Integer.parseInt(type),
userInfo);
// add user to all groups list
for (int i = 0; i < userGroups.size(); i++) {
try {
m_cms.addUserToGroup(name, (String)userGroups.get(i));
} catch (CmsException exc) {
// ignore
}
}
m_report.println(
org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
I_CmsReport.FORMAT_OK);
} catch (CmsException exc) {
m_report.println(Messages.get().container(Messages.RPT_NOT_CREATED_0), I_CmsReport.FORMAT_OK);
}
} catch (Exception e) {
m_report.println(e);
CmsMessageContainer message = Messages.get().container(
Messages.ERR_IMPORTEXPORT_ERROR_IMPORTING_USER_1,
name);
if (LOG.isDebugEnabled()) {
LOG.debug(message.key(), e);
}
throw new CmsImportExportException(message, e);
}
}
/**
* Imports the OpenCms users.<p>
*
* @throws CmsImportExportException if something goes wrong
*/
protected void importUsers() throws CmsImportExportException {
List userNodes;
List groupNodes;
List userGroups;
Element currentElement, currentGroup;
Map userInfo = new HashMap();
String name, description, flags, password, firstname, lastname, email, address, type, pwd, infoNode, defaultGroup;
// try to get the import resource
//getImportResource();
try {
// getAll user nodes
userNodes = m_docXml.selectNodes("//" + CmsImportExportManager.N_USERDATA);
// walk threw all groups in manifest
for (int i = 0; i < userNodes.size(); i++) {
currentElement = (Element)userNodes.get(i);
name = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_NAME);
name = OpenCms.getImportExportManager().translateUser(name);
// decode passwords using base 64 decoder
pwd = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_PASSWORD);
password = new String(Base64.decodeBase64(pwd.trim().getBytes()));
description = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_DESCRIPTION);
flags = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_FLAGS);
firstname = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_FIRSTNAME);
lastname = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_LASTNAME);
email = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_EMAIL);
address = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_TAG_ADDRESS);
type = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_TYPE);
defaultGroup = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_DEFAULTGROUP);
// get the userinfo and put it into the additional info map
infoNode = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_USERINFO);
try {
// read the userinfo from the dat-file
byte[] value = getFileBytes(infoNode);
// deserialize the object
ByteArrayInputStream bin = new ByteArrayInputStream(value);
ObjectInputStream oin = new ObjectInputStream(bin);
userInfo = (Map)oin.readObject();
} catch (IOException ioex) {
m_report.println(ioex);
}
// get the groups of the user and put them into the list
groupNodes = currentElement.selectNodes("*/" + CmsImportExportManager.N_GROUPNAME);
userGroups = new ArrayList();
for (int j = 0; j < groupNodes.size(); j++) {
currentGroup = (Element)groupNodes.get(j);
String userInGroup = CmsImport.getChildElementTextValue(currentGroup, CmsImportExportManager.N_NAME);
userInGroup = OpenCms.getImportExportManager().translateGroup(userInGroup);
userGroups.add(userInGroup);
}
if (CmsStringUtil.isNotEmpty(defaultGroup)) {
userInfo.put(CmsUserSettings.ADDITIONAL_INFO_DEFAULTGROUP, defaultGroup);
}
// import this user
importUser(
name,
description,
flags,
password,
firstname,
lastname,
email,
address,
type,
userInfo,
userGroups);
}
} catch (CmsImportExportException e) {
throw e;
} catch (Exception e) {
m_report.println(e);
CmsMessageContainer message = Messages.get().container(Messages.ERR_IMPORTEXPORT_ERROR_IMPORTING_USERS_0);
if (LOG.isDebugEnabled()) {
LOG.debug(message.key(), e);
}
throw new CmsImportExportException(message, e);
}
}
/**
* Initializes all member variables before the import is started.<p>
*
* This is required since there is only one instance for
* each import version that is kept in memory and reused.<p>
*/
protected void initialize() {
m_groupsToCreate = new Stack();
}
/**
* Reads all properties below a specified parent element from the <code>manifest.xml</code>.<p>
*
* @param parentElement the current file node
* @param ignoredPropertyKeys a list of properies to be ignored
*
* @return a list with all properties
*/
protected List readPropertiesFromManifest(Element parentElement, List ignoredPropertyKeys) {
// all imported Cms property objects are collected in map first forfaster access
Map properties = new HashMap();
CmsProperty property = null;
List propertyElements = parentElement.selectNodes("./"
+ CmsImportExportManager.N_PROPERTIES
+ "/"
+ CmsImportExportManager.N_PROPERTY);
Element propertyElement = null;
String key = null, value = null;
Attribute attrib = null;
// iterate over all property elements
for (int i = 0, n = propertyElements.size(); i < n; i++) {
propertyElement = (Element)propertyElements.get(i);
key = CmsImport.getChildElementTextValue(propertyElement, CmsImportExportManager.N_NAME);
if (key == null || ignoredPropertyKeys.contains(key)) {
// continue if the current property (key) should be ignored or is null
continue;
}
// all Cms properties are collected in a map keyed by their property keys
property = (CmsProperty)properties.get(key);
if (property == null) {
property = new CmsProperty();
property.setName(key);
property.setAutoCreatePropertyDefinition(true);
properties.put(key, property);
}
value = CmsImport.getChildElementTextValue(propertyElement, CmsImportExportManager.N_VALUE);
if (value == null) {
value = "";
}
attrib = propertyElement.attribute(CmsImportExportManager.N_PROPERTY_ATTRIB_TYPE);
if ((attrib != null) && attrib.getValue().equals(CmsImportExportManager.N_PROPERTY_ATTRIB_TYPE_SHARED)) {
// it is a shared/resource property value
property.setResourceValue(value);
} else {
// it is an individual/structure value
property.setStructureValue(value);
}
}
return new ArrayList(properties.values());
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -