diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..ace8266 --- /dev/null +++ b/.classpath @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..a9b54dd --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + storagehub-model + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..672496e --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d57f355 --- /dev/null +++ b/pom.xml @@ -0,0 +1,75 @@ + + 4.0.0 + + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.common + storagehub-model + 1.0.0-SNAPSHOT + storagehub-model + + + + + org.gcube.distribution + gcube-bom + LATEST + pom + import + + + + + + + org.projectlombok + lombok + 1.14.8 + + + com.fasterxml.jackson.core + jackson-core + + + + com.fasterxml.jackson.core + jackson-annotations + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + 1.6.4 + test + + + junit + junit + 4.10 + test + + + + + + + + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/common/storagehub/model/Metadata.java b/src/main/java/org/gcube/common/storagehub/model/Metadata.java new file mode 100644 index 0000000..8ffd6a0 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/Metadata.java @@ -0,0 +1,19 @@ +package org.gcube.common.storagehub.model; + +import java.util.HashMap; +import java.util.Map; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.MapAttribute; + +@Getter +@Setter +@NoArgsConstructor +public class Metadata { + + @MapAttribute(excludeStartWith="jcr:") + Map value = new HashMap(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/Path.java b/src/main/java/org/gcube/common/storagehub/model/Path.java new file mode 100644 index 0000000..f18b7f4 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/Path.java @@ -0,0 +1,46 @@ +package org.gcube.common.storagehub.model; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +public class Path { + + protected List paths = null; + + private Path(){} + + protected Path(String path){ + if (!(path==null || path.isEmpty())) + paths = Arrays.asList(path.split("/")).stream().filter(s -> !s.isEmpty()).collect(Collectors.toList()); + } + + public String toPath(){ + if (paths ==null || paths.isEmpty()) return "/"; + else return "/"+paths.stream().collect(Collectors.joining("/"))+"/"; + } + + public String getLastDirName(){ + return paths.get(paths.size()-1); + } + + protected Path append(Path anotherPath){ + Path path = new Path(); + path.paths = new LinkedList(this.paths); + if (anotherPath.paths!=null) + path.paths.addAll(anotherPath.paths); + return path; + } + + protected Path append(String anotherPath){ + return this.append(new Path(anotherPath)); + } + + protected Path remove(Path anotherPath){ + Path path = new Path(); + path.paths = new LinkedList(this.paths); + path.paths.removeAll(anotherPath.paths); + return path; + } +} diff --git a/src/main/java/org/gcube/common/storagehub/model/Paths.java b/src/main/java/org/gcube/common/storagehub/model/Paths.java new file mode 100644 index 0000000..7aea374 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/Paths.java @@ -0,0 +1,21 @@ +package org.gcube.common.storagehub.model; + +public class Paths { + + public static Path getPath(String path){ + return new Path(path); + } + + public static Path append(Path path, Path anotherPath){ + return path.append(anotherPath); + } + + public static Path append(Path path, String anotherPath){ + return path.append(anotherPath); + } + + public static Path remove(Path path, Path anotherPath){ + return path.remove(anotherPath); + } + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/Attribute.java b/src/main/java/org/gcube/common/storagehub/model/annotations/Attribute.java new file mode 100644 index 0000000..3d95081 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/Attribute.java @@ -0,0 +1,13 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Attribute { + + String value(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/AttributeRootNode.java b/src/main/java/org/gcube/common/storagehub/model/annotations/AttributeRootNode.java new file mode 100644 index 0000000..c651164 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/AttributeRootNode.java @@ -0,0 +1,14 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface AttributeRootNode { + + String value(); + boolean isContentNode() default false; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/ItemElement.java b/src/main/java/org/gcube/common/storagehub/model/annotations/ItemElement.java new file mode 100644 index 0000000..4982c91 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/ItemElement.java @@ -0,0 +1,13 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface ItemElement { + + String type(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/ListNodes.java b/src/main/java/org/gcube/common/storagehub/model/annotations/ListNodes.java new file mode 100644 index 0000000..3246f19 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/ListNodes.java @@ -0,0 +1,15 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface ListNodes { + + String includeTypeStartWith() default ""; + String excludeTypeStartWith() default ""; + Class listClass(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/MapAttribute.java b/src/main/java/org/gcube/common/storagehub/model/annotations/MapAttribute.java new file mode 100644 index 0000000..a2e711d --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/MapAttribute.java @@ -0,0 +1,13 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface MapAttribute { + + String excludeStartWith() default ""; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/NodeAttribute.java b/src/main/java/org/gcube/common/storagehub/model/annotations/NodeAttribute.java new file mode 100644 index 0000000..d975e18 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/NodeAttribute.java @@ -0,0 +1,15 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface NodeAttribute { + + String value(); + boolean isReadOnly() default false; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/annotations/RootNode.java b/src/main/java/org/gcube/common/storagehub/model/annotations/RootNode.java new file mode 100644 index 0000000..0eedbc8 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/annotations/RootNode.java @@ -0,0 +1,13 @@ +package org.gcube.common.storagehub.model.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface RootNode { + + String[] value(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/AbstractFileItem.java b/src/main/java/org/gcube/common/storagehub/model/items/AbstractFileItem.java new file mode 100644 index 0000000..98a09fb --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/AbstractFileItem.java @@ -0,0 +1,9 @@ +package org.gcube.common.storagehub.model.items; + +import org.gcube.common.storagehub.model.items.nodes.Content; + +public abstract class AbstractFileItem extends Item{ + + public abstract Content getContent(); + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/FolderItem.java b/src/main/java/org/gcube/common/storagehub/model/items/FolderItem.java new file mode 100644 index 0000000..8932d48 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/FolderItem.java @@ -0,0 +1,17 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.RootNode; + + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:workspaceItem") +public class FolderItem extends Item { + + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/GCubeItem.java b/src/main/java/org/gcube/common/storagehub/model/items/GCubeItem.java new file mode 100644 index 0000000..7c726ca --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/GCubeItem.java @@ -0,0 +1,36 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.Metadata; +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:gCubeItem") +public class GCubeItem extends Item{ + + @Attribute("hl:scopes") + String[] scopes; + + @Attribute("hl:creator") + String creator; + + @Attribute("hl:itemType") + String itemType; + + @Attribute("hl:properties") + String properties; + + @Attribute("hl:isShared") + Boolean shared; + + @NodeAttribute("hl:property") + Metadata property; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/GenericFileItem.java b/src/main/java/org/gcube/common/storagehub/model/items/GenericFileItem.java new file mode 100644 index 0000000..7252122 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/GenericFileItem.java @@ -0,0 +1,22 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; +import org.gcube.common.storagehub.model.items.nodes.Content; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@RootNode("nthl:externalFile") +public class GenericFileItem extends AbstractFileItem{ + + @NodeAttribute(value ="jcr:content") + Content content; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/ImageFile.java b/src/main/java/org/gcube/common/storagehub/model/items/ImageFile.java new file mode 100644 index 0000000..a6dda27 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/ImageFile.java @@ -0,0 +1,22 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; +import org.gcube.common.storagehub.model.items.nodes.ImageContent; + + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@RootNode("nthl:externalImage") +public class ImageFile extends AbstractFileItem{ + + @NodeAttribute(value="jcr:content") + ImageContent content; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/Item.java b/src/main/java/org/gcube/common/storagehub/model/items/Item.java new file mode 100644 index 0000000..fe094e3 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/Item.java @@ -0,0 +1,73 @@ +package org.gcube.common.storagehub.model.items; + +import java.util.Calendar; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.items.nodes.Accounting; +import org.gcube.common.storagehub.model.types.ItemAction; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class Item { + + String id; + + String name; + + String path; + + String parentId; + + String parentPath; + + String primaryType; + + boolean locked; + + @Attribute("jcr:title") + String title; + + @Attribute("jcr:description") + String description; + + @Attribute("jcr:lastModifiedBy") + String lastModifiedBy; + + @Attribute("jcr:lastModified") + Calendar lastModificationTime; + + @Attribute("jcr:created") + Calendar creationTime; + + @Attribute("hl:portalLogin") + String owner; + + @Attribute("hl:lastAction") + ItemAction lastAction; + + /* + @XmlElement + boolean trashed; + + @XmlElement + boolean shared; + + */ + + @Attribute("hl:hidden") + boolean hidden; + + @NodeAttribute(value="hl:accounting", isReadOnly=true) + Accounting accounting; + + //List accounting; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/PDFFileItem.java b/src/main/java/org/gcube/common/storagehub/model/items/PDFFileItem.java new file mode 100644 index 0000000..9eee612 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/PDFFileItem.java @@ -0,0 +1,21 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; +import org.gcube.common.storagehub.model.items.nodes.PDFContent; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@RootNode({"nthl:externalPdf"}) +public class PDFFileItem extends AbstractFileItem { + + @NodeAttribute(value="jcr:content") + PDFContent content; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/SharedFolder.java b/src/main/java/org/gcube/common/storagehub/model/items/SharedFolder.java new file mode 100644 index 0000000..899e0c6 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/SharedFolder.java @@ -0,0 +1,30 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.Metadata; +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:workspaceSharedItem") +public class SharedFolder extends FolderItem { + + @Attribute("hl:privilege") + String privilege; + + @Attribute("hl:isVreFolder") + Boolean vreFolder; + + @Attribute("hl:displayName") + String displayName; + + @NodeAttribute("hl:users") + Metadata users; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/SmartFolder.java b/src/main/java/org/gcube/common/storagehub/model/items/SmartFolder.java new file mode 100644 index 0000000..42a4e9b --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/SmartFolder.java @@ -0,0 +1,19 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.NodeAttribute; +import org.gcube.common.storagehub.model.annotations.RootNode; +import org.gcube.common.storagehub.model.items.nodes.SmartFolderContent; + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:workspaceSmartItem") +public class SmartFolder { + + @NodeAttribute("jcr:content") + SmartFolderContent content; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/TrashItem.java b/src/main/java/org/gcube/common/storagehub/model/items/TrashItem.java new file mode 100644 index 0000000..3202649 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/TrashItem.java @@ -0,0 +1,42 @@ +package org.gcube.common.storagehub.model.items; + +import java.util.Calendar; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.RootNode; + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:trashItem") +public class TrashItem extends Item { + + @Attribute("hl:name") + String name; + + @Attribute("hl:deletedBy") + String deletedBy; + + @Attribute("hl:originalParentId") + String originalPArentId; + + @Attribute("hl:deletedFrom") + String deletedFrom; + + @Attribute("hl:deletedTime") + Calendar deletedTime; + + @Attribute("hl:mimeType") + String mimeType; + + @Attribute("hl:length") + String lenght; + + @Attribute("hl:isFolder") + Boolean folder; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/VreFolder.java b/src/main/java/org/gcube/common/storagehub/model/items/VreFolder.java new file mode 100644 index 0000000..1ba075f --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/VreFolder.java @@ -0,0 +1,23 @@ +package org.gcube.common.storagehub.model.items; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.RootNode; + +@NoArgsConstructor +@Getter +@Setter +@RootNode("nthl:workspaceVreItem") +public class VreFolder extends SharedFolder { + + + @Attribute("hl:groupId") + String groupId; + + @Attribute("hl:scope") + String context; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/AccountEntry.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/AccountEntry.java new file mode 100644 index 0000000..6cd1326 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/AccountEntry.java @@ -0,0 +1,24 @@ +package org.gcube.common.storagehub.model.items.nodes; + +import java.util.HashMap; +import java.util.Map; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; +import org.gcube.common.storagehub.model.annotations.MapAttribute; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@AttributeRootNode("nthl:accountingEntry") +public class AccountEntry { + + @MapAttribute + Map account = new HashMap();; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/Accounting.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/Accounting.java new file mode 100644 index 0000000..9f2b95c --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/Accounting.java @@ -0,0 +1,19 @@ +package org.gcube.common.storagehub.model.items.nodes; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; +import org.gcube.common.storagehub.model.annotations.ListNodes; + +@NoArgsConstructor +@Data +@AttributeRootNode("nthl:accountingSet") +public class Accounting { + + @ListNodes(includeTypeStartWith="nthl:accounting", listClass=AccountEntry.class) + List entries = new ArrayList(); +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/Content.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/Content.java new file mode 100644 index 0000000..3d03c48 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/Content.java @@ -0,0 +1,31 @@ +package org.gcube.common.storagehub.model.items.nodes; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@AttributeRootNode(value="nthl:file") +public class Content { + + @Attribute("hl:size") + Long size; + + @Attribute("jcr:data") + String data; + + @Attribute("hl:remotePath") + String remotePath; + + @Attribute("jcr:mimeType") + String mimeType; + + @Attribute("hl:storageId") + String storageId; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/ImageContent.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/ImageContent.java new file mode 100644 index 0000000..2305447 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/ImageContent.java @@ -0,0 +1,33 @@ +package org.gcube.common.storagehub.model.items.nodes; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@AttributeRootNode(value="nthl:image", isContentNode=true) +public class ImageContent extends Content{ + + @Attribute("hl:width") + Long width; + + @Attribute("hl:height") + Long height; + + @Attribute("hl:thumbnailWidth") + Long thumbnailWidth; + + @Attribute("hl:thumbnailHeight") + Long thumbnailHeight; + + @Attribute("hl:thumbnailData") + Byte[] thumbnailData; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/PDFContent.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/PDFContent.java new file mode 100644 index 0000000..981e75b --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/PDFContent.java @@ -0,0 +1,33 @@ +package org.gcube.common.storagehub.model.items.nodes; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@AttributeRootNode(value="nthl:pdf", isContentNode=true) +public class PDFContent extends Content{ + + @Attribute("hl:numberOfPages") + Long numberOfPages; + + @Attribute("hl:version") + String version; + + @Attribute("hl:author") + String author; + + @Attribute("hl:title") + String title; + + @Attribute("hl:producer") + String producer; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/items/nodes/SmartFolderContent.java b/src/main/java/org/gcube/common/storagehub/model/items/nodes/SmartFolderContent.java new file mode 100644 index 0000000..840ad7e --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/items/nodes/SmartFolderContent.java @@ -0,0 +1,25 @@ +package org.gcube.common.storagehub.model.items.nodes; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import org.gcube.common.storagehub.model.annotations.Attribute; +import org.gcube.common.storagehub.model.annotations.AttributeRootNode; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@AttributeRootNode("nthl:smartFolderContent") +public class SmartFolderContent { + + @Attribute("hl:query") + String query; + + @Attribute("hl:folderId") + String folderId; + + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/query/ItemFilter.java b/src/main/java/org/gcube/common/storagehub/model/query/ItemFilter.java new file mode 100644 index 0000000..d1e8b2f --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/query/ItemFilter.java @@ -0,0 +1,7 @@ +package org.gcube.common.storagehub.model.query; + +import org.gcube.common.storagehub.model.items.Item; + +public interface ItemFilter { + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/query/OrderBy.java b/src/main/java/org/gcube/common/storagehub/model/query/OrderBy.java new file mode 100644 index 0000000..5052e42 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/query/OrderBy.java @@ -0,0 +1,5 @@ +package org.gcube.common.storagehub.model.query; + +public interface OrderBy { + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/service/ItemList.java b/src/main/java/org/gcube/common/storagehub/model/service/ItemList.java new file mode 100644 index 0000000..f84b463 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/service/ItemList.java @@ -0,0 +1,20 @@ +package org.gcube.common.storagehub.model.service; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import org.gcube.common.storagehub.model.items.Item; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ItemList { + + @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class") + private List itemlist; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/service/ItemWrapper.java b/src/main/java/org/gcube/common/storagehub/model/service/ItemWrapper.java new file mode 100644 index 0000000..5ea1bbd --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/service/ItemWrapper.java @@ -0,0 +1,18 @@ +package org.gcube.common.storagehub.model.service; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import org.gcube.common.storagehub.model.items.Item; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ItemWrapper { + + @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class") + private T item; +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/ContentType.java b/src/main/java/org/gcube/common/storagehub/model/types/ContentType.java new file mode 100644 index 0000000..be65636 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/ContentType.java @@ -0,0 +1,65 @@ +package org.gcube.common.storagehub.model.types; + +public enum ContentType { + GENERAL { + @Override + public String toString() { + return "nthl:file"; + } + }, + IMAGE { + @Override + public String toString() { + return "nthl:image"; + } + }, + PDF { + @Override + public String toString() { + return "nthl:pdf"; + } + }, + TS { + @Override + public String toString() { + return "nthl:timeSeriesItemContent"; + } + }, + QUERY { + @Override + public String toString() { + return "nthl:queryItemContent"; + } + }, + REPORT { + @Override + public String toString() { + return "nthl:reportItemContent"; + } + }, + REPORT_TEMPLATE { + @Override + public String toString() { + return "nthl:reportTemplateContent"; + } + }, + METADATA{ + @Override + public String toString() { + return "nthl:metadataItemContent"; + } + }, + DOCUMENT{ + @Override + public String toString() { + return "nthl:documentItemContent"; + } + }, + SMART{ + @Override + public String toString() { + return "nthl:smartFolderContent"; + } + } + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/FileItemType.java b/src/main/java/org/gcube/common/storagehub/model/types/FileItemType.java new file mode 100644 index 0000000..6834f0d --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/FileItemType.java @@ -0,0 +1,92 @@ +/** + * + */ +package org.gcube.common.storagehub.model.types; + +/** + * @author Federico De Faveri defaveri@isti.cnr.it + * + */ +public enum FileItemType implements GenericItemType{ + + /** + * External image. + */ + EXTERNAL_IMAGE, + + /** + * External file. + */ + EXTERNAL_FILE, + + /** + * External PDF file. + */ + EXTERNAL_PDF_FILE, + + /** + * External url. + */ + EXTERNAL_URL, + + /** + * Query. + */ + QUERY, + + /** + * Report template. + */ + REPORT_TEMPLATE, + + /** + * Report. + */ + REPORT, + + /** + * A time series. + */ + TIME_SERIES, + + /** + * Document. + */ + DOCUMENT, + + /** + * Image document. + */ + IMAGE_DOCUMENT, + + /** + * PDF document. + */ + PDF_DOCUMENT, + + /** + * Url document. + */ + URL_DOCUMENT, + + /** + * Metadata. + */ + METADATA, + + /** + * Trash item + */ + TRASH_ITEM, + + /** + * A gCube item. + */ + GCUBE_ITEM, + + /** + * Workflow report. + */ + WORKFLOW_REPORT; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/GenericItemType.java b/src/main/java/org/gcube/common/storagehub/model/types/GenericItemType.java new file mode 100644 index 0000000..2c494a3 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/GenericItemType.java @@ -0,0 +1,5 @@ +package org.gcube.common.storagehub.model.types; + +public interface GenericItemType { + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/ItemAction.java b/src/main/java/org/gcube/common/storagehub/model/types/ItemAction.java new file mode 100644 index 0000000..22082a6 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/ItemAction.java @@ -0,0 +1,36 @@ +/** + * + */ +package org.gcube.common.storagehub.model.types; + +/** + * @author Federico De Faveri defaveri@isti.cnr.it + * + */ +public enum ItemAction { + /** + * The item has been created. + */ + CREATED, + + /** + * The item has been renamed. + */ + RENAMED, + + /** + * The item has been moved. + */ + MOVED, + + /** + * The item has been cloned. + */ + CLONED, + + /** + * The item has been updates. + */ + UPDATED; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/ItemType.java b/src/main/java/org/gcube/common/storagehub/model/types/ItemType.java new file mode 100644 index 0000000..72c2331 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/ItemType.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.common.storagehub.model.types; + + +/** + * @author gioia + * + */ +public enum ItemType implements GenericItemType{ + + /** + * A folder. + */ + FOLDER, + + /** + * A shared folder + */ + SHARED_FOLDER, + + /** + * A smart folder + */ + SMART_FOLDER, + + /** + * A folder item. + */ + FOLDER_ITEM, + + /** + * A trash folder. + */ + TRASH_FOLDER, + + /** + * A trash item. + */ + TRASH_ITEM; + + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/Namespace.java b/src/main/java/org/gcube/common/storagehub/model/types/Namespace.java new file mode 100644 index 0000000..269ec98 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/Namespace.java @@ -0,0 +1,10 @@ +package org.gcube.common.storagehub.model.types; + +public class Namespace { + + public static final String HL_NAMESPACE = "hl:"; + public static final String JCR_NAMESPACE = "jcr:"; + public static final String REP_NAMESPACE = "rep:"; + public static final String NT_NAMESPACE = "nt:"; + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/NodeProperty.java b/src/main/java/org/gcube/common/storagehub/model/types/NodeProperty.java new file mode 100644 index 0000000..f519f3c --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/NodeProperty.java @@ -0,0 +1,683 @@ +package org.gcube.common.storagehub.model.types; + +public enum NodeProperty { + + //nthl:workspaceItem + TITLE { + @Override + public String toString() { + return "jcr:title"; + } + }, + CREATED { + @Override + public String toString() { + return "jcr:created"; + } + }, + LAST_MODIFIED { + @Override + public String toString() { + return "jcr:lastModified"; + } + }, + LAST_ACTION { + @Override + public String toString() { + return "hl:lastAction"; + } + }, + + OWNER { + @Override + public String toString() { + return "hl:owner"; + } + }, + PORTAL_LOGIN { + @Override + public String toString() { + return "hl:portalLogin"; + } + }, + + LAST_MODIFIED_BY { + @Override + public String toString() { + return "jcr:lastModifiedBy"; + } + }, + DESCRIPTION { + @Override + public String toString() { + return "jcr:description"; + } + }, + USER_ID { + @Override + public String toString() { + return "hl:uuid"; + } + }, + IS_PUBLIC { + @Override + public String toString() { + return "hl:isPublic"; + } + }, + + // //nthl:workspaceSharedItem + + IS_VRE_FOLDER { + @Override + public String toString() { + return "hl:isVreFolder"; + } + }, + DISPLAY_NAME { + @Override + public String toString() { + return "hl:displayName"; + } + }, + + USER { + @Override + public String toString() { + return "hl:user"; + } + }, + USERS { + @Override + public String toString() { + return "hl:users"; + } + }, + MEMBERS { + @Override + public String toString() { + return "hl:members"; + } + }, + + // file + + CONTENT { + @Override + public String toString() { + return "jcr:content"; + } + }, + FOLDER_ITEM_TYPE { + @Override + public String toString() { + return "hl:workspaceItemType"; + } + }, + MIME_TYPE { + @Override + public String toString() { + return "jcr:mimeType"; + } + }, + DATA { + @Override + public String toString() { + return "jcr:data"; + } + }, + SIZE { + @Override + public String toString() { + return "hl:size"; + } + }, + REMOTE_STORAGE_PATH { + @Override + public String toString() { + return "hl:remotePath"; + } + }, + STORAGE_ID { + @Override + public String toString() { + return "hl:storageId"; + } + }, + STORAGE_PATH { + @Override + public String toString() { + return "hl:storagePath"; + } + }, + + // image + + IMAGE_WIDTH { + + @Override + public String toString() { + return "hl:width"; + } + }, + IMAGE_HEIGHT { + @Override + public String toString() { + return "hl:height"; + } + }, + THUMBNAIL_DATA { + @Override + public String toString() { + return "hl:thumbnailData"; + } + }, + THUMBNAIL_WIDTH { + @Override + public String toString() { + return "hl:thumbnailWidth"; + } + }, + THUMBNAIL_HEIGHT { + @Override + public String toString() { + return "hl:thumbnailHeight"; + } + }, + + + //pdf + + AUTHOR { + @Override + public String toString() { + return "hl:author"; + } + }, + NUMBER_OF_PAGES { + @Override + public String toString() { + return "hl:numberOfPages"; + } + }, + VERSION { + @Override + public String toString() { + return "hl:version"; + } + }, + PDF_TITLE { + @Override + public String toString() { + return "hl:title"; + } + }, + PRODUCER { + @Override + public String toString() { + return "hl:producer"; + } + }, + + // gcubeItem + SCOPES { + @Override + public String toString() { + return "hl:scopes"; + } + }, + CREATOR { + @Override + public String toString() { + return "hl:creator"; + } + }, + ITEM_TYPE { + @Override + public String toString() { + return "hl:itemType"; + } + }, + PROPERTIES { + @Override + public String toString() { + return "hl:properties"; + } + }, + PROPERTY { + @Override + public String toString() { + return "hl:property"; + } + }, + IS_SHARED { + @Override + public String toString() { + return "hl:isShared"; + } + }, + SHARED_ROOT_ID { + @Override + public String toString() { + return "hl:sharedRootId"; + } + }, + + + // trashItem + DELETE_DATE { + @Override + public String toString() { + return "hl:deletedTime"; + } + }, + DELETE_BY { + @Override + public String toString() { + return "hl:deletedBy"; + } + }, + ORIGINAL_PARENT_ID { + @Override + public String toString() { + return "hl:originalParentId"; + } + }, + DELETED_FROM { + @Override + public String toString() { + return "hl:deletedFrom"; + } + }, + TRASH_ITEM_NAME { + @Override + public String toString() { + return "hl:name"; + } + }, + TRASH_ITEM_MIME_TYPE { + @Override + public String toString() { + return "hl:mimeType"; + } + }, + LENGTH { + @Override + public String toString() { + return "hl:length"; + } + }, + IS_FOLDER { + @Override + public String toString() { + return "hl:isFolder"; + } + }, + + // messages + SUBJECT { + @Override + public String toString() { + return "hl:subject"; + } + }, + BODY { + @Override + public String toString() { + return "hl:body"; + } + }, + ATTACHMENTS { + @Override + public String toString() { + return "hl:attachments"; + } + }, + ATTACHMENTS_ID { + @Override + public String toString() { + return "hl:attachId"; + } + }, + ADDRESSES { + @Override + public String toString() { + return "hl:addresses"; + } + }, + SCOPE { + @Override + public String toString() { + return "hl:scope"; + } + }, + READ { + @Override + public String toString() { + return "hl:read"; + } + }, + OPEN { + @Override + public String toString() { + return "hl:open"; + } + }, + NT_USER { + @Override + public String toString() { + return "nthl:user"; + } + }, + + // timeseries + + TIMESERIES_ID { + @Override + public String toString() { + return "hl:id"; + } + }, + TIMESERIES_TITLE { + @Override + public String toString() { + return "hl:title"; + } + }, + TIMESERIES_DESCRIPTION { + @Override + public String toString() { + return "hl:description"; + } + }, + TIMESERIES_CREATOR { + @Override + public String toString() { + return "hl:creator"; + } + }, + TIMESERIES_CREATED { + @Override + public String toString() { + return "hl:created"; + } + }, + TIMESERIES_PUBLISHER { + @Override + public String toString() { + return "hl:publisher"; + } + }, + TIMESERIES_SOURCE_ID { + @Override + public String toString() { + return "hl:sourceId"; + } + }, + TIMESERIES_SOURCE_NAME { + @Override + public String toString() { + return "hl:sourceName"; + } + }, + TIMESERIES_RIGHTS { + @Override + public String toString() { + return "hl:rights"; + } + }, + TIMESERIES_DIMENSION { + @Override + public String toString() { + return "hl:dimension"; + } + }, + HEADER_LABELS { + @Override + public String toString() { + return "hl:headerLabels"; + } + }, + + // query + + QUERY { + @Override + public String toString() { + return "hl:query"; + } + }, + FOLDER_ID { + @Override + public String toString() { + return "hl:folderId"; + } + }, + QUERY_TYPE { + @Override + public String toString() { + return "hl:queryType"; + } + }, + + //report template + + RT_CREATED { + @Override + public String toString() { + return "hl:created"; + } + }, + LAST_EDIT { + @Override + public String toString() { + return "hl:lastEdit"; + } + }, + LAST_EDIT_BY { + @Override + public String toString() { + return "hl:lastEditBy"; + } + }, + NUMBER_OF_SECTION { + @Override + public String toString() { + return "hl:numberOfSection"; + } + }, + STATUS { + @Override + public String toString() { + return "hl:status"; + } + }, + FAILURES { + @Override + public String toString() { + return "hl:failures"; + } + }, + TEMPLATE_NAME { + @Override + public String toString() { + return "hl:templateName"; + } + }, + + //metadata + + SCHEMA{ + @Override + public String toString() { + return "hl:schema"; + } + }, + LANGUAGE{ + @Override + public String toString() { + return "hl:language"; + } + }, + COLLECTION_NAME{ + @Override + public String toString() { + return "hl:collectionName"; + } + }, + OID{ + @Override + public String toString() { + return "hl:oid"; + } + }, + + NT_CONTENT{ + @Override + public String toString() { + return "nthl:metadataItemContent"; + + } + }, + + //document + + METADATA{ + @Override + public String toString() { + return "hl:metadata"; + } + }, + ANNOTATIONS{ + @Override + public String toString() { + return "hl:annotations"; + } + }, + + + ALTERNATIVES { + @Override + public String toString() { + return "hl:alternatives"; + } + }, + + PARENT_URI{ + @Override + public String toString() { + return "hl:parentUri"; + } + }, + URI{ + @Override + public String toString() { + return "hl:uri"; + } + }, + NAME{ + @Override + public String toString() { + return "hl:name"; + } + }, + HL_MIME_TYPE{ + @Override + public String toString() { + return "hl:mimeType"; + } + }, + + NT_ALTERNATIVE{ + @Override + public String toString() { + return "nthl:documentAlternativeLink"; + } + }, + NT_PART { + @Override + public String toString() { + return "nthl:documentPartLink"; + } + }, + + PARTS{ + @Override + public String toString() { + return "hl:parts"; + } + }, + + URL{ + @Override + public String toString() { + return "hl:url"; + } + }, + + + //accounting + ACCOUNTING{ + @Override + public String toString() { + return "hl:accounting"; + } + }, + NT_ACCOUNTING{ + @Override + public String toString() { + return "nthl:accountingSet"; + } + }, + + //workflow + WORKFLOW_ID{ + @Override + public String toString() { + return "hl:workflowId"; + } + }, + WORKFLOW_DATA{ + @Override + public String toString() { + return "hl:workflowData"; + } + }, + WORKFLOW_STATUS{ + @Override + public String toString() { + return "hl:workflowStatus"; + } + }, + REFERENCE{ + @Override + public String toString() { + return "hl:reference"; + } + }, + HIDDEN{ + @Override + public String toString() { + return "hl:hidden"; + } + }, + GROUP_ID{ + @Override + public String toString() { + return "hl:groupId"; + } + }, + IS_SYSTEM_FOLDER{ + @Override + public String toString() { + return "hl:IsSystemFolder"; + } + }; + + public static NodeProperty fromValue(String value) { + for(NodeProperty v : values()) + if(v.toString().equalsIgnoreCase(value)) return v; + throw new IllegalArgumentException(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/common/storagehub/model/types/PrimaryNodeType.java b/src/main/java/org/gcube/common/storagehub/model/types/PrimaryNodeType.java new file mode 100644 index 0000000..614f022 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/PrimaryNodeType.java @@ -0,0 +1,55 @@ +package org.gcube.common.storagehub.model.types; + +public class PrimaryNodeType { + + + public static final String NT_ROOT_ITEM_SENT = "nthl:rootItemSentRequest"; + public static final String NT_ITEM_SENT = "nthl:itemSentRequest"; +// public static final String NT_MESSAGE = "nthl:itemSentRequest"; + public static final String NT_WORKSPACE_ROOT = "rep:root"; + public static final String NT_WORKSPACE_FOLDER = "nthl:workspaceItem"; + public static final String NT_WORKSPACE_SHARED_FOLDER = "nthl:workspaceSharedItem"; + public static final String NT_WORKSPACE_VRE_FOLDER = "nthl:workspaceVreItem"; + public static final String NT_WORKSPACE_FOLDER_ITEM = "nthl:workspaceLeafItem"; + public static final String NT_WORKSPACE_FILE = "nthl:externalFile"; + public static final String NT_WORKSPACE_IMAGE = "nthl:externalImage"; + public static final String NT_WORKSPACE_PDF_FILE = "nthl:externalPdf"; + public static final String NT_WORKSPACE_URL = "nthl:externalUrl"; + public static final String NT_WORKSPACE_SMART_FOLDER = "nthl:workspaceSmartItem"; + public static final String NT_ROOT_FOLDER_BULK_CREATOR = "nthl:rootFolderBulkCreator"; + + public static final String NT_WORKSPACE_REPORT = "nthl:report"; + public static final String NT_WORKSPACE_REPORT_TEMPLATE = "nthl:reportTemplate"; + public static final String NT_WORKSPACE_WORKFLOW_REPORT = "nthl:workflowReport"; + public static final String NT_WORKSPACE_WORKFLOW_TEMPLATE = "nthl:workflowTemplate"; + public static final String NT_WORKSPACE_REFERENCE = "nthl:workspaceReference"; + + public static final String NT_ANNOTATION_ITEM = "nthl:gCubeAnnotation"; + public static final String NT_ANNOTATION_LINK_ITEM = "nthl:gCubeAnnotationLink"; + + public static final String NT_DOCUMENT_ITEM = "nthl:gCubeDocument"; + public static final String NT_DOCUMENT_LINK_ITEM = "nthl:gCubeDocumentLink"; + public static final String NT_IMAGE_DOCUMENT_ITEM = "nthl:gCubeImageDocument"; + public static final String NT_IMAGE_DOCUMENT_LINK_ITEM = "nthl:gCubeImageDocumentLink"; + public static final String NT_PDF_DOCUMENT_ITEM = "nthl:gCubePDFDocument"; + public static final String NT_PDF_DOCUMENT_LINK_ITEM = "nthl:gCubePDFDocumentLink"; + public static final String NT_URL_DOCUMENT_ITEM = "nthl:gCubeURLDocument"; + public static final String NT_METADATA_ITEM = "nthl:gCubeMetadata"; + public static final String NT_METADATA_LINK_ITEM = "nthl:gCubeMetadataLink"; + public static final String NT_AQUAMAPS_ITEM = "nthl:aquamapsItem"; + public static final String NT_GCUBE_ITEM = "nthl:gCubeItem"; + public static final String NT_TIMESERIES_ITEM = "nthl:timeSeriesItem"; + public static final String NT_QUERY = "nthl:query"; + public static final String NT_EXTERNAL_RESOURCE_LINK_ITEM = "nthl:externalResourceLink"; + public static final String NT_TABULAR_DATA_LINK = "nthl:tabularDataLink"; + public static final String NT_TRASH_ITEM = "nthl:trashItem"; + + public static final String NT_ROOT_MESSAGES = "nthl:rootItemSentRequest"; + public static final String NT_FOLDER = "nt:folder"; + public static final String NT_HOME = "nthl:home"; + + protected static final String ACCOUNTING = "hl:accounting"; + protected static final String NT_ACCOUNTING = "nthl:accountingSet"; + + +} diff --git a/src/main/java/org/gcube/common/storagehub/model/types/WorkspaceItemType.java b/src/main/java/org/gcube/common/storagehub/model/types/WorkspaceItemType.java new file mode 100644 index 0000000..721f04b --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/model/types/WorkspaceItemType.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.common.storagehub.model.types; + + +/** + * @author gioia + * + */ +public enum WorkspaceItemType implements GenericItemType{ + + /** + * A folder. + */ + FOLDER, + + /** + * A shared folder + */ + SHARED_FOLDER, + + /** + * A smart folder + */ + SMART_FOLDER, + + /** + * A folder item. + */ + FOLDER_ITEM, + + /** + * A trash folder. + */ + TRASH_FOLDER, + + /** + * A trash item. + */ + TRASH_ITEM; + + +}