// No repository descriptor - prepare to import files directly
pathMapping = session.getPathMapping();
pathMapping.put("/", "/sites/"+site.getSiteKey()+"/files/");
}
NodeTypeRegistry reg = NodeTypeRegistry.getInstance();
DefinitionsMapping mapping = null;
// Import additional files - site.properties, old cateogries.xml , sitepermissions.xml
// and eventual plain file from 5.x imports
if (!sizes.containsKey(REPOSITORY_XML) || sizes.containsKey(SITE_PROPERTIES) ||
sizes.containsKey(CATEGORIES_XML)|| sizes.containsKey(SITE_PERMISSIONS_XML) ||
sizes.containsKey(DEFINITIONS_CND)|| sizes.containsKey(DEFINITIONS_MAP)
) {
zis = new NoCloseZipInputStream(new BufferedInputStream(new FileInputStream(file)));
try {
while (true) {
ZipEntry zipentry = zis.getNextEntry();
if (zipentry == null) break;
String name = zipentry.getName();
if (name.indexOf('\\') > -1) {
name = name.replace('\\', '/');
}
if (name.indexOf('/') > -1) {
if (!sizes.containsKey(REPOSITORY_XML) && !sizes.containsKey(FILESACL_XML)) {
// No repository descriptor - Old import format only
name = "/" + name;
if (name.startsWith("/content/sites")) {
name = pathMapping.get("/")
+ StringUtils.stripStart(name
.replaceFirst("/content/sites/[^/]+/files/", ""),
"/");
} else if (name.startsWith("/users")) {
Matcher m = Pattern.compile("/users/([^/]+)(/.*)?").matcher(name);
if (m.matches()) {
name = ServicesRegistry.getInstance().getJahiaUserManagerService().getUserSplittingRule().getPathForUsername(m.group(1));
name = name + "/files" + ((m.group(2) != null) ? m.group(2) : "");
}
} else if (name.startsWith("/content/users")) {
Matcher m = Pattern.compile("/content/users/([^/]+)(/.*)?").matcher(name);
if (m.matches()) {
name = ServicesRegistry.getInstance().getJahiaUserManagerService().getUserSplittingRule().getPathForUsername(m.group(1));
name = name + ((m.group(2) != null) ? m.group(2) : "");
}
} else {
name = pathMapping.get("/")
+ StringUtils.stripStart(name, "/");
}
if (!zipentry.isDirectory()) {
try {
String filename = name.substring(name.lastIndexOf('/') + 1);
String contentType = JahiaContextLoaderListener.getServletContext().getMimeType(filename);
ensureFile(jcrStoreService.getSessionFactory().getCurrentUserSession(), name, zis, contentType, site);
} catch (Exception e) {
logger.error("Cannot upload file " + zipentry.getName(), e);
}
} else {
ensureDir(jcrStoreService.getSessionFactory().getCurrentUserSession(), name, site);
}
}
} else if (name.equals(CATEGORIES_XML)) {
catProps = importCategoriesAndGetUuidProps(zis, categoriesImportHandler);
} else if (name.equals(DEFINITIONS_CND)) {
reg = new NodeTypeRegistry();
try {
if (legacyImport) {
JahiaCndReaderLegacy r = new JahiaCndReaderLegacy(new InputStreamReader(zis, "UTF-8"),zipentry.getName(), file.getName(), reg);
r.parse();
} else {