]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.jcr/src/org/argeo/jcr/fs/JcrBasicfileAttributes.java
92d9152d9231c1f043d5d21bcdf71319b6b86e29
1 package org
.argeo
.jcr
.fs
;
3 import java
.nio
.file
.attribute
.FileTime
;
4 import java
.time
.Instant
;
6 import javax
.jcr
.Binary
;
8 import javax
.jcr
.Property
;
9 import javax
.jcr
.RepositoryException
;
10 import javax
.jcr
.nodetype
.NodeType
;
12 import org
.argeo
.jcr
.JcrUtils
;
14 public class JcrBasicfileAttributes
implements NodeFileAttributes
{
15 private final Node node
;
17 private FileTime EPOCH
= FileTime
.fromMillis(0);
19 public JcrBasicfileAttributes(Node node
) {
21 throw new JcrFsException("Node underlying the attributes cannot be null");
26 public FileTime
lastModifiedTime() {
28 if (node
.isNodeType(NodeType
.MIX_LAST_MODIFIED
)) {
29 Instant instant
= node
.getProperty(Property
.JCR_LAST_MODIFIED
).getDate().toInstant();
30 return FileTime
.from(instant
);
33 } catch (RepositoryException e
) {
34 throw new JcrFsException("Cannot get last modified time", e
);
39 public FileTime
lastAccessTime() {
40 return lastModifiedTime();
44 public FileTime
creationTime() {
46 if (node
.isNodeType(NodeType
.MIX_CREATED
)) {
47 Instant instant
= node
.getProperty(Property
.JCR_CREATED
).getDate().toInstant();
48 return FileTime
.from(instant
);
51 } catch (RepositoryException e
) {
52 throw new JcrFsException("Cannot get creation time", e
);
57 public boolean isRegularFile() {
59 return node
.isNodeType(NodeType
.NT_FILE
);
60 } catch (RepositoryException e
) {
61 throw new JcrFsException("Cannot check if regular file", e
);
66 public boolean isDirectory() {
68 if (node
.isNodeType(NodeType
.NT_FOLDER
))
70 // all other non file nodes
71 return !(node
.isNodeType(NodeType
.NT_FILE
) || node
.isNodeType(NodeType
.NT_LINKED_FILE
));
72 } catch (RepositoryException e
) {
73 throw new JcrFsException("Cannot check if directory", e
);
78 public boolean isSymbolicLink() {
80 return node
.isNodeType(NodeType
.NT_LINKED_FILE
);
81 } catch (RepositoryException e
) {
82 throw new JcrFsException("Cannot check if linked file", e
);
87 public boolean isOther() {
88 return !(isDirectory() || isRegularFile() || isSymbolicLink());
93 if (isRegularFile()) {
96 binary
= node
.getNode(Property
.JCR_CONTENT
).getProperty(Property
.JCR_DATA
).getBinary();
97 return binary
.getSize();
98 } catch (RepositoryException e
) {
99 throw new JcrFsException("Cannot check size", e
);
101 JcrUtils
.closeQuietly(binary
);
108 public Object
fileKey() {
113 public Node
getNode() {