+ return new Point(id.width, id.height);
+ }
+
+ @Override
+ protected void processNewImageFile(Node mediaObjectNode, Node fileNode, ImageData id)
+ throws RepositoryException, IOException {
+ Node imageDataNode = getImageDataNode(mediaObjectNode);
+ updateSize(fileNode, id);
+ String filePath = fileNode.getPath();
+ String relPath = filePath.substring(baseFolder.getPath().length() + 1);
+ imageDataNode.setProperty(DbkAttr.fileref.name(), relPath);
+ }
+
+ @Override
+ public String getImageUrl(Node mediaObjectNode) throws RepositoryException {
+ Node imageDataNode = getImageDataNode(mediaObjectNode);
+ // TODO factorise
+ String fileref = null;
+ if (imageDataNode.hasProperty(DbkAttr.fileref.name()))
+ fileref = imageDataNode.getProperty(DbkAttr.fileref.name()).getString();
+ if (fileref == null)
+ return null;
+ URI fileUri;
+ try {
+ // FIXME it messes up with the '/'
+ fileUri = new URI(URLEncoder.encode(fileref, StandardCharsets.UTF_8.toString()));
+ } catch (URISyntaxException | UnsupportedEncodingException e) {
+ throw new IllegalArgumentException("File ref in " + imageDataNode + " is badly formatted", e);
+ }
+ if (fileUri.getScheme() != null)
+ return fileUri.toString();
+ // local
+ Node fileNode = getFileNode(imageDataNode);
+ String url = CmsUiUtils.getDataPathForUrl(fileNode);
+ return url;
+ }
+
+ protected Node getFileNode(Node imageDataNode) throws RepositoryException {
+ // FIXME make URL use case more robust
+ String fileref = null;
+ if (imageDataNode.hasProperty(DbkAttr.fileref.name()))
+ fileref = imageDataNode.getProperty(DbkAttr.fileref.name()).getString();
+ if (fileref == null)
+ return null;
+ Node fileNode;
+ if (fileref.startsWith("/"))
+ fileNode = baseFolder.getSession().getNode(fileref);
+ else
+ fileNode = baseFolder.getNode(fileref);
+ return fileNode;