import org.argeo.cms.ui.CmsImageManager;
import org.argeo.cms.ui.util.CmsUiUtils;
import org.argeo.cms.ui.util.DefaultImageManager;
+import org.argeo.docbook.DbkUtils;
+import org.argeo.docbook.DbkAttr;
+import org.argeo.docbook.DbkType;
import org.argeo.entity.EntityNames;
import org.argeo.entity.EntityType;
import org.argeo.jcr.JcrException;
this.baseFolder = baseFolder;
}
+ Node getImageDataNode(Node mediaObjectNode) throws RepositoryException {
+ if (mediaObjectNode.hasNode(DbkType.imageobject.get())) {
+ Node imageDataNode = mediaObjectNode.getNode(DbkType.imageobject.get()).getNode(DbkType.imagedata.get());
+ return imageDataNode;
+ } else {
+ throw new IllegalStateException("No image data found for " + mediaObjectNode);
+ }
+ }
+
@Override
public Binary getImageBinary(Node node) throws RepositoryException {
Node fileNode = null;
- if (node.getName().equals(DocBookTypes.IMAGEDATA)) {
- fileNode = getFileNode(node);
+ if (DbkUtils.isDbk(node, DbkType.mediaobject)) {
+ Node imageDataNode = getImageDataNode(node);
+ fileNode = getFileNode(imageDataNode);
}
if (node.isNodeType(NT_FILE)) {
fileNode = node;
}
}
- public Point getImageSize(Node imageDataNode) throws RepositoryException {
+ public Point getImageSize(Node mediaObjectNode) throws RepositoryException {
+ Node imageDataNode = getImageDataNode(mediaObjectNode);
Node fileNode = getFileNode(imageDataNode);
if (fileNode == null)
return new Point(0, 0);
}
@Override
- protected void processNewImageFile(Node context, Node fileNode, ImageData id)
+ 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);
- context.setProperty(DocBookNames.DBK_FILEREF, relPath);
+ imageDataNode.setProperty(DbkAttr.fileref.name(), relPath);
}
@Override
- public String getImageUrl(Node imageDataNode) throws RepositoryException {
+ public String getImageUrl(Node mediaObjectNode) throws RepositoryException {
+ Node imageDataNode = getImageDataNode(mediaObjectNode);
// TODO factorise
String fileref = null;
- if (imageDataNode.hasProperty(DocBookNames.DBK_FILEREF))
- fileref = imageDataNode.getProperty(DocBookNames.DBK_FILEREF).getString();
+ 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);
return fileUri.toString();
// local
Node fileNode = getFileNode(imageDataNode);
- String url = CmsUiUtils.getDataPath(fileNode);
+ 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(DocBookNames.DBK_FILEREF))
- fileref = imageDataNode.getProperty(DocBookNames.DBK_FILEREF).getString();
+ if (imageDataNode.hasProperty(DbkAttr.fileref.name()))
+ fileref = imageDataNode.getProperty(DbkAttr.fileref.name()).getString();
if (fileref == null)
return null;
Node fileNode;