var fieldsByContent = new java.util.HashMap();
fillFieldsToMigrateMap();
var migratedFields = 0;
var migratedContents = 0;
// Migrate the multilingual nodes content by content
fieldsByContent.forEach(
function(contentId) {
var content = ametysResolver.resolveById("content://" + contentId);
migrateContent(content,
[renameMultilingualString],
true/* old versions have to be marked incompatible */,
null/* tag new versions */,
false/* not verbose - DO NOT ACTIVATE IN THIS CASE !! */);
}
);
print(migratedFields + " multilingual fields have been migrated in " + migratedContents + " contents.");
// Get all the multilingual nodes
function fillFieldsToMigrateMap()
{
var fieldsToMigrate = 0;
var qm = session.getWorkspace().getQueryManager();
var query = qm.createQuery("//element(*, ametys:multilingualString)", javax.jcr.query.Query.XPATH);
var nodes = query.execute().getNodes();
while (nodes.hasNext())
{
var node = nodes.next();
// Get the path of the multilingual metadata to migrate
var metadataPath = "";
var contentNode = node;
while (!contentNode.getPrimaryNodeType().isNodeType("ametys:content"))
{
metadataPath += node.getName() + "/";
contentNode = node.getParent();
}
metadataPath = metadataPath.slice(0, -1);
// Store the metadataPath to migrate by content ID
var contentId = contentNode.getIdentifier();
var fields = fieldsByContent.getOrDefault(contentId, new java.util.HashSet());
fields.add(metadataPath);
fieldsByContent.put(contentId, fields);
fieldsToMigrate++;
}
print(fieldsToMigrate + " multilingual fields to migrate potentially in " + fieldsByContent.keySet().size() + " contents.");
}
// Migrate the multilingual strings of the content and increment the global counter
function renameMultilingualString(content)
{
var migratedContent = false;
var contentId = content.getNode().getIdentifier();
// Get all metadata to migrate for the current content
var fields = fieldsByContent.get(contentId);
fields.forEach(
function(fieldName) {
var migratedField = false;
var fieldNode = content.getNode().getNode(fieldName);
var properties = fieldNode.getProperties();
while (properties.hasNext())
{
var property = properties.nextProperty();
// If the current property name doesn't starts with"ametys:" ...
var propertyName = property.getName();
if (!propertyName.contains(":"))
{
// ... move it to "ametys:[propertyName]" fieldNode.setProperty("ametys:" + propertyName, property.getValue());
property.remove();
migratedField = true;
}
}
if (migratedField)
{
migratedFields++;
migratedContent = true;
}
}
);
if (migratedContent)
{
migratedContents++;
}
}
Bérénice Maurel
added a comment - - edited
var fieldsByContent = new java.util.HashMap();
fillFieldsToMigrateMap();
var migratedFields = 0;
var migratedContents = 0;
// Migrate the multilingual nodes content by content
fieldsByContent.forEach(
function (contentId) {
var content = ametysResolver.resolveById( "content: //" + contentId);
migrateContent(content,
[renameMultilingualString],
true /* old versions have to be marked incompatible */ ,
null /* tag new versions */ ,
false /* not verbose - DO NOT ACTIVATE IN THIS CASE !! */ );
}
);
print(migratedFields + " multilingual fields have been migrated in " + migratedContents + " contents." );
// Get all the multilingual nodes
function fillFieldsToMigrateMap()
{
var fieldsToMigrate = 0;
var qm = session.getWorkspace().getQueryManager();
var query = qm.createQuery( " //element(*, ametys:multilingualString)" , javax.jcr.query.Query.XPATH);
var nodes = query.execute().getNodes();
while (nodes.hasNext())
{
var node = nodes.next();
// Get the path of the multilingual metadata to migrate
var metadataPath = "";
var contentNode = node;
while (!contentNode.getPrimaryNodeType().isNodeType( "ametys:content" ))
{
metadataPath += node.getName() + "/" ;
contentNode = node.getParent();
}
metadataPath = metadataPath.slice(0, -1);
// Store the metadataPath to migrate by content ID
var contentId = contentNode.getIdentifier();
var fields = fieldsByContent.getOrDefault(contentId, new java.util.HashSet());
fields.add(metadataPath);
fieldsByContent.put(contentId, fields);
fieldsToMigrate++;
}
print(fieldsToMigrate + " multilingual fields to migrate potentially in " + fieldsByContent.keySet().size() + " contents." );
}
// Migrate the multilingual strings of the content and increment the global counter
function renameMultilingualString(content)
{
var migratedContent = false ;
var contentId = content.getNode().getIdentifier();
// Get all metadata to migrate for the current content
var fields = fieldsByContent.get(contentId);
fields.forEach(
function (fieldName) {
var migratedField = false ;
var fieldNode = content.getNode().getNode(fieldName);
var properties = fieldNode.getProperties();
while (properties.hasNext())
{
var property = properties.nextProperty();
// If the current property name doesn't starts with "ametys:" ...
var propertyName = property.getName();
if (!propertyName.contains( ":" ))
{
// ... move it to "ametys:[propertyName]"
fieldNode.setProperty( "ametys:" + propertyName, property.getValue());
property.remove();
migratedField = true ;
}
}
if (migratedField)
{
migratedFields++;
migratedContent = true ;
}
}
);
if (migratedContent)
{
migratedContents++;
}
}
Bérénice Maurel
Caroline Bayle
Votes:
0Vote for this issue
Watchers:
2Start watching this issue
Created:
Updated:
Resolved:
{"errorMessages":["jqlTooComplex"],"errors":{}}
[{"id":-1,"name":"My open issues","jql":"assignee = currentUser() AND resolution = Unresolved order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-2,"name":"Reported by me","jql":"reporter = currentUser() order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-4,"name":"All issues","jql":"order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-5,"name":"Open issues","jql":"resolution = Unresolved order by priority DESC,updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-9,"name":"Done issues","jql":"statusCategory = Done order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-3,"name":"Viewed recently","jql":"issuekey in issueHistory() order by lastViewed DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-6,"name":"Created recently","jql":"created >= -1w order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-7,"name":"Resolved recently","jql":"resolutiondate >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-8,"name":"Updated recently","jql":"updated >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false}]