task_24166 #14
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -75,7 +76,8 @@
|
|||
|
||||
|
||||
<wb-module deploy-name="geoportal-data-viewer-app-3.4.0-SNAPSHOT">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -151,7 +153,8 @@
|
|||
|
||||
|
||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -227,7 +230,8 @@
|
|||
|
||||
|
||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -303,7 +307,8 @@
|
|||
|
||||
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -379,7 +384,8 @@
|
|||
|
||||
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -455,7 +461,11 @@
|
|||
|
||||
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||
|
||||
<dependent-module archiveName="geoportal-data-mapper-1.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/geoportal-data-mapper/geoportal-data-mapper">
|
||||
<dependency-type>uses</dependency-type>
|
||||
</dependent-module>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -531,7 +541,8 @@
|
|||
|
||||
|
||||
<property name="java-output-path" value="/geoportal-data-viewer-app/target/geoportal-data-viewer-app-0.0.1-SNAPSHOT/WEB-INF/classes"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -607,7 +618,8 @@
|
|||
|
||||
|
||||
<property name="context-root" value="geoportal-data-viewer-app"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -683,7 +695,8 @@
|
|||
|
||||
|
||||
</wb-module>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
24
pom.xml
24
pom.xml
|
@ -20,7 +20,7 @@
|
|||
|
||||
<properties>
|
||||
<!-- Convenience property to set the GWT version -->
|
||||
<gwt.version>2.9.0</gwt.version>
|
||||
<gwt.version>2.10.0</gwt.version>
|
||||
<gwt.compiler.style>PRETTY</gwt.compiler.style>
|
||||
<gson.version>2.6.2</gson.version>
|
||||
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
|
||||
|
@ -149,28 +149,6 @@
|
|||
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.portlets.widgets</groupId>
|
||||
<artifactId>metadata-profile-form-builder-widget</artifactId>
|
||||
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
|
||||
<scope>compile</scope>
|
||||
<!-- does not remove these exclusions, there are conflict with jackson
|
||||
2.7 used by geo-json dependency -->
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>de.grundid.opendatalab</groupId>
|
||||
<artifactId>geojson-jackson</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.application</groupId>
|
||||
<artifactId>geoportal-data-common</artifactId>
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.server;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
||||
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
|
||||
|
||||
public class GcubeProfilesMetadataForUCD implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -8953445402356442872L;
|
||||
private String profileID;
|
||||
private GcubeProfileDV gcubeProfile;
|
||||
private List<MetaDataProfileBean> listMetadataProfileBean;
|
||||
|
||||
public GcubeProfilesMetadataForUCD() {
|
||||
|
||||
}
|
||||
|
||||
public GcubeProfilesMetadataForUCD(String profileID, GcubeProfileDV gcubeProfile,
|
||||
List<MetaDataProfileBean> listMetadataProfileBean) {
|
||||
|
||||
this.profileID = profileID;
|
||||
this.gcubeProfile = gcubeProfile;
|
||||
this.listMetadataProfileBean = listMetadataProfileBean;
|
||||
}
|
||||
|
||||
public String getProfileID() {
|
||||
return profileID;
|
||||
}
|
||||
|
||||
public GcubeProfileDV getGcubeProfile() {
|
||||
return gcubeProfile;
|
||||
}
|
||||
|
||||
public List<MetaDataProfileBean> getListMetadataProfileBean() {
|
||||
return listMetadataProfileBean;
|
||||
}
|
||||
|
||||
public void setProfileID(String profileID) {
|
||||
this.profileID = profileID;
|
||||
}
|
||||
|
||||
public void setGcubeProfile(GcubeProfileDV gcubeProfile) {
|
||||
this.gcubeProfile = gcubeProfile;
|
||||
}
|
||||
|
||||
public void setListMetadataProfileBean(List<MetaDataProfileBean> listMetadataProfileBean) {
|
||||
this.listMetadataProfileBean = listMetadataProfileBean;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("GcubeProfilesMetadataForUCD [profileID=");
|
||||
builder.append(profileID);
|
||||
builder.append(", gcubeProfile=");
|
||||
builder.append(gcubeProfile);
|
||||
builder.append(", listMetadataProfileBean=");
|
||||
builder.append(listMetadataProfileBean);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,162 +0,0 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
package org.gcube.portlets.user.geoportaldataviewer.server;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||
import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel;
|
||||
import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller;
|
||||
import org.gcube.application.geoportalcommon.geoportal.UseCaseDescriptorCaller;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_CONFIGURATION_TYPE;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_DATA_HANDLER;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.portlets.widgets.mpformbuilder.server.MetadataProfileFormBuilderServiceImpl;
|
||||
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.cache.RemovalListener;
|
||||
import com.google.common.cache.RemovalNotification;
|
||||
|
||||
/**
|
||||
* The Class GcubeProfilesPerUCDIdCache.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Oct 12, 2022
|
||||
*/
|
||||
public class GcubeProfilesPerUCDIdCache {
|
||||
|
||||
private static Logger LOG = LoggerFactory.getLogger(GcubeProfilesPerUCDIdCache.class);
|
||||
|
||||
private static LoadingCache<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>> gCubeProfilesPerProfileIDCache;
|
||||
|
||||
static {
|
||||
|
||||
CacheLoader<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>> loader = new CacheLoader<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>>() {
|
||||
@Override
|
||||
public LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> load(String scope) throws Exception {
|
||||
LOG.info("Loading the cache for scope: " + scope);
|
||||
return loadGcubeProfilesForUCDIdInTheScope(scope);
|
||||
}
|
||||
};
|
||||
|
||||
RemovalListener<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>> removalListener = new RemovalListener<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>>() {
|
||||
public void onRemoval(
|
||||
RemovalNotification<String, LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>> removal) {
|
||||
LOG.info(GcubeProfilesPerUCDIdCache.class.getSimpleName() + " cache expired");
|
||||
}
|
||||
};
|
||||
|
||||
gCubeProfilesPerProfileIDCache = CacheBuilder.newBuilder().maximumSize(1000)
|
||||
.expireAfterWrite(30, TimeUnit.MINUTES).removalListener(removalListener).build(loader);
|
||||
|
||||
LOG.info("cache instancied");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the.
|
||||
*
|
||||
* @param scope the scope
|
||||
* @return the geonetwork instance
|
||||
* @throws Exception
|
||||
*/
|
||||
public static LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> get(String scope) throws Exception {
|
||||
LOG.info("GcubeProfilesPerUCDIdCache get - called in the scope: " + scope);
|
||||
LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> map = gCubeProfilesPerProfileIDCache.get(scope);
|
||||
LOG.info("GcubeProfilesPerUCDIdCache returning map null? " + (map==null));
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load geonetwork instance.
|
||||
*
|
||||
* @param scope the scope
|
||||
* @return the linked hash map
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
private static LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> loadGcubeProfilesForUCDIdInTheScope(
|
||||
String scope) throws Exception {
|
||||
LOG.info("loadGcubeProfilesForUCDIdInTheScope called in the scope: " + scope);
|
||||
|
||||
LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> linkedMap_UCDId_gCubeProfiles = new LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>>();
|
||||
try {
|
||||
ScopeProvider.instance.set(scope);
|
||||
UseCaseDescriptorCaller clientUCD = GeoportalClientCaller.useCaseDescriptors();
|
||||
List<UseCaseDescriptor> listUCDs = clientUCD.getList();
|
||||
LOG.debug("listUCDs: " + listUCDs);
|
||||
|
||||
for (UseCaseDescriptor ucd : listUCDs) {
|
||||
|
||||
LOG.info("Loaded UCD for ID: " + ucd.getId());
|
||||
String profileID = ucd.getId();
|
||||
GEOPORTAL_DATA_HANDLER theHandler = GEOPORTAL_DATA_HANDLER.geoportal_data_entry;
|
||||
List<HandlerDeclaration> handlers = ucd.getHandlersByType(theHandler.getType());
|
||||
|
||||
if (handlers.size() == 0) {
|
||||
LOG.warn("No handler " + theHandler + "found into UCD " + ucd.getId() + ", continue...");
|
||||
continue;
|
||||
}
|
||||
|
||||
// Loading Handler gcube_profiles
|
||||
HandlerDeclaration dataEntryHandler = handlers.get(0);
|
||||
HandlerDeclarationDV handlerGcubeProfiles = ConvertToDataValueObjectModel
|
||||
.toHandlerDeclarationDV(dataEntryHandler, ucd, GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles);
|
||||
|
||||
LOG.debug("Handler " + GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles + " for PROFILE_ID: " + ucd.getId());
|
||||
LOG.debug("" + handlerGcubeProfiles);
|
||||
|
||||
ConfigurationDV<?> config = handlerGcubeProfiles.getConfiguration();
|
||||
// List of gCube Profiles defined in the UCD
|
||||
List<GcubeProfileDV> listGcubeProfiles = (List<GcubeProfileDV>) config.getConfiguration();
|
||||
LOG.debug("List of GcubeProfileDV are: " + listGcubeProfiles);
|
||||
|
||||
List<GcubeProfilesMetadataForUCD> listProfilesBean = new ArrayList<GcubeProfilesMetadataForUCD>();
|
||||
// Loading Metadata Profile from IS
|
||||
MetadataProfileFormBuilderServiceImpl metaProfileBUilder = new MetadataProfileFormBuilderServiceImpl();
|
||||
|
||||
for (GcubeProfileDV gcubeProfileDV : listGcubeProfiles) {
|
||||
ScopeProvider.instance.set(scope);
|
||||
GcubeProfilesMetadataForUCD gCubeProfileMetadataForUCD = new GcubeProfilesMetadataForUCD();
|
||||
List<MetaDataProfileBean> listProfiles = metaProfileBUilder.getProfilesInTheScopeForName(scope,
|
||||
gcubeProfileDV.getGcubeSecondaryType(), gcubeProfileDV.getGcubeName());
|
||||
|
||||
String key = gcubeProfileDV.getGcubeSecondaryType() + gcubeProfileDV.getGcubeName();
|
||||
LOG.debug("for key: " + key + " readi profiles: " + listGcubeProfiles);
|
||||
gCubeProfileMetadataForUCD.setGcubeProfile(gcubeProfileDV);
|
||||
gCubeProfileMetadataForUCD.setListMetadataProfileBean(listProfiles);
|
||||
listProfilesBean.add(gCubeProfileMetadataForUCD);
|
||||
|
||||
}
|
||||
linkedMap_UCDId_gCubeProfiles.put(ucd.getId(), listProfilesBean);
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
for (String key : linkedMap_UCDId_gCubeProfiles.keySet()) {
|
||||
LOG.debug("For key '" + key + "' got profiles: " + linkedMap_UCDId_gCubeProfiles.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
String erroMsg = "Error occurred on preloadgCubeProfilesForUCDs: ";
|
||||
LOG.error(erroMsg, e);
|
||||
}
|
||||
|
||||
LOG.info("GcubeProfilesPerUCDIdCache loaded with " + linkedMap_UCDId_gCubeProfiles.size() + " item/s");
|
||||
return linkedMap_UCDId_gCubeProfiles;
|
||||
}
|
||||
}
|
|
@ -61,6 +61,7 @@ import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescrip
|
|||
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
||||
import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
|
||||
import org.gcube.application.geoportalcommon.util.URLParserUtil;
|
||||
import org.gcube.application.geoportaldatamapper.GcubeProfilesPerUCDIdCache;
|
||||
import org.gcube.application.geoportaldatamapper.Geoportal_JSON_Mapper;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerService;
|
||||
|
|
Loading…
Reference in New Issue