a.setName(newKey);
genericJcrRootFile.save();
}
public void changePropertyType(String key, int propertyType) {
Attribute a = domElement.getAttribute(key);
String value = a.getValue();
// when changing the property type, the value needs to be adjusted
// to make up a valid property
// a simple approach is to create default values if a conversion
// of the existing value is not possible/feasible.
switch(propertyType) {
case PropertyType.BINARY: {
value = "";
break;
}
case PropertyType.BOOLEAN: {
try{
value = String.valueOf(Boolean.parseBoolean(value));
} catch(Exception e) {
// hardcode to false then
value = "false";
}
break;
}
case PropertyType.DATE: {
try{
value = DateTimeSupport.print(DateTimeSupport.parseAsCalendar(value));
} catch(Exception e) {
value = DateTimeSupport.print(Calendar.getInstance());
}
break;
}
case PropertyType.DECIMAL: {
try{
Float f = Float.parseFloat(value);
value = String.valueOf(f);
} catch(Exception e) {
value = "0.0";
}
break;
}
case PropertyType.DOUBLE: {
try{
Double d = Double.parseDouble(value);
value = String.valueOf(d);
} catch(Exception e) {
value = "0.0";
}
break;
}
case PropertyType.LONG: {
try{
value = String.valueOf(Long.parseLong(value));
} catch(Exception e) {
value = "0";
}
break;
}
case PropertyType.NAME:
case PropertyType.STRING: {
// no conversion needed, already converted
break;
}
case PropertyType.PATH:
case PropertyType.URI:
case PropertyType.REFERENCE:
case PropertyType.WEAKREFERENCE: {
//TODO validation would be necessary but not implemented atm
// no conversion needed, already converted
break;
}
}
if (value.startsWith("{") && value.contains("}")) {
int index = value.indexOf("}");
value = value.substring(index+1);
}
if (propertyType!=PropertyType.STRING) {
value = "{" + PropertyType.nameFromValue(propertyType)+"}"+value;
}
a.setValue(value);
genericJcrRootFile.save();
}