model for Messages and ExternalFolder added

master
lucio.lelii 3 years ago
parent 4c129ed264
commit c249caafe6

@ -7,7 +7,9 @@ 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.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v1.0.10] - [2021-03-30]
added relateNode to items (only fo internal service use)
## [v1.0.9] - [2020-10-07]
StorageBackendFacory to support different backend added

@ -18,7 +18,7 @@
<groupId>org.gcube.common</groupId>
<artifactId>storagehub-model</artifactId>
<version>1.0.9</version>
<version>1.0.10-SNAPSHOT</version>
<name>storagehub-model</name>
<dependencyManagement>

@ -2,11 +2,12 @@ package org.gcube.common.storagehub.model;
public class NodeConstants {
public static final String PARAMETERS_NAME ="hl:parameters";
public static final String ACCOUNTING_NAME ="hl:accounting";
public static final String METADATA_NAME ="hl:metadata";
public static final String OWNER_NAME ="hl:owner";
public static final String CONTENT_NAME ="jcr:content";
public static final String USERS_NAME ="hl:users";
public static final String EXTERNALREPOSITORY_NAME ="hl:externalRepository";
public static final String PROPERTY_NAME ="hl:property";
}

@ -13,6 +13,7 @@ import lombok.NoArgsConstructor;
@Data
public class ACL {
//TODO: modify typo
private String pricipal;
private List<AccessType> accessTypes= new ArrayList<>();

@ -0,0 +1,32 @@
package org.gcube.common.storagehub.model.exceptions;
import org.gcube.common.clients.delegates.Unrecoverable;
@Unrecoverable
public class PluginInitializationException extends StorageHubException {
/**
*
*/
private static final long serialVersionUID = 1L;
public PluginInitializationException() {
super();
}
public PluginInitializationException(String message) {
super(message);
}
@Override
public String getErrorMessage() {
return "invalid parameters for plugin";
}
@Override
public int getStatus() {
return 500;
}
}

@ -0,0 +1,32 @@
package org.gcube.common.storagehub.model.exceptions;
import org.gcube.common.clients.delegates.Unrecoverable;
@Unrecoverable
public class PluginNotFoundException extends StorageHubException {
/**
*
*/
private static final long serialVersionUID = 1L;
public PluginNotFoundException() {
super();
}
public PluginNotFoundException(String message) {
super(message);
}
@Override
public String getErrorMessage() {
return "plugin not found";
}
@Override
public int getStatus() {
return 500;
}
}

@ -1,18 +1,23 @@
package org.gcube.common.storagehub.model.items;
import org.gcube.common.storagehub.model.NodeConstants;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import org.gcube.common.storagehub.model.annotations.RootNode;
import org.gcube.common.storagehub.model.items.nodes.ExternalRepository;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@Getter
@Setter
@RootNode("nthl:workspaceItem")
public class FolderItem extends Item {
@NodeAttribute(value =NodeConstants.EXTERNALREPOSITORY_NAME)
ExternalRepository externalRepository;
public boolean isExternalRoot() {
return externalRepository != null;
}
}

@ -1,7 +1,11 @@
package org.gcube.common.storagehub.model.items;
import static org.gcube.common.storagehub.model.NodeConstants.ACCOUNTING_NAME;
import static org.gcube.common.storagehub.model.NodeConstants.METADATA_NAME;
import static org.gcube.common.storagehub.model.NodeConstants.OWNER_NAME;
import java.util.Calendar;
import static org.gcube.common.storagehub.model.NodeConstants.*;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
@ -9,31 +13,19 @@ import org.gcube.common.storagehub.model.items.nodes.Accounting;
import org.gcube.common.storagehub.model.items.nodes.Owner;
import org.gcube.common.storagehub.model.types.ItemAction;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Item {
String id;
String name;
String path;
String parentId;
String parentPath;
String primaryType;
public class Item extends RootItem{
boolean trashed;
boolean externalManaged;
boolean shared;
boolean locked;

@ -0,0 +1,30 @@
package org.gcube.common.storagehub.model.items;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public abstract class RootItem {
//for service internal use
@JsonIgnore
transient Object relatedNode;
String id;
String name;
String path;
String parentId;
String parentPath;
String primaryType;
}

@ -1,16 +1,12 @@
package org.gcube.common.storagehub.model.items.nodes;
import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.AttributeRootNode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.HashMap;
import java.util.Map;
import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.AttributeRootNode;
import org.gcube.common.storagehub.model.annotations.MapAttribute;
@Getter
@Setter
@NoArgsConstructor
@ -33,4 +29,6 @@ public class Content {
@Attribute("hl:storageId")
String storageId;
@Attribute("hl:storageName")
String managedBy;
}

@ -0,0 +1,32 @@
package org.gcube.common.storagehub.model.items.nodes;
import static org.gcube.common.storagehub.model.NodeConstants.PARAMETERS_NAME;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.AttributeRootNode;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@AttributeRootNode(value="nthl:externalRepostiory")
public class ExternalRepository {
@Attribute("hl:pluginName")
String plugin;
@JsonIgnore
@NodeAttribute(value=PARAMETERS_NAME)
Metadata metadata = new Metadata();
}

@ -0,0 +1,46 @@
package org.gcube.common.storagehub.model.messages;
import static org.gcube.common.storagehub.model.NodeConstants.OWNER_NAME;
import java.util.Calendar;
import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import org.gcube.common.storagehub.model.annotations.RootNode;
import org.gcube.common.storagehub.model.items.RootItem;
import org.gcube.common.storagehub.model.items.nodes.Owner;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@RootNode("nthl:itemSentRequest")
public class Message extends RootItem{
boolean withAttachments;
@NodeAttribute(value=OWNER_NAME)
Owner sender;
@Attribute("hl:subject")
String subject;
@Attribute("hl:body")
String body;
@Attribute("hl:read")
boolean read;
@Attribute("hl:open")
boolean opened;
@Attribute("hl:addresses")
String[] addresses;
@Attribute(value = "jcr:created", isReadOnly=true)
Calendar creationTime;
}

@ -0,0 +1,11 @@
package org.gcube.common.storagehub.model.plugins;
import org.gcube.common.storagehub.model.items.FolderItem;
public interface ExternalFolderManager {
void onFolderCreated(String relPath, FolderItem folder);
void onDeleteFolder(String relPath);
}

@ -0,0 +1,14 @@
package org.gcube.common.storagehub.model.plugins;
import org.gcube.common.storagehub.model.exceptions.PluginInitializationException;
import org.gcube.common.storagehub.model.items.FolderItem;
public interface ExternalFolderManagerConnector {
public default String getName() {
return this.getClass().getCanonicalName();
}
ExternalFolderManager connect(FolderItem item, PluginParameters parameters) throws PluginInitializationException;
}

@ -0,0 +1,8 @@
package org.gcube.common.storagehub.model.plugins;
import java.util.Map;
public interface PluginParameters {
Map<String, String> getParameters();
}

@ -0,0 +1,17 @@
package org.gcube.common.storagehub.model.types;
import java.util.List;
import org.gcube.common.storagehub.model.messages.Message;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MessageList {
List<Message> messages;
}

@ -51,5 +51,5 @@ public class PrimaryNodeType {
protected static final String ACCOUNTING = "hl:accounting";
protected static final String NT_ACCOUNTING = "nthl:accountingSet";
protected static final String VERSION_PROPERTY = "hl:version";
}

Loading…
Cancel
Save