* or updated
*/
public static Node putFile(
Node parent, String name, String mime,
InputStream data, Calendar date) throws RepositoryException {
Binary binary =
parent.getSession().getValueFactory().createBinary(data);
try {
Node file = getOrAddNode(parent, name, NodeType.NT_FILE);
Node content =
getOrAddNode(file, Node.JCR_CONTENT, NodeType.NT_RESOURCE);
content.setProperty(Property.JCR_MIMETYPE, mime);
String[] parameters = mime.split(";");
for (int i = 1; i < parameters.length; i++) {
int equals = parameters[i].indexOf('=');
if (equals != -1) {
String parameter = parameters[i].substring(0, equals);
if ("charset".equalsIgnoreCase(parameter.trim())) {
content.setProperty(
Property.JCR_ENCODING,
parameters[i].substring(equals + 1).trim());
}
}
}
content.setProperty(Property.JCR_LAST_MODIFIED, date);
content.setProperty(Property.JCR_DATA, binary);
return file;
} finally {
binary.dispose();
}
}