diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportal/access/GeportalCheckAccessPolicy.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/access/GeportalCheckAccessPolicy.java new file mode 100644 index 0000000..ecc8c8d --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/access/GeportalCheckAccessPolicy.java @@ -0,0 +1,94 @@ +package org.gcube.application.geoportalcommon.geoportal.access; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class GeportalCheckAccessPolicy. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Oct 7, 2022 + */ +public class GeportalCheckAccessPolicy { + + private static final Logger LOG = LoggerFactory.getLogger(GeportalCheckAccessPolicy.class); + + /** + * The Enum ACCESS_POLICY. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * Sep 8, 2021 + */ + public static enum ACCESS_POLICY { + OPEN, RESTICTED + } + + /** + * Checks if is open access. + * + * @param policy the policy + * @return true, if is open access + */ + private static boolean isOpenAccess(String policy) { + if (policy == null || policy.equalsIgnoreCase(ACCESS_POLICY.OPEN.name())) { + return true; + } + + return false; + + } + + /** + * Checks if is restricted access. + * + * @param policy the policy + * @return true, if is restricted access + */ + private static boolean isRestrictedAccess(String policy) { + if (policy == null || policy.equalsIgnoreCase(ACCESS_POLICY.RESTICTED.name())) { + return true; + } + + return false; + + } + + /** + * Checks if is accessible accoding to access policies. + * + * @param policy the policy + * @param myLogin the my login + * @return true, if is accessible + */ + public static boolean isAccessible(String policy, String myLogin) { + + boolean bool = isOpenAccess(policy); + + if (bool) { + // is open access + return true; + } + + // From here managing is NOT OPEN access + + if (myLogin == null || myLogin.isEmpty()) { + // here is not open and the user is not authenticated + return false; + } + + // Here the login is not null, so checking if the access to item is RESTICTED + bool = isRestrictedAccess(policy); + + if (bool) { + // is restricted access + return true; + } + + // Here the user is authenticated, but the policy is not managed, so returning + // true + return true; + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/FilesetDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/FilesetDV.java index e1da8cc..6e53023 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/FilesetDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/FilesetDV.java @@ -1,6 +1,7 @@ package org.gcube.application.geoportalcommon.shared.geoportal.view; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; public class FilesetDV implements Serializable { @@ -10,25 +11,46 @@ public class FilesetDV implements Serializable { */ private static final long serialVersionUID = -2587586022638697113L; - private List listPayload; + private String name; + private List listPayloads; public FilesetDV() { } - public List getListPayload() { - return listPayload; + public String getName() { + return name; } - public void setListPayload(List listPayload) { - this.listPayload = listPayload; + public void setName(String name) { + this.name = name; + } + + public List getListPayload() { + return listPayloads; + } + + public void addPayloadDV(PayloadDV payloadDV) { + if (listPayloads == null) + listPayloads = new ArrayList(); + + listPayloads.add(payloadDV); + } + + public void addListPayloadsDV(List listPayloadsDV) { + if (listPayloads == null) + listPayloads = new ArrayList(); + + listPayloads.addAll(listPayloadsDV); } @Override public String toString() { StringBuilder builder = new StringBuilder(); - builder.append("FilesetDV [listPayload="); - builder.append(listPayload); + builder.append("FilesetDV [name="); + builder.append(name); + builder.append(", listPayloads="); + builder.append(listPayloads); builder.append("]"); return builder.toString(); } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/ProjectView.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/ProjectView.java index 324e20a..9543217 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/ProjectView.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/ProjectView.java @@ -8,8 +8,12 @@ import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV; public class ProjectView { private ProjectDV theProjectDV; + //The DocumentDV (contained in the ProjectDV) is listed in SectionView private List listSections = new ArrayList(); - + + private long centroidLong; + private long centroidLat; + public ProjectView() { } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java index e6c49a4..035f229 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java @@ -12,7 +12,7 @@ public class SectionView implements Serializable { private static final long serialVersionUID = -687500472291023073L; private String sectionTitle; - private List listSubDocuments = new ArrayList(); + private List listSubDocuments; public SectionView() { @@ -23,6 +23,10 @@ public class SectionView implements Serializable { } public void addSubDocument(SubDocumentView subDocumentView) { + + if (listSubDocuments == null) + listSubDocuments = new ArrayList(); + listSubDocuments.add(subDocumentView); }