This commit is contained in:
Lucio Lelii 2021-12-03 16:56:57 +01:00
parent 7aff397939
commit 74b78a1e5d
10 changed files with 111 additions and 30 deletions

View File

@ -16,7 +16,6 @@
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">

View File

@ -4,8 +4,9 @@ public class Constants {
public static final String enchriptedPrefix = "E_"; public static final String enchriptedPrefix = "E_";
public static final String versionPrefix = "_v"; public static final String versionPrefix = "_v";
public static final String mongoStorageConstant = "gcube-mongo"; public static final String MONGO_STORAGE = "gcube-mongo";
public static final String s3StorageConstant = "gcube-s3"; public static final String DEFAULT_MINIO_STORAGE = "default-gcube-minio";
} }

View File

@ -9,11 +9,13 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.ToString;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ToString
public class Metadata { public class Metadata {
@MapAttribute(excludeStartWith="jcr:") @MapAttribute(excludeStartWith="jcr:")

View File

@ -44,5 +44,5 @@ public class NodeConstants {
public static final String OWNERNODETYPE = "nthl:user"; public static final String OWNERNODETYPE = "nthl:user";
public static final String GENERICFILETYPE = "nthl:externalFile"; public static final String GENERICFILETYPE = "nthl:externalFile";
public static final String CONTENTFILETYPE = "nthl:file"; public static final String CONTENTFILETYPE = "nthl:file";
public static final String PAYLOADBACKENDTYPE = "nthl:payloadbackend"; public static final String PAYLOADBACKENDTYPE = "nthl:payloadBackend";
} }

View File

@ -2,7 +2,8 @@ package org.gcube.common.storagehub.model.items;
import static org.gcube.common.storagehub.model.NodeConstants.PAYLOADBACKEND; import static org.gcube.common.storagehub.model.NodeConstants.PAYLOADBACKEND;
import org.gcube.common.storagehub.model.annotations.Attribute; import org.gcube.common.storagehub.model.Constants;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import org.gcube.common.storagehub.model.annotations.RootNode; import org.gcube.common.storagehub.model.annotations.RootNode;
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend; import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
@ -16,7 +17,7 @@ import lombok.Setter;
@RootNode("nthl:workspaceItem") @RootNode("nthl:workspaceItem")
public class FolderItem extends Item { public class FolderItem extends Item {
@Attribute(PAYLOADBACKEND) @NodeAttribute(value= PAYLOADBACKEND)
PayloadBackend backend; PayloadBackend backend = new PayloadBackend(Constants.DEFAULT_MINIO_STORAGE, null);
} }

View File

@ -7,20 +7,24 @@ import static org.gcube.common.storagehub.model.NodeConstants.CONTENTID;
import static org.gcube.common.storagehub.model.NodeConstants.CONTENTMYMETYPE; import static org.gcube.common.storagehub.model.NodeConstants.CONTENTMYMETYPE;
import static org.gcube.common.storagehub.model.NodeConstants.CONTENTREMOTEPATH; import static org.gcube.common.storagehub.model.NodeConstants.CONTENTREMOTEPATH;
import static org.gcube.common.storagehub.model.NodeConstants.CONTENTSIZE; import static org.gcube.common.storagehub.model.NodeConstants.CONTENTSIZE;
import static org.gcube.common.storagehub.model.NodeConstants.STORAGENAME; import static org.gcube.common.storagehub.model.NodeConstants.PAYLOADBACKEND;
import org.gcube.common.storagehub.model.Constants; import org.gcube.common.storagehub.model.Constants;
import org.gcube.common.storagehub.model.annotations.Attribute; import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.AttributeRootNode; import org.gcube.common.storagehub.model.annotations.AttributeRootNode;
import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true)
@AttributeRootNode(CONTENTFILETYPE) @AttributeRootNode(CONTENTFILETYPE)
public class Content { public class Content {
@ -38,7 +42,14 @@ public class Content {
@Attribute(CONTENTID) @Attribute(CONTENTID)
String storageId; String storageId;
@NodeAttribute(value= PAYLOADBACKEND)
PayloadBackend payloadBackend;
@Attribute(value= STORAGENAME, defaultValue = Constants.mongoStorageConstant) public PayloadBackend getPayloadBackend(){
String managedBy; if(payloadBackend == null)
return new PayloadBackend(Constants.MONGO_STORAGE, null);
else return payloadBackend;
}
} }

View File

@ -1,23 +1,48 @@
package org.gcube.common.storagehub.model.items.nodes; package org.gcube.common.storagehub.model.items.nodes;
import static org.gcube.common.storagehub.model.NodeConstants.*; import static org.gcube.common.storagehub.model.NodeConstants.PARAMETERS;
import static org.gcube.common.storagehub.model.NodeConstants.PAYLOADBACKENDTYPE;
import static org.gcube.common.storagehub.model.NodeConstants.STORAGENAME;
import java.util.Collections;
import java.util.Map;
import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.annotations.Attribute; import org.gcube.common.storagehub.model.annotations.Attribute;
import org.gcube.common.storagehub.model.annotations.AttributeRootNode; import org.gcube.common.storagehub.model.annotations.AttributeRootNode;
import org.gcube.common.storagehub.model.annotations.NodeAttribute; import org.gcube.common.storagehub.model.annotations.NodeAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString;
@NoArgsConstructor @NoArgsConstructor
@Data @AllArgsConstructor
@ToString
@EqualsAndHashCode
@AttributeRootNode(PAYLOADBACKENDTYPE) @AttributeRootNode(PAYLOADBACKENDTYPE)
public class PayloadBackend { public class PayloadBackend {
@Attribute(STORAGENAME) @Attribute(value= STORAGENAME)
String storageName; private String storageName;
@JsonIgnore @JsonIgnore
@NodeAttribute(value=PARAMETERS) @NodeAttribute(value=PARAMETERS)
Metadata parameters = new Metadata(); private Metadata parameters = new Metadata();
public String getStorageName() {
return storageName;
}
@JsonIgnore
public Map<String, Object> getParameters(){
if (parameters ==null || parameters.getMap() == null )
return Collections.emptyMap();
else return parameters.getMap();
}
} }

View File

@ -1,5 +1,7 @@
package org.gcube.common.storagehub.model.storages; package org.gcube.common.storagehub.model.storages;
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -15,5 +17,5 @@ public class MetaInfo {
String remotePath; String remotePath;
String managedBy; PayloadBackend payloadBackend;
} }

View File

@ -3,24 +3,64 @@ package org.gcube.common.storagehub.model.storages;
import java.io.InputStream; import java.io.InputStream;
import org.gcube.common.storagehub.model.items.nodes.Content; import org.gcube.common.storagehub.model.items.nodes.Content;
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
public interface StorageBackend { public abstract class StorageBackend {
String getName(); private PayloadBackend payloadConfiguration;
MetaInfo onCopy(Content content, String newParentPath, String newName); public StorageBackend(PayloadBackend payloadConfiguration) {
this.payloadConfiguration = payloadConfiguration;
}
MetaInfo onMove(Content content, String newParentPath);
void onDelete(Content content); public PayloadBackend getPayloadConfiguration() {
return payloadConfiguration;
}
public abstract MetaInfo onCopy(Content content, String newParentPath, String newName);
MetaInfo upload(InputStream stream, String relativePath, String name); public abstract MetaInfo onMove(Content content, String newParentPath);
InputStream download(Content item); public abstract void onDelete(Content content);
public abstract MetaInfo upload(InputStream stream, String relativePath, String name);
public abstract MetaInfo upload(InputStream stream, String relativePath, String name, Long size);
public abstract InputStream download(Content item);
@Deprecated @Deprecated
String getTotalSizeStored(); public abstract String getTotalSizeStored();
@Deprecated @Deprecated
String getTotalItemsCount(); public abstract String getTotalItemsCount();
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((payloadConfiguration == null) ? 0 : payloadConfiguration.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StorageBackend other = (StorageBackend) obj;
if (payloadConfiguration == null) {
if (other.payloadConfiguration != null)
return false;
} else if (!payloadConfiguration.equals(other.payloadConfiguration))
return false;
return true;
}
} }

View File

@ -1,13 +1,13 @@
package org.gcube.common.storagehub.model.storages; package org.gcube.common.storagehub.model.storages;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters;
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
public interface StorageBackendFactory { public interface StorageBackendFactory {
String getName(); String getName();
StorageBackend create(Metadata parameter) throws InvalidCallParameters; StorageBackend create(PayloadBackend payloadConfiguration) throws InvalidCallParameters;
} }