📄 cmsimportversion2.java
字号:
}
// no encoding attribute found
return "";
}
/**
* @see org.opencms.importexport.A_CmsImport#importUser(String, String, String, String, String, String, long, Map, List)
*/
protected void importUser(
String name,
String flags,
String password,
String firstname,
String lastname,
String email,
long dateCreated,
Map userInfo,
List userGroups) throws CmsImportExportException {
boolean convert = false;
Map config = OpenCms.getPasswordHandler().getConfiguration();
if ((config != null) && config.containsKey(I_CmsPasswordHandler.CONVERT_DIGEST_ENCODING)) {
convert = Boolean.valueOf((String)config.get(I_CmsPasswordHandler.CONVERT_DIGEST_ENCODING)).booleanValue();
}
if (convert) {
password = convertDigestEncoding(password);
}
super.importUser(name, flags, password, firstname, lastname, email, dateCreated, userInfo, userGroups);
}
/**
* 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_convertToXmlPage = true;
m_webAppNames = new ArrayList();
super.initialize();
}
/**
* Sets the right encoding and returns the result.<p>
*
* @param content the filecontent
* @param encoding the encoding to use
* @return modified content
*/
protected String setEncoding(String content, String encoding) {
if (content.toLowerCase().indexOf("<?xml") == -1) {
return content;
} else {
// XML information present, replace encoding
// set the encoding only if it does not exist
String xmlTag = content.substring(0, content.indexOf(">") + 1);
if (xmlTag.toLowerCase().indexOf("encoding") == -1) {
content = content.substring(content.indexOf(">") + 1);
content = "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>" + content;
}
}
return content;
}
/**
* Returns the compatibility web app names.<p>
*
* @return the compatibility web app names
*/
private List getCompatibilityWebAppNames() {
List webAppNamesOri = new ArrayList();
String configuredWebAppNames = (String)OpenCms.getRuntimeProperty(COMPATIBILITY_WEBAPPNAMES);
if ((configuredWebAppNames != null) && (configuredWebAppNames.length() != 0)) {
// split the comma separated list of web app names
StringTokenizer tokenizer = new StringTokenizer(configuredWebAppNames, ",;");
while (tokenizer.hasMoreTokens()) {
webAppNamesOri.add(tokenizer.nextToken());
}
}
List webAppNames = new ArrayList();
for (int i = 0; i < webAppNamesOri.size(); i++) {
// remove possible white space
String name = ((String)webAppNamesOri.get(i)).trim();
if (CmsStringUtil.isNotEmpty(name)) {
webAppNames.add(name);
if (LOG.isInfoEnabled()) {
LOG.info(Messages.get().getBundle().key(
Messages.INIT_IMPORTEXPORT_OLD_CONTEXT_PATH_2,
Integer.toString((i + 1)),
name));
}
}
}
String key = (webAppNames.size() > 0) ? Messages.INIT_IMPORTEXPORT_OLD_CONTEXT_SUPPORT_ENABLED_0
: Messages.INIT_IMPORTEXPORT_OLD_CONTEXT_SUPPORT_DISABLED_0;
if (LOG.isInfoEnabled()) {
LOG.info(Messages.get().getBundle().key(key));
}
// add current context to webapp names list
if (!webAppNames.contains(OpenCms.getSystemInfo().getOpenCmsContext())) {
webAppNames.add(OpenCms.getSystemInfo().getOpenCmsContext());
}
return webAppNames;
}
/**
* Imports the resources and writes them to the cms.<p>
*
* @throws CmsImportExportException if something goes wrong
*/
private void importAllResources() throws CmsImportExportException {
List fileNodes = null, acentryNodes = null;
Element currentElement = null, currentEntry = null;
String source = null, destination = null, resourceTypeName = null, timestamp = null, uuid = null, uuidresource = null;
long lastmodified = 0;
int resourceTypeId = CmsResourceTypePlain.getStaticTypeId();
List properties = null;
boolean old_overwriteCollidingResources = false;
try {
m_webAppNames = getCompatibilityWebAppNames();
} catch (Exception e) {
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_IMPORTEXPORT_ERROR_GETTING_WEBAPP_COMPATIBILITY_NAMES_0), e);
}
m_report.println(e);
}
if (m_webAppNames == null) {
m_webAppNames = Collections.EMPTY_LIST;
}
// get the old webapp url from the OpenCms properties
m_webappUrl = OpenCms.getImportExportManager().getOldWebAppUrl();
if (m_webappUrl == null) {
// use a default value
m_webappUrl = "http://localhost:8080/opencms/opencms";
}
// cut last "/" from webappUrl if present
if (m_webappUrl.endsWith("/")) {
m_webappUrl = m_webappUrl.substring(0, m_webappUrl.lastIndexOf("/"));
}
// get list of unwanted properties
List deleteProperties = OpenCms.getImportExportManager().getIgnoredProperties();
// get list of immutable resources
List immutableResources = OpenCms.getImportExportManager().getImmutableResources();
if (immutableResources == null) {
immutableResources = Collections.EMPTY_LIST;
}
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_IMPORTEXPORT_IMMUTABLE_RESOURCES_SIZE_1,
Integer.toString(immutableResources.size())));
}
// save the value of the boolean flag whether colliding resources should be overwritten
old_overwriteCollidingResources = OpenCms.getImportExportManager().overwriteCollidingResources();
// force v1 and v2 imports to overwrite colliding resources, because they dont have resource
// UUIDs in their manifest anyway
OpenCms.getImportExportManager().setOverwriteCollidingResources(true);
try {
// get all file-nodes
fileNodes = m_docXml.selectNodes("//" + CmsImportExportManager.N_FILE);
int importSize = fileNodes.size();
// walk through all files in manifest
for (int i = 0; i < importSize; i++) {
m_report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_SUCCESSION_2,
String.valueOf(i + 1),
String.valueOf(importSize)), I_CmsReport.FORMAT_NOTE);
currentElement = (Element)fileNodes.get(i);
// get all information for a file-import
source = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_SOURCE);
destination = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_DESTINATION);
resourceTypeName = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_TYPE);
if (RESOURCE_TYPE_NEWPAGE_NAME.equals(resourceTypeName)) {
resourceTypeId = RESOURCE_TYPE_NEWPAGE_ID;
} else if (RESOURCE_TYPE_LEGACY_PAGE_NAME.equals(resourceTypeName)) {
// resource with a "legacy" resource type are imported using the "plain" resource
// type because you cannot import a resource without having the resource type object
resourceTypeId = CmsResourceTypePlain.getStaticTypeId();
} else if (RESOURCE_TYPE_LINK_NAME.equals(resourceTypeName)) {
// set resource type of legacy "link" which is converted later
resourceTypeId = RESOURCE_TYPE_LINK_ID;
} else {
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(resourceTypeName);
resourceTypeId = type.getTypeId();
}
uuid = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_UUIDSTRUCTURE);
uuidresource = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_UUIDRESOURCE);
timestamp = CmsImport.getChildElementTextValue(currentElement, CmsImportExportManager.N_LASTMODIFIED);
if (timestamp != null) {
lastmodified = Long.parseLong(timestamp);
} else {
lastmodified = System.currentTimeMillis();
}
// if the type is "script" set it to plain
if ("script".equals(resourceTypeName)) {
resourceTypeName = CmsResourceTypePlain.getStaticTypeName();
}
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_IMPORTEXPORT_ORIGINAL_RESOURCE_NAME_1,
destination));
}
String translatedName = m_cms.getRequestContext().addSiteRoot(m_importPath + destination);
if (CmsResourceTypeFolder.RESOURCE_TYPE_NAME.equals(resourceTypeName)) {
// ensure folders end with a "/"
if (!CmsResource.isFolder(translatedName)) {
translatedName += "/";
}
}
if (LOG.isDebugEnabled()) {
LOG.debug(Messages.get().getBundle().key(
Messages.LOG_IMPORTEXPORT_TRANSLATED_RESOURCE_NAME_1,
translatedName));
}
boolean resourceNotImmutable = checkImmutable(translatedName, immutableResources);
translatedName = m_cms.getRequestContext().removeSiteRoot(translatedName);
if (resourceNotImmutable) {
// print out the information to the report
m_report.print(Messages.get().container(Messages.RPT_IMPORTING_0), I_CmsReport.FORMAT_NOTE);
m_report.print(org.opencms.report.Messages.get().container(
org.opencms.report.Messages.RPT_ARGUMENT_1,
translatedName));
m_report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
// get all properties
properties = readPropertiesFromManifest(currentElement, deleteProperties);
// import the specified file
CmsResource res = importResource(
source,
destination,
uuid,
uuidresource,
resourceTypeId,
resourceTypeName,
lastmodified,
properties);
if (res != null) {
List aceList = new ArrayList();
// write all imported access control entries for this file
acentryNodes = currentElement.selectNodes("*/" + CmsImportExportManager.N_ACCESSCONTROL_ENTRY);
// collect all access control entries
for (int j = 0; j < acentryNodes.size(); j++) {
currentEntry = (Element)acentryNodes.get(j);
// get the data of the access control entry
String id = CmsImport.getChildElementTextValue(currentEntry, CmsImportExportManager.N_ID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -