📄 testcmsimportexport.java
字号:
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(
CmsResourceTypeXmlPage.getStaticTypeId());
I_CmsLinkParseable validatable = (I_CmsLinkParseable)type;
// check the links
CmsFile res1 = cms.readFile(filename1);
List links1 = validatable.parseLinks(cms, res1);
assertEquals(links1.size(), 1);
assertEquals(links1.get(0).toString(), cms.getRequestContext().addSiteRoot(filename2));
CmsFile res2 = cms.readFile(filename2);
List links2 = validatable.parseLinks(cms, res2);
assertEquals(links2.size(), 1);
assertEquals(links2.get(0).toString(), cms.getRequestContext().addSiteRoot(filename1));
} finally {
try {
if (zipExportFilename != null) {
File file = new File(zipExportFilename);
if (file.exists()) {
file.delete();
}
}
} catch (Throwable t) {
// intentionally left blank
}
}
}
/**
* Tests the import of linked XmlContent in a different site, so that the link paths get broken.<p>
*
* @throws Exception if something goes wrong
*/
public void testImportExportBrokenLinksXml() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing the import of linked Xml Content in a different site, so that the link paths get broken.");
String filename1 = "/xmlcontent.html";
String filename2 = "/xmlcontent2.html";
String zipExportFilename = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/testImportExportBrokenLinks.zip");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
cms.getRequestContext().setSiteRoot("/sites/default/");
// create files
CmsResource res1 = cms.createResource(filename1, OpenCmsTestCase.ARTICLE_TYPEID);
CmsResource res2 = cms.createResource(filename2, OpenCmsTestCase.ARTICLE_TYPEID);
CmsFile file2 = cms.readFile(res2);
String content2 = new String(file2.getContents(), CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent2 = CmsXmlContentFactory.unmarshal(content2, CmsEncoder.ENCODING_UTF_8, resolver);
xmlcontent2.getValue("Text", Locale.ENGLISH, 0).setStringValue(cms, "<a href='" + filename1 + "'>test</a>");
if (!xmlcontent2.hasValue("Homepage", Locale.ENGLISH, 0)) {
xmlcontent2.addValue(cms, "Homepage", Locale.ENGLISH, 0);
}
xmlcontent2.getValue("Homepage", Locale.ENGLISH, 0).setStringValue(cms, filename1);
file2.setContents(xmlcontent2.marshal());
cms.writeFile(file2);
// if done before file2 exists, no structure id is stored
CmsFile file1 = cms.readFile(res1);
String content1 = new String(file1.getContents(), CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent1 = CmsXmlContentFactory.unmarshal(content1, CmsEncoder.ENCODING_UTF_8, resolver);
xmlcontent1.getValue("Text", Locale.ENGLISH, 0).setStringValue(cms, "<a href='" + filename2 + "'>test</a>");
if (!xmlcontent1.hasValue("Homepage", Locale.ENGLISH, 0)) {
xmlcontent1.addValue(cms, "Homepage", Locale.ENGLISH, 0);
}
xmlcontent1.getValue("Homepage", Locale.ENGLISH, 0).setStringValue(cms, filename2);
file1.setContents(xmlcontent1.marshal());
cms.writeFile(file1);
// publish the files
cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
// export the files
CmsVfsImportExportHandler vfsExportHandler = new CmsVfsImportExportHandler();
vfsExportHandler.setFileName(zipExportFilename);
List exportPaths = new ArrayList(1);
exportPaths.add(filename1);
exportPaths.add(filename2);
vfsExportHandler.setExportPaths(exportPaths);
vfsExportHandler.setIncludeSystem(false);
vfsExportHandler.setIncludeUnchanged(true);
vfsExportHandler.setExportUserdata(false);
OpenCms.getImportExportManager().exportData(
cms,
vfsExportHandler,
new CmsShellReport(cms.getRequestContext().getLocale()));
// delete the both files
cms.lockResource(filename1);
cms.lockResource(filename2);
cms.deleteResource(filename1, CmsResource.DELETE_REMOVE_SIBLINGS);
cms.deleteResource(filename2, CmsResource.DELETE_REMOVE_SIBLINGS);
// publish the deleted files
cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
cms.getRequestContext().setSiteRoot("/");
try {
// re-import the exported files
OpenCms.getImportExportManager().importData(
cms,
zipExportFilename,
"/",
new CmsShellReport(cms.getRequestContext().getLocale()));
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(OpenCmsTestCase.ARTICLE_TYPEID);
I_CmsLinkParseable validatable = (I_CmsLinkParseable)type;
// check the links
CmsFile newRes1 = cms.readFile(filename1);
List links1 = validatable.parseLinks(cms, newRes1);
assertEquals(links1.size(), 2);
assertEquals(links1.get(0).toString(), cms.getRequestContext().addSiteRoot(filename2));
assertEquals(links1.get(1).toString(), cms.getRequestContext().addSiteRoot(filename2));
CmsFile newRes2 = cms.readFile(filename2);
List links2 = validatable.parseLinks(cms, newRes2);
assertEquals(links2.size(), 2);
assertEquals(links2.get(0).toString(), cms.getRequestContext().addSiteRoot(filename1));
assertEquals(links2.get(1).toString(), cms.getRequestContext().addSiteRoot(filename1));
} finally {
try {
if (zipExportFilename != null) {
File file = new File(zipExportFilename);
if (file.exists()) {
file.delete();
}
}
} catch (Throwable t) {
// intentionally left blank
}
}
}
/**
* Tests an overwriting import of VFS data.<p>
*
* @throws Exception if something goes wrong
*/
public void testImportExportFolder() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing an overwriting import of VFS data.");
String filename = "folder1/";
String zipExportFilename = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/testImportExportFolder.zip");
try {
// export the folder
CmsVfsImportExportHandler vfsExportHandler = new CmsVfsImportExportHandler();
vfsExportHandler.setFileName(zipExportFilename);
List exportPaths = new ArrayList(1);
exportPaths.add(filename);
vfsExportHandler.setExportPaths(exportPaths);
vfsExportHandler.setIncludeSystem(false);
vfsExportHandler.setIncludeUnchanged(true);
vfsExportHandler.setExportUserdata(false);
OpenCms.getImportExportManager().exportData(
cms,
vfsExportHandler,
new CmsShellReport(cms.getRequestContext().getLocale()));
// re-import the exported folder
OpenCms.getImportExportManager().importData(
cms,
zipExportFilename,
"/",
new CmsShellReport(cms.getRequestContext().getLocale()));
} finally {
try {
if (zipExportFilename != null) {
File file = new File(zipExportFilename);
if (file.exists()) {
file.delete();
}
}
} catch (Throwable t) {
// intentionally left blank
}
}
}
/**
* Tests import with structure id.<p>
*
* @throws Exception if something goes wrong
*/
public void testImportExportId() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing import with structure id.");
String filename = "/dummy2.txt";
String contentStr = "This is a comment. I love comments.";
String zipExportFilename = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/testImportExportId.zip");
byte[] content = contentStr.getBytes();
try {
cms.getRequestContext().setSiteRoot("/");
// create a dummy plain text file by the temporary user
cms.createResource(filename, CmsResourceTypePlain.getStaticTypeId(), content, null);
// publish the dummy plain text file
cms.unlockResource(filename);
OpenCms.getPublishManager().publishResource(cms, filename);
OpenCms.getPublishManager().waitWhileRunning();
storeResources(cms, filename);
// export the dummy plain text file
CmsVfsImportExportHandler vfsExportHandler = new CmsVfsImportExportHandler();
vfsExportHandler.setFileName(zipExportFilename);
List exportPaths = new ArrayList(1);
exportPaths.add(filename);
vfsExportHandler.setExportPaths(exportPaths);
vfsExportHandler.setIncludeSystem(false);
vfsExportHandler.setIncludeUnchanged(true);
vfsExportHandler.setExportUserdata(false);
OpenCms.getImportExportManager().exportData(
cms,
vfsExportHandler,
new CmsShellReport(cms.getRequestContext().getLocale()));
// delete the dummy plain text file
cms.lockResource(filename);
cms.deleteResource(filename, CmsResource.DELETE_REMOVE_SIBLINGS);
// publish the deleted dummy plain text file
cms.unlockResource(filename);
OpenCms.getPublishManager().publishResource(cms, filename);
OpenCms.getPublishManager().waitWhileRunning();
// re-import the exported dummy plain text file
OpenCms.getImportExportManager().importData(
cms,
zipExportFilename,
"/",
new CmsShellReport(cms.getRequestContext().getLocale()));
// publish the file
cms.unlockResource(filename);
OpenCms.getPublishManager().publishResource(cms, filename);
OpenCms.getPublishManager().waitWhileRunning();
assertFilter(cms, cms.readResource(filename), OpenCmsTestResourceFilter.FILTER_IMPORTEXPORT);
} finally {
try {
if (zipExportFilename != null) {
File file = new File(zipExportFilename);
if (file.exists()) {
file.delete();
}
}
} catch (Throwable t) {
// intentionally left blank
}
}
}
/**
* Tests the import of a folder that has been moved.<p>
*
* @throws Exception if something goes wrong
*/
public void testImportMovedFolder() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing the import of a folder that has been moved.");
String filename = "newtestfile.html";
String foldername = "/folderToMove/";
String folder2 = "/movedFolder/";
String zipExportFilename = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/testImportExportMovedFolder.zip");
try {
cms.getRequestContext().setSiteRoot("/");
// create test file & folder
CmsResource folderBefore = cms.createResource(foldername, CmsResourceTypeFolder.getStaticTypeId());
cms.createResource(foldername + filename, CmsResourceTypePlain.getStaticTypeId());
// publish the folder
cms.unlockResource(foldername);
OpenCms.getPublishManager().publishResource(cms, foldername);
OpenCms.getPublishManager().waitWhileRunning();
storeResources(cms, foldername, true);
// export the folder
CmsVfsImportExportHandler vfsExportHandler = new CmsVfsImportExportHandler();
vfsExportHandler.setFileName(zipExportFilename);
List exportPaths = new ArrayList(1);
exportPaths.add(foldername);
vfsExportHandler.setExportPaths(exportPaths);
vfsExportHandler.setIncludeSystem(false);
vfsExportHandler.setIncludeUnchanged(true);
vfsExportHandler.setExportUserdata(false);
OpenCms.getImportExportManager().exportData(
cms,
vfsExportHandler,
new CmsShellReport(cms.getRequestContext().getLocale()));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -