function convertStringPropertyToBoolean(node, propertyName) { var hasChanged = false; if (node.hasProperty(propertyName)) { var property = node.getProperty(propertyName); if (property.getType() == 1) // 1 is for string { var valueAsString = property.getString(); property.remove(); if (valueAsString == "true") { node['setProperty(java.lang.String, boolean)'](propertyName, true); hasChanged = true; } else if (valueAsString == "false") { node['setProperty(java.lang.String, boolean)'](propertyName, false); hasChanged = true; } } } return hasChanged; } function convertStringPropertyToLong(node, propertyName) { var hasChanged = false; if (node.hasProperty(propertyName)) { var property = node.getProperty(propertyName); if (property.getType() == 1) // 1 is for string { var valueAsString = property.getString(); property.remove(); if (valueAsString) { var value = Number(valueAsString); node['setProperty(java.lang.String, long)'](propertyName, value); hasChanged = true; } } } return hasChanged; } var qm = session.getWorkspace().getQueryManager(); var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type = 'SERVICE' and @ametys-internal:service = 'org.ametys.plugins.calendar.Calendar']", javax.jcr.query.Query.XPATH); var nodes = query.execute().getNodes(); var count = 0; while (nodes.hasNext()) { var node = nodes.nextNode().getNode("ametys:service_parameters"); var hasChanges = false; hasChanges = convertStringPropertyToLong(node, "ametys:months-before") || hasChanges; hasChanges = convertStringPropertyToLong(node, "ametys:months-after") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:contents-on-same-page") || hasChanges; if (hasChanges) { count++; } } session.save(); print(count + " updated calendar services."); query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type = 'SERVICE' and @ametys-internal:service = 'org.ametys.plugins.calendar.Agenda']", javax.jcr.query.Query.XPATH); nodes = query.execute().getNodes(); count = 0; while (nodes.hasNext()) { var node = nodes.nextNode().getNode("ametys:service_parameters"); var hasChanges = false; hasChanges = convertStringPropertyToLong(node, "ametys:months-before") || hasChanges; hasChanges = convertStringPropertyToLong(node, "ametys:months-after") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:mask-orphan") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:handle-user-access") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:pdf-download") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:ical-download") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:rss") || hasChanges; if (hasChanges) { count++; } } session.save(); print(count + " updated agenda services.");