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.google-calendar.service.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:iframe-height") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:iframe-border") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showTitle") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showNav") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showDate") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showPrint") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showTabs") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showCalendars") || hasChanges; hasChanges = convertStringPropertyToBoolean(node, "ametys:showTz") || hasChanges; if (hasChanges) { count++; } } session.save(); print(count + " updated google calendar services.");