Synch with SPD service changes

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/speciesdiscovery@74287 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Federico De Faveri 2013-04-30 15:47:00 +00:00
parent 55bc2edf0e
commit fdad47a790
10 changed files with 108 additions and 137 deletions

View File

@ -1,5 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/speciesdiscovery(trunk)/target/species-discovery-3.0.0-SNAPSHOT
lastWarOutDir=/home/fedy2/workspace/org.gcube.portlets.user.species-discovery/target/species-discovery-3.0.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="${module}">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>

23
pom.xml
View File

@ -48,7 +48,14 @@
<dependency>
<groupId>org.gcube.data.spd</groupId>
<artifactId>spd-client-library</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<version>[3.0.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.data.spd</groupId>
<artifactId>spd-model</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
@ -73,14 +80,6 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.data.spd</groupId>
<artifactId>spd-model</artifactId>
<version>1.0.0-SNAPSHOT</version>
<!-- <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.resources.discovery</groupId>
<artifactId>discovery-client</artifactId>
@ -197,12 +196,6 @@
<version>2.2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>gcf</artifactId>
<version>[1.4.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>gcube-widgets</artifactId>

View File

@ -25,9 +25,9 @@ import net.sf.csv4j.CSVWriter;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.data.spd.model.OccurrencePoint;
import org.gcube.data.spd.model.ResultElement;
import org.gcube.data.spd.model.TaxonomyItem;
import org.gcube.data.spd.model.products.OccurrencePoint;
import org.gcube.data.spd.model.products.ResultElement;
import org.gcube.data.spd.model.products.TaxonomyItem;
import org.gcube.data.spd.stubs.types.Status;
import org.gcube.portlets.user.homelibrary.home.HomeLibrary;
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;

View File

@ -4,10 +4,10 @@
package org.gcube.portlets.user.speciesdiscovery.server.service;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.data.spd.model.OccurrencePoint;
import org.gcube.data.spd.model.ResultElement;
import org.gcube.data.spd.model.ResultItem;
import org.gcube.data.spd.model.TaxonomyItem;
import org.gcube.data.spd.model.products.OccurrencePoint;
import org.gcube.data.spd.model.products.ResultElement;
import org.gcube.data.spd.model.products.ResultItem;
import org.gcube.data.spd.model.products.TaxonomyItem;
import org.gcube.portlets.user.speciesdiscovery.server.stream.CastConverter;
import org.gcube.portlets.user.speciesdiscovery.server.stream.CloseableIterator;
import org.gcube.portlets.user.speciesdiscovery.server.stream.ConversionIterator;

View File

@ -9,7 +9,7 @@ import java.util.List;
import org.apache.commons.lang.StringEscapeUtils;
import org.gcube.data.spd.model.BasisOfRecord;
import org.gcube.data.spd.model.OccurrencePoint;
import org.gcube.data.spd.model.products.OccurrencePoint;
import org.gcube.data.spd.model.util.ElementProperty;
import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.server.stream.Converter;

View File

@ -2,12 +2,11 @@ package org.gcube.portlets.user.speciesdiscovery.server.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import org.gcube.data.spd.model.Properties;
import org.gcube.data.spd.model.Property;
import org.gcube.dataaccess.spql.ParserException;
import org.gcube.dataaccess.spql.SPQLQueryParser;
import org.gcube.portlets.user.speciesdiscovery.shared.Coordinate;
import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceModel;
import org.gcube.portlets.user.speciesdiscovery.shared.SearchFilters;
@ -51,21 +50,19 @@ public class QueryBuilder {
}
List<Property> properties = createFilterProperties(searchFilters);
List<String> conditions = createFilterProperties(searchFilters);
//ADD filters
if(properties.size()>0){
if(conditions.size()>0){
query.append("WHERE ");
Iterator<Property> pIterator = properties.iterator();
while (pIterator.hasNext()) {
Property property = pIterator.next();
String statement = getQueryStatementFromProperty(property);
query.append(statement);
Iterator<String> conditionsIterator = conditions.iterator();
while (conditionsIterator.hasNext()) {
String condition = conditionsIterator.next();
query.append(condition);
if (pIterator.hasNext()) query.append(" AND ");
if (conditionsIterator.hasNext()) query.append(" AND ");
else query.append(" ");
}
}
@ -73,67 +70,50 @@ public class QueryBuilder {
query.append("RETURN ");
if (searchFilters.getResultType()!=null) {
switch (searchFilters.getResultType()) {
case RESULTITEM: query.append("PRODUCT HAVING xpath(\"//product[type='OCCURRENCE' and counter>0]\")"); break;
case TAXONOMYITEM: query.append("TAXON"); break;
case RESULTITEM: query.append("Product HAVING xpath(\"//product[type='OCCURRENCE' and counter>0]\")"); break;
case TAXONOMYITEM: query.append("Taxon"); break;
}
} else {
query.append("PRODUCT HAVING xpath(\"//product[type='OCCURRENCE' and counter>0]\")");
query.append("Product HAVING xpath(\"//product[type='OCCURRENCE' and counter>0]\")");
}
return query.toString();
}
protected static String getQueryStatementFromProperty(Property property){
String statement = null;
Properties prop = property.getProp();
switch (prop) {
case CoordinateTo: {
org.gcube.data.spd.model.Coordinate coordinate = (org.gcube.data.spd.model.Coordinate)property.getValue();
statement= "coordinate <= " + coordinate.getLatitude() + " , "+coordinate.getLongitude();
} break;
case CoordinateFrom: {
org.gcube.data.spd.model.Coordinate coordinate = (org.gcube.data.spd.model.Coordinate)property.getValue();
statement= "coordinate >= " + coordinate.getLatitude() + " , "+coordinate.getLongitude();
} break;
case DateFrom: {
Calendar calendar = (Calendar) property.getValue();
statement= "eventDate >= '" + DATE_FORMAT.format(calendar.getTime())+"'";
} break;
case DateTo: {
Calendar calendar = (Calendar) property.getValue();
statement= "eventDate <= '" + DATE_FORMAT.format(calendar.getTime())+"'";
}
String builtQuery = query.toString();
System.out.println("built query: "+builtQuery);
//FIXME TEST
try {
SPQLQueryParser.parse(builtQuery);
} catch (ParserException e) {
System.out.println("error parsing");
e.printStackTrace();
}
return statement;
return builtQuery;
}
protected static List<Property> createFilterProperties(SearchFilters searchFilters)
protected static List<String> createFilterProperties(SearchFilters searchFilters)
{
List<Property> properties = new ArrayList<Property>();
if (searchFilters.getUpperBound()!=null) properties.add(new Property(Properties.CoordinateTo, convert(searchFilters.getUpperBound())));
if (searchFilters.getLowerBound()!=null) properties.add(new Property(Properties.CoordinateFrom, convert(searchFilters.getLowerBound())));
List<String> conditions = new ArrayList<String>();
if (searchFilters.getUpperBound()!=null) {
Coordinate coordinate = searchFilters.getUpperBound();
conditions.add("coordinate <= " + coordinate.getLatitude() + " , "+coordinate.getLongitude());
}
if (searchFilters.getLowerBound()!=null) {
Coordinate coordinate = searchFilters.getLowerBound();
conditions.add("coordinate >= " + coordinate.getLatitude() + " , "+coordinate.getLongitude());
}
if (searchFilters.getFromDate()!=null) {
Calendar fromDate = Calendar.getInstance();
fromDate.setTime(searchFilters.getFromDate());
properties.add(new Property(Properties.DateFrom, fromDate));
conditions.add("eventDate >= '" + DATE_FORMAT.format(searchFilters.getFromDate())+"'");
}
if (searchFilters.getToDate()!=null) {
Calendar toDate = Calendar.getInstance();
toDate.setTime(searchFilters.getToDate());
properties.add(new Property(Properties.DateTo, toDate));
conditions.add("eventDate <= '" + DATE_FORMAT.format(searchFilters.getToDate())+"'");
}
return properties;
}
protected static org.gcube.data.spd.model.Coordinate convert(Coordinate coordinate)
{
return new org.gcube.data.spd.model.Coordinate(coordinate.getLatitude(), coordinate.getLongitude());
return conditions;
}
}

View File

@ -8,10 +8,11 @@ import java.util.List;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.common.core.utils.logging.GCUBEClientLog;
import org.gcube.data.spd.model.DataProvider;
import org.gcube.data.spd.model.DataSet;
import org.gcube.data.spd.model.Product;
import org.gcube.data.spd.model.ResultItem;
import org.gcube.data.spd.model.products.DataProvider;
import org.gcube.data.spd.model.products.DataSet;
import org.gcube.data.spd.model.products.Product;
import org.gcube.data.spd.model.products.ResultItem;
import org.gcube.data.spd.model.products.TaxonomyInterface;
import org.gcube.data.spd.model.util.ElementProperty;
import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.server.TaxonomySearchServiceImpl;
@ -162,7 +163,7 @@ public class ResultItemConverter implements Converter<ResultItem, ResultRow> {
return row;
}
private String getBaseTaxonValue(String rank, org.gcube.data.spd.model.TaxonomyInterface taxon){
private String getBaseTaxonValue(String rank, TaxonomyInterface taxon){
while(taxon!=null){
@ -176,7 +177,7 @@ public class ResultItemConverter implements Converter<ResultItem, ResultRow> {
}
protected List<Taxon> convertTaxon(org.gcube.data.spd.model.TaxonomyInterface taxon)
protected List<Taxon> convertTaxon(TaxonomyInterface taxon)
{
List<Taxon> listTaxon = new ArrayList<Taxon>();
int count=0;

View File

@ -8,10 +8,13 @@ import static org.gcube.data.streams.dsl.Streams.convert;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
@ -22,17 +25,17 @@ import org.gcube.data.spd.client.proxies.Classification;
import org.gcube.data.spd.client.proxies.Executor;
import org.gcube.data.spd.client.proxies.Manager;
import org.gcube.data.spd.client.proxies.Occurrence;
import org.gcube.data.spd.model.OccurrencePoint;
import org.gcube.data.spd.model.Properties;
import org.gcube.data.spd.model.Property;
import org.gcube.data.spd.model.ResultElement;
import org.gcube.data.spd.model.TaxonomyItem;
import org.gcube.data.spd.model.Condition;
import org.gcube.data.spd.model.Conditions;
import org.gcube.data.spd.model.PluginDescription;
import org.gcube.data.spd.model.RepositoryInfo;
import org.gcube.data.spd.model.products.OccurrencePoint;
import org.gcube.data.spd.model.products.ResultElement;
import org.gcube.data.spd.model.products.TaxonomyItem;
import org.gcube.data.spd.model.util.Capabilities;
import org.gcube.data.spd.stubs.exceptions.InvalidIdentifierException;
import org.gcube.data.spd.stubs.types.CapabilityDescription;
import org.gcube.data.spd.stubs.types.PluginDescription;
import org.gcube.data.spd.stubs.types.PluginProperty;
import org.gcube.data.spd.stubs.types.RepositoryInfo;
import org.gcube.data.spd.stubs.types.Status;
import org.gcube.data.streams.Stream;
import org.gcube.portlets.user.speciesdiscovery.server.stream.CloseableIterator;
@ -196,22 +199,23 @@ public class SpeciesService {
for (int i = 0; i < plugin.size(); i++) {
PluginDescription pluginDescription = plugin.get(i);
List<CapabilityDescription> listCapabilityDescription = pluginDescription.getCapabilities();
ArrayList<DataSourceCapability> listCapabilities = new ArrayList<DataSourceCapability>(); //new Array List DataSourceCapability
ArrayList<DataSourceCapability> datasourceCapabilities = new ArrayList<DataSourceCapability>();
Map<Capabilities, List<Conditions>> pluginCapabilities = pluginDescription.getSupportedCapabilities();
logger.trace("getCapabilities for..." + pluginDescription.getName());
for (CapabilityDescription capabilityDescription : listCapabilityDescription){
List<String> properties = capabilityDescription.getProperties();
ArrayList<String> listProperties = properties!=null?new ArrayList<String>(properties):new ArrayList<String>();
ArrayList<SpeciesCapability> listPropertiesEnum = new ArrayList<SpeciesCapability>();
for (String property : listProperties)
listPropertiesEnum.add(getFilterCapabilityFromProperties(property));
listCapabilities.add(new DataSourceCapability(getGxtCapabilityValueFromCapability(capabilityDescription.getName()), listPropertiesEnum));
for (Entry<Capabilities, List<Conditions>> pluginCapability:pluginCapabilities.entrySet()) {
Capabilities capability = pluginCapability.getKey();
ArrayList<SpeciesCapability> datasourceProperties = new ArrayList<SpeciesCapability>();
for (Conditions condition:pluginCapability.getValue()) datasourceProperties.addAll(getFilterCapabilityFromProperties(condition));
datasourceCapabilities.add(new DataSourceCapability(getGxtCapabilityValueFromCapability(capability), datasourceProperties));
}
RepositoryInfo rep = pluginDescription.getRepositoryInfo();
RepositoryInfo rep = pluginDescription.getInfo();
//CREATE DataSourceRepositoryInfo
DataSourceRepositoryInfo dsInfo = new DataSourceRepositoryInfo();
@ -219,7 +223,7 @@ public class SpeciesService {
if(rep!=null){
// System.out.println("DESCRIPTION REPOSITORY: " + rep.getDescription());
dsInfo.setLogoUrl(rep.getLogoUrl());
dsInfo.setPageUrl(rep.getReferencePageUrl());
dsInfo.setPageUrl(rep.getPageReferenceUrl());
dsInfo.setProperties(getPropertiesFromRepositoryInfoType(rep));
dsInfo.setDescription(rep.getDescription());
// dsInfo = new DataSourceRepositoryInfo(rep.getLogoUrl(), rep.getReferencePageUrl(),getPropertiesFromRepositoryInfoType(rep), rep.getDescription());
@ -227,7 +231,7 @@ public class SpeciesService {
// logger.trace("Repository description size: " + rep.getDescription().length());
}
listDsModel.add(new DataSourceModel(pluginDescription.getName(), pluginDescription.getName(), pluginDescription.getDescription(), listCapabilities, dsInfo));
listDsModel.add(new DataSourceModel(pluginDescription.getName(), pluginDescription.getName(), pluginDescription.getDescription(), datasourceCapabilities, dsInfo));
}
}
@ -253,42 +257,34 @@ public class SpeciesService {
return mapProperties;
}
for (PluginProperty prop : rep.getProperties())
mapProperties.put(prop.getKey(), prop.getValue());
for (Entry<String, String> property : rep.getProperties().entrySet()) mapProperties.put(property.getKey(), property.getValue());
return mapProperties;
}
private SpeciesCapability getFilterCapabilityFromProperties(String property){
private List<SpeciesCapability> getFilterCapabilityFromProperties(Conditions property){
if(property.compareTo(Properties.DateFrom.name())==0)
return SpeciesCapability.FROMDATE;
else if(property.compareTo(Properties.DateTo.name())==0)
return SpeciesCapability.TODATE;
else if(property.compareTo(Properties.CoordinateTo.name())==0)
return SpeciesCapability.UPPERBOUND;
else if(property.compareTo(Properties.CoordinateFrom.name())==0)
return SpeciesCapability.LOWERBOUND;
switch (property) {
case DATE: return Arrays.asList(SpeciesCapability.FROMDATE, SpeciesCapability.TODATE);
case COORDINATE: return Arrays.asList(SpeciesCapability.UPPERBOUND, SpeciesCapability.LOWERBOUND);
default: return Collections.singletonList(SpeciesCapability.UNKNOWN);
return SpeciesCapability.UNKNOWN;
}
}
private SpeciesCapability getGxtCapabilityValueFromCapability(String capability){
private SpeciesCapability getGxtCapabilityValueFromCapability(Capabilities capability){
if(capability.compareTo(Capabilities.Classification.name())==0)
return SpeciesCapability.TAXONOMYITEM;
else if(capability.compareTo(Capabilities.Occurences.name())==0)
return SpeciesCapability.RESULTITEM;
else if(capability.compareTo(Capabilities.NamesMapping.name())==0)
return SpeciesCapability.NAMESMAPPING;
else if(capability.compareTo(Capabilities.Synonims.name())==0)
return SpeciesCapability.SYNONYMS;
return SpeciesCapability.UNKNOWN;
switch (capability) {
case Classification: return SpeciesCapability.TAXONOMYITEM;
case NamesMapping: return SpeciesCapability.NAMESMAPPING;
case Occurences: return SpeciesCapability.RESULTITEM;
case Synonims: return SpeciesCapability.SYNONYMS;
default: return SpeciesCapability.UNKNOWN;
}
}
protected List<Property> createFilterProperties(SearchFilters searchFilters)
/*protected List<Property> createFilterProperties(SearchFilters searchFilters)
{
List<Property> properties = new ArrayList<Property>();
if (searchFilters.getUpperBound()!=null) properties.add(new Property(Properties.CoordinateTo, convertCoordinate(searchFilters.getUpperBound())));
@ -306,7 +302,7 @@ public class SpeciesService {
}
return properties;
}
}*/
protected org.gcube.data.spd.model.Coordinate convertCoordinate(Coordinate coordinate)
{

View File

@ -5,7 +5,7 @@ import java.util.List;
import org.apache.log4j.Logger;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.data.spd.model.TaxonomyItem;
import org.gcube.data.spd.model.products.TaxonomyItem;
import org.gcube.data.spd.model.util.ElementProperty;
import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.server.TaxonomySearchServiceImpl;