diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index 6ace3ff..2bfb926 100644 --- a/.settings/com.google.gdt.eclipse.core.prefs +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -1,5 +1,5 @@ eclipse.preferences.version=1 jarsExcludedFromWebInfLib= -lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/speciesdiscovery(trunk)/target/species-discovery-3.1.0-SNAPSHOT +lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/speciesdiscovery(trunk)/target/species-discovery-3.3.0-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchBorderLayoutPanel.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchBorderLayoutPanel.java index 64526b3..4be0538 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchBorderLayoutPanel.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchBorderLayoutPanel.java @@ -6,7 +6,6 @@ import org.gcube.portlets.user.speciesdiscovery.client.job.SpeciesJobPanel; import org.gcube.portlets.user.speciesdiscovery.shared.SearchResultType; import com.extjs.gxt.ui.client.Style.LayoutRegion; -import com.extjs.gxt.ui.client.Style.Scroll; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.layout.BorderLayout; diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchController.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchController.java index 66ea268..23a7437 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchController.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SearchController.java @@ -47,6 +47,8 @@ import org.gcube.portlets.user.speciesdiscovery.client.event.SaveJobEventHandler import org.gcube.portlets.user.speciesdiscovery.client.event.SearchEvent; import org.gcube.portlets.user.speciesdiscovery.client.event.SearchEventHandler; import org.gcube.portlets.user.speciesdiscovery.client.event.SearchStartedEvent; +import org.gcube.portlets.user.speciesdiscovery.client.event.SearchTypeSelectedEvent; +import org.gcube.portlets.user.speciesdiscovery.client.event.SearchTypeSelectedEventHandler; import org.gcube.portlets.user.speciesdiscovery.client.event.SetCommonNamesEvent; import org.gcube.portlets.user.speciesdiscovery.client.event.SetCommonNamesEventHandler; import org.gcube.portlets.user.speciesdiscovery.client.event.ShowOccurrencesEvent; @@ -259,6 +261,18 @@ public class SearchController { } }); + eventBus.addHandler(SearchTypeSelectedEvent.TYPE, new SearchTypeSelectedEventHandler() { + + @Override + public void onSearchTypeSelected(SearchTypeSelectedEvent searchTypeSelectedEvent) { + + if(searchTypeSelectedEvent.getType()!=null) + AdvancedSearchPanelManager.getInstance().disableFilterForSearchType(searchTypeSelectedEvent.getType()); + + } + }); + + eventBus.addHandler(SearchEvent.TYPE, new SearchEventHandler() { @@ -274,7 +288,7 @@ public class SearchController { // ResultFilterPanelManager.getInstance().setGroupByRank(event.getGroupByRank()); if(event.getType().equals(SearchType.BY_COMMON_NAME) || event.getType().equals(SearchType.BY_SCIENTIFIC_NAME)){ - search(event.getType(), event.getSearchTerm().trim(), event.getUpperBoundLongitude(), event.getUpperBoundLatitude(), event.getLowerBoundLongitude(), event.getLowerBoundLatitude(), event.getFromDate(), event.getToDate(), event.getLstDataSources(), event.getGroupByRank(), event.getResultType()); + search(event.getType(), event.getSearchTerm().trim(), event.getUpperBoundLongitude(), event.getUpperBoundLatitude(), event.getLowerBoundLongitude(), event.getLowerBoundLatitude(), event.getFromDate(), event.getToDate(), event.getLstDataSources(), event.getGroupByRank(), event.getResultType(), event.getListDataSourcesForSynonyms(), event.getListDataSourcesForUnfold()); } else{ searchByQuery(event.getQuery()); @@ -402,27 +416,7 @@ public class SearchController { switch (createSpeciesJobEvent.getJobType()) { case BYCHILDREN: - -// createSpeciesJobEvent.getTaxonomy().setParent(null); //FIX FOR PARENTS SERIALIZATIONS -// SpeciesDiscovery.taxonomySearchService.createTaxonomyJobByChildren(createSpeciesJobEvent.getTaxonomy(), createSpeciesJobEvent.getDataSourceName(), new AsyncCallback() { -// -// @Override -// public void onFailure(Throwable caught) { -// Info.display("Error", "Sorry, An error occurred on create job. Please try again later"); -// Log.error("Error on loading", "An error occurred on create job by children, retry." +caught.getMessage()); -// } -// -// @Override -// public void onSuccess(JobTaxonomyModel result) { -// -// if(result!=null){ -// Info.display("Species Taxonomy Job","A new taxonomy job was submitted"); -// excecuteGetJobs(SearchResultType.TAXONOMY_ITEM, false); -// searchBorderLayoutPanel.getSpeciesSouthPanel().setIconTaxonomyByCounter(1); -// } -// } -// }); - + TaxonomyRow taxonomy = createSpeciesJobEvent.getTaxonomy(); SpeciesDiscovery.taxonomySearchService.createTaxonomyJobByChildren(taxonomy.getServiceId(), taxonomy.getName(), taxonomy.getRank(), createSpeciesJobEvent.getDataSourceName(), new AsyncCallback() { @@ -1445,6 +1439,12 @@ public class SearchController { streamPagingLoader.setActiveFilterObject(null); // isActiveFilterOnResult = false; activeFilterOnResult(false); + + //ADDED 17/07/2013 + searchBorderLayoutPanel.getSpeciesCenterPanel().getResultRowPanel().getClassicGridView().unmask(); + searchBorderLayoutPanel.getSpeciesWestPanel().unmask(); + searchBorderLayoutPanel.getSpeciesWestPanel().resetFilters(); + searchBorderLayoutPanel.getSpeciesNorthPanel().enableSearch(); } private void switchView(SpeciesCapability resultType) { @@ -1467,7 +1467,7 @@ public class SearchController { @Override public void onFailure(Throwable caught) { - Info.display("Error", "An error occurred during the search"); + Info.display("Error during the search", caught.getMessage()); Log.error("Error during the search", caught.getMessage()); reset(); streamPagingLoader.resetFilters(); @@ -1521,7 +1521,7 @@ public class SearchController { public void onFailure(Throwable caught) { doActiveMaskLoadingGridAndButtonSearch(false); - Info.display("Error", "An error occurred during the search"); + Info.display("Error during the search", caught.getMessage()); Log.error("Error during the search", caught.getMessage()); reset(); streamPagingLoader.resetFilters(); @@ -1546,7 +1546,7 @@ public class SearchController { } - protected void search(SearchType type, String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, Date fromDate, Date toDate, List listDataSources, String groupRank, SpeciesCapability resultType) + protected void search(SearchType type, String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, Date fromDate, Date toDate, List listDataSources, String groupRank, SpeciesCapability resultType, List listDataSourcesForSynonyms, List listDataSourcesForUnfold) { Log.trace("IN SEARCH.............."); @@ -1556,7 +1556,7 @@ public class SearchController { Coordinate upperCoordinate = (upperBoundLatitude!=null && upperBoundLongitude!=null)?new Coordinate(upperBoundLatitude.floatValue(), upperBoundLongitude.floatValue()):null; Coordinate lowerCoordinate = (lowerBoundLatitude!=null && lowerBoundLongitude!=null)?new Coordinate(lowerBoundLatitude.floatValue(), lowerBoundLongitude.floatValue()):null; - SearchFilters filters = new SearchFilters(upperCoordinate, lowerCoordinate, fromDate, toDate, listDataSources, groupRank, resultType); + SearchFilters filters = new SearchFilters(upperCoordinate, lowerCoordinate, fromDate, toDate, listDataSources, groupRank, resultType, listDataSourcesForSynonyms, listDataSourcesForUnfold); Log.trace("**********result type: " + filters.getResultType()); diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesResultFilterAccordionPanel.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesResultFilterAccordionPanel.java index 2cae4e7..a6c08a8 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesResultFilterAccordionPanel.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesResultFilterAccordionPanel.java @@ -37,5 +37,9 @@ public class SpeciesResultFilterAccordionPanel extends ContentPanel { add(panel); } } + + public void resetFilters(){ + resultFilterManager.resetFilters(); + } } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesSearchFormPanel.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesSearchFormPanel.java index 411271e..274deda 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesSearchFormPanel.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/SpeciesSearchFormPanel.java @@ -12,9 +12,9 @@ import org.gcube.portlets.user.speciesdiscovery.client.event.SearchCompleteEvent import org.gcube.portlets.user.speciesdiscovery.client.event.SearchEvent; import org.gcube.portlets.user.speciesdiscovery.client.event.SearchStartedEvent; import org.gcube.portlets.user.speciesdiscovery.client.event.SearchStartedEventHandler; +import org.gcube.portlets.user.speciesdiscovery.client.event.SearchTypeSelectedEvent; import org.gcube.portlets.user.speciesdiscovery.client.filterresult.ResultFilterPanelManager; import org.gcube.portlets.user.speciesdiscovery.client.resources.Resources; -import org.gcube.portlets.user.speciesdiscovery.client.switchbutton.SwitchButton; import org.gcube.portlets.user.speciesdiscovery.client.window.HelpQueryWindow; import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceModel; import org.gcube.portlets.user.speciesdiscovery.shared.SearchType; @@ -125,6 +125,16 @@ public class SpeciesSearchFormPanel extends ContentPanel { searchType.setEditable(false); searchType.setTriggerAction(TriggerAction.ALL); searchType.setSimpleValue(ConstantsSpeciesDiscovery.SCIENTIFIC_NAME); + + + searchType.addSelectionChangedListener(new SelectionChangedListener>() { + + @Override + public void selectionChanged(SelectionChangedEvent> se) { + + eventBus.fireEvent(new SearchTypeSelectedEvent(getSearchType(se.getSelectedItem().getValue()))); + } + }); } @@ -161,10 +171,24 @@ public class SpeciesSearchFormPanel extends ContentPanel { return SpeciesCapability.NAMESMAPPING; else if(value.compareTo(SpeciesCapability.SYNONYMS.getName())==0) return SpeciesCapability.SYNONYMS; + else if(value.compareTo(SpeciesCapability.UNFOLD.getName())==0) + return SpeciesCapability.UNFOLD; return SpeciesCapability.UNKNOWN; } + private SearchType getSearchType(String value){ + + if(value.compareTo(ConstantsSpeciesDiscovery.SCIENTIFIC_NAME)==0) + return SearchType.BY_SCIENTIFIC_NAME; + else if(value.compareTo(ConstantsSpeciesDiscovery.COMMON_NAME)==0) + return SearchType.BY_COMMON_NAME; + + return SearchType.BY_SCIENTIFIC_NAME; + + + } + public void switchSearchType(SEARCHTYPE searchType){ currentSearchType = searchType; @@ -325,9 +349,6 @@ public class SpeciesSearchFormPanel extends ContentPanel { checkValidateOccurrences.setStyleAttribute("margin-right", "10px"); - -// simpleSearchPanel.add(checkValidateOccurrences); - buttSimpleSearch = new Button("Search"); buttSimpleSearch.addClickHandler(new ClickHandler() { @@ -362,101 +383,10 @@ public class SpeciesSearchFormPanel extends ContentPanel { textExpand.setStyleAttribute("margin-left", "5px"); textExpand.setStyleAttribute("margin-right", "5px"); -// SwitchButton button = new SwitchButton(false); - - -// hpPanelExpand.add(textExpand); -// hpPanelExpand.add(new SimpleComboBox()); -// hpPanelExpand.add(button); - vtPanel.add(hpPanel); -// vtPanel.add(hpPanelExpand); - + simpleSearchPanel.add(vtPanel); - - /* - - simpleSearchPanel.setSpacing(5); - simpleSearchPanel.setVerticalAlign(VerticalAlignment.MIDDLE); - Text textSearch = new Text("Search:"); - textSearch.setStyleAttribute("margin-left", "5px"); - textSearch.setStyleAttribute("margin-right", "5px"); - - simpleSearchPanel.add(textSearch); - simpleSearchPanel.add(searchTypeResults); - - Text textBy = new Text("By:"); - textBy.setStyleAttribute("margin-left", "5px"); - textBy.setStyleAttribute("margin-right", "5px"); - simpleSearchPanel.add(textBy); - - simpleSearchPanel.add(searchType); - - Text textTerm = new Text("Term:"); - textTerm.setStyleAttribute("margin-left", "10px"); - textTerm.setStyleAttribute("margin-right", "5px"); - simpleSearchPanel.add(textTerm); - - searchField = new TextField(); - searchField.setStyleAttribute("margin-left", "0px"); - searchField.setStyleAttribute("margin-right", "10px"); - searchField.setEmptyText(EXSEARCH); - searchField.setWidth(300); - searchField.addKeyListener(new KeyListener(){ - @Override - public void componentKeyPress(ComponentEvent event) { - if (event.getKeyCode()==KeyCodes.KEY_ENTER) search(); - } - - }); - - simpleSearchPanel.add(searchField); - - - checkValidateOccurrences.setBoxLabel("validate occurrences"); - checkValidateOccurrences.setValueAttribute("validate occurrences"); - checkValidateOccurrences.setStyleAttribute("margin-right", "10px"); - -// simpleSearchPanel.add(checkValidateOccurrences); - - buttSimpleSearch = new Button("Search"); - - buttSimpleSearch.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - search(); - - } - }); - - buttSimpleSearch.setStyleName("wizardButton"); - simpleSearchPanel.add(buttSimpleSearch); - - buttSimpleExample = new Button("Example", new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - searchField.setValue("Carcharodon carcharias"); - - } - }); - - buttSimpleExample.setStyleName("wizardButton"); - simpleSearchPanel.add(buttSimpleExample); - - Text textExpand = new Text("Expand:"); - textExpand.setStyleAttribute("margin-left", "10px"); - textExpand.setStyleAttribute("margin-right", "5px"); - - SwitchButton button = new SwitchButton(false); - - simpleSearchPanel.add(textExpand); - simpleSearchPanel.add(button); - -*/ - } public boolean getValueCheckValidateOcccurrences(){ @@ -570,7 +500,9 @@ public class SpeciesSearchFormPanel extends ContentPanel { advSearchPanelsManager.getToDate().getValue(), advSearchPanelsManager.getCheckedDataSources(), ResultFilterPanelManager.getInstance().getGroupByRank(), - advSearchPanelsManager.getCurrentSelectedCapability()); + advSearchPanelsManager.getCurrentSelectedCapability(), + advSearchPanelsManager.getCheckedDataSourceForSynonyms(), + advSearchPanelsManager.getCheckedDataSourceForUnfold()); // }else // search(searchTerm,null,null,null,null,null,null); } @@ -578,7 +510,7 @@ public class SpeciesSearchFormPanel extends ContentPanel { } - protected void search(String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, Date fromDate, Date toDate, List listDataSources, String groupRank, SpeciesCapability resultType) + protected void search(String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, Date fromDate, Date toDate, List listDataSources, String groupRank, SpeciesCapability resultType, List listDataSourceForSynonyms, List listDataSourceForUnfold) { mask("Searching..."); //searchButton.setEnabled(false); @@ -587,7 +519,7 @@ public class SpeciesSearchFormPanel extends ContentPanel { if (ConstantsSpeciesDiscovery.SCIENTIFIC_NAME.equals(searchType.getSimpleValue())) type = SearchType.BY_SCIENTIFIC_NAME; if (ConstantsSpeciesDiscovery.COMMON_NAME.equals(searchType.getSimpleValue())) type = SearchType.BY_COMMON_NAME; - SearchEvent event = new SearchEvent(type, searchTerm, upperBoundLongitude, upperBoundLatitude, lowerBoundLongitude, lowerBoundLatitude, fromDate, toDate, listDataSources, groupRank, resultType); + SearchEvent event = new SearchEvent(type, searchTerm, upperBoundLongitude, upperBoundLatitude, lowerBoundLongitude, lowerBoundLatitude, fromDate, toDate, listDataSources, groupRank, resultType, listDataSourceForSynonyms, listDataSourceForUnfold); eventBus.fireEvent(event); } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelEnum.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelEnum.java index fb5df5c..b89e1b8 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelEnum.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelEnum.java @@ -10,7 +10,8 @@ public enum AdvancedSearchPanelEnum { DATE("Filter by Date"), TYPE("Type"), REGION("Region"), - SYNONYMS("Synonyms From"), + SYNONYMS("Synonyms From"), + UNFOLD("Unfold With"), DATASOURCE("Filter by Source"), CLASSIFICATION("Classification"); diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelManager.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelManager.java index a39be8d..a9b2886 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelManager.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/AdvancedSearchPanelManager.java @@ -6,12 +6,14 @@ import java.util.List; import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceCapability; import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceModel; +import org.gcube.portlets.user.speciesdiscovery.shared.SearchType; import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.form.DateField; import com.extjs.gxt.ui.client.widget.form.NumberField; import com.extjs.gxt.ui.client.widget.layout.CardLayout; +import com.netflix.astyanax.recipes.uniqueness.DedicatedMultiRowUniquenessConstraint; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it @@ -30,6 +32,7 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced private HashMap listDataSources; private SpeciesCapability currentSelectedCapability; private SynonymsFilter synonymsFilter; + private UnfoldFilter unfoldFilter; public static synchronized AdvancedSearchPanelManager getInstance() { if (instance == null) @@ -44,6 +47,7 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced regionFilter = new RegionFilter(); dataSourceFilter = new DataSourceFilter(); synonymsFilter = new SynonymsFilter(); + unfoldFilter = new UnfoldFilter(); // classificationFilter = new ClassificationFilter(); init(); @@ -52,6 +56,7 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced listAdvacedPanels.add(boundsFilter.getName()); listAdvacedPanels.add(dateFilter.getName()); listAdvacedPanels.add(synonymsFilter.getName()); + listAdvacedPanels.add(unfoldFilter.getName()); // listAdvacedPanels.add(regionFilter.getName()); } @@ -71,6 +76,7 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced add(dataSourceFilter.getPanel()); add(regionFilter.getPanel()); add(synonymsFilter.getPanel()); + add(unfoldFilter.getPanel()); cardLayout.setActiveItem(boundsFilter.getPanel()); } @@ -91,6 +97,8 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced cardLayout.setActiveItem(regionFilter.getPanel()); else if(name.equals(AdvancedSearchPanelEnum.SYNONYMS.getLabel())) cardLayout.setActiveItem(synonymsFilter.getPanel()); + else if(name.equals(AdvancedSearchPanelEnum.UNFOLD.getLabel())) + cardLayout.setActiveItem(unfoldFilter.getPanel()); // else if(name.equals(AdvancedSearchPanelEnum.CLASSIFICATION.getLabel())) // cardLayout.setActiveItem(classificationFilter.getPanel()); } @@ -127,8 +135,8 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced public void loadDataSource(List result) { dataSourceFilter.loadDataSource(result); - synonymsFilter.loadDataSource(result); + unfoldFilter.loadDataSource(result); listDataSources = new HashMap(); @@ -160,9 +168,10 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced dateFilter.addAvailablePlugInfo(dsm, SpeciesCapability.TODATE); else if(capabilityEnum.equals(SpeciesCapability.UPPERBOUND)) boundsFilter.addAvailablePlugInfo(dsm, SpeciesCapability.UPPERBOUND); - else if(capabilityEnum.equals(SpeciesCapability.SYNONYMS)) - boundsFilter.addAvailablePlugInfo(dsm, SpeciesCapability.SYNONYMS); - +// else if(capabilityEnum.equals(SpeciesCapability.SYNONYMS)) +// synonymsFilter.addAvailablePlugInfo(dsm, SpeciesCapability.SYNONYMS); +// else if(capabilityEnum.equals(SpeciesCapability.UNFOLD)) +// unfoldFilter.addAvailablePlugInfo(dsm, SpeciesCapability.UNFOLD); } } } @@ -184,6 +193,8 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced dateFilter.getPanel().setVisible(bool); dataSourceFilter.getPanel().setVisible(bool); regionFilter.getPanel().setVisible(bool); + synonymsFilter.getPanel().setVisible(bool); + unfoldFilter.getPanel().setVisible(bool); // classificationFilter.getPanel().setVisible(bool); } @@ -200,6 +211,11 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced } + public List getCheckedDataSourceForSynonyms() { + return synonymsFilter.getCheckedGroupList(); + + } + public HashMap findDataSourceByCapability(SpeciesCapability capability) { if(capability.getName().compareTo(SpeciesCapability.RESULTITEM.getName())==0){ @@ -229,9 +245,24 @@ public class AdvancedSearchPanelManager extends ContentPanel implements Advanced public SpeciesCapability getCurrentSelectedCapability() { return currentSelectedCapability; } + + public List getCheckedDataSourceForUnfold() { + return unfoldFilter.getCheckedGroupList(); + } -// public String getGroupByRank(){ -// return classificationFilter.getSelectedRank(); -// } + public void disableFilterForSearchType(SearchType type){ + + switch (type) { + + case BY_COMMON_NAME: + unfoldFilter.activeChecks(false); + break; + + default: + unfoldFilter.activeChecks(true); + break; + } + + } } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/SynonymsFilter.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/SynonymsFilter.java index 533b8d2..adfaa5c 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/SynonymsFilter.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/SynonymsFilter.java @@ -63,6 +63,7 @@ public class SynonymsFilter implements AdvancedSearchPanelInterface{ hp.add(text); hp.add(checkGroup); + synonymsFilterPanel.add(hp); } @@ -107,13 +108,13 @@ public class SynonymsFilter implements AdvancedSearchPanelInterface{ for (DataSourceCapability dsc : dsm.getListCapabilities()) { - System.out.println("\tData Source capability name: " + dsc.getCapability().getName()); +// System.out.println("\tData Source capability name: " + dsc.getCapability().getName()); if(dsc.getCapability().getName().compareTo(SpeciesCapability.SYNONYMS.getName())==0){ - check = createCheckBox(dsm, SpeciesCapability.RESULTITEM.getName()); + check = createCheckBox(dsm, dsc.getCapability().getName()); - System.out.println("\t\t added check " + dsm.getName() + " to checkGroupOccurences " + dsc.getCapability().getName()); + System.out.println("added check " + dsm.getName() + " for SYNONYMS"); checkGroup.add(check); @@ -135,5 +136,32 @@ public class SynonymsFilter implements AdvancedSearchPanelInterface{ } + /** + * + * @return + */ + public List getCheckedGroupList() { + + List listDS = new ArrayList(); + + List values = new ArrayList(); + + if(checkGroup.getValues().size()>0) + values = checkGroup.getValues(); + + for (CheckBox checkBox : values) { + if (checkBox.isEnabled()) + listDS.add(new DataSourceModel(checkBox.getValueAttribute(), checkBox.getValueAttribute())); + } + + if(listDS.size()==0) + return null; + + +// System.out.println("print synonyms ds : "+listDS); + + return listDS; + } + } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/UnfoldFilter.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/UnfoldFilter.java new file mode 100644 index 0000000..a5fd7b1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/advancedsearch/UnfoldFilter.java @@ -0,0 +1,173 @@ +/** + * + */ +package org.gcube.portlets.user.speciesdiscovery.client.advancedsearch; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceCapability; +import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceModel; +import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability; + +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; +import com.extjs.gxt.ui.client.widget.Text; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.CheckBox; +import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig; + +/** + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @Jul 16, 2013 + * + */ +public class UnfoldFilter implements AdvancedSearchPanelInterface{ + + private Button btnResetAllFilters = new Button("Reset Filters"); + private ContentPanel unfoldFilterPanel = new ContentPanel(); + private CheckBoxGroup checkGroup = new CheckBoxGroup(); + + @Override + public ContentPanel getPanel() { + btnResetAllFilters.setStyleName("button-hyperlink"); + return unfoldFilterPanel; + } + + public UnfoldFilter(){ + init(); + } + /** + * + */ + private void init() { + unfoldFilterPanel.setHeaderVisible(false); + unfoldFilterPanel.setBodyBorder(false); + unfoldFilterPanel.setLayout(new FitLayout()); + + unfoldFilterPanel.setStyleAttribute("marginLeft", "10px"); + unfoldFilterPanel.setStyleAttribute("marginRight", "10px"); + unfoldFilterPanel.setStyleAttribute("padding", "5px"); + + Text text = new Text("Unfold with: "); + text.setStyleAttribute("margin-left", "5px"); + text.setStyleAttribute("margin-right", "5px"); + + HorizontalPanel hp = new HorizontalPanel(); + hp.setVerticalAlign(VerticalAlignment.MIDDLE); + hp.add(text); + hp.add(checkGroup); + + unfoldFilterPanel.add(hp); + + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.speciesdiscovery.client.advancedsearch.AdvancedSearchPanelInterface#getName() + */ + @Override + public String getName() { + return AdvancedSearchPanelEnum.UNFOLD.getLabel(); + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.speciesdiscovery.client.advancedsearch.AdvancedSearchPanelInterface#resetAdvancedFields() + */ + @Override + public void resetAdvancedFields() { + + } + + @Override + public ArrayList getAvailablePlugIn() { + return null; + } + + private static Comparator COMPARATOR = new Comparator() { + // This is where the sorting happens. + public int compare(DataSourceModel o1, DataSourceModel o2) { + return o1.getName().compareToIgnoreCase(o2.getName()); + } + }; + + public void loadDataSource(List result) { + + Collections.sort(result, COMPARATOR); + + if(result!=null){ + + for(DataSourceModel dsm: result){ + + System.out.println("Data Source name " + dsm.getName()); + CheckBox check = null; + + for (DataSourceCapability dsc : dsm.getListCapabilities()) { + + System.out.println("\tData Source capability name: " + dsc.getCapability().getName()); + + if(dsc.getCapability().getName().compareTo(SpeciesCapability.UNFOLD.getName())==0){ + + check = createCheckBox(dsm, dsc.getCapability().getName()); + + System.out.println("added check " + dsm.getName() + " for UNFOLD"); + + checkGroup.add(check); + + } + + } + } + } + } + + private CheckBox createCheckBox(DataSourceModel dsm, String property) { + + CheckBox check = new CheckBox(); + check.setBoxLabel(dsm.getName()); + check.setValueAttribute(dsm.getName()); + check.setData("capability", dsm); + check.setToolTip(new ToolTipConfig(dsm.getDescription())); + return check; + + } + + /** + * + * @return + */ + public List getCheckedGroupList() { + + List listDS = new ArrayList(); + + List values = new ArrayList(); + + if(checkGroup.getValues().size()>0) + values = checkGroup.getValues(); + + for (CheckBox checkBox : values) { + if (checkBox.isEnabled()) + listDS.add(new DataSourceModel(checkBox.getValueAttribute(), checkBox.getValueAttribute())); + } + + if(listDS.size()==0) + return null; + + +// System.out.println("print unfold ds : "+listDS); + + return listDS; + } + + public void activeChecks(boolean bool){ + + checkGroup.reset(); + checkGroup.setEnabled(bool); + } + + +} diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchEvent.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchEvent.java index 5c34c4c..25db54f 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchEvent.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchEvent.java @@ -15,7 +15,9 @@ import org.gcube.portlets.user.speciesdiscovery.shared.filter.ResultFilter; import com.google.gwt.event.shared.GwtEvent; /** - * @author "Federico De Faveri defaveri@isti.cnr.it" + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @Jul 17, 2013 * */ public class SearchEvent extends GwtEvent { @@ -45,10 +47,27 @@ public class SearchEvent extends GwtEvent { private SpeciesCapability resultType; private String query; private ResultFilter activeFilterOnResult; - private Map> mapTermsSearched; //USED FORM SEARCH BY QUERY - TEXT QUERY - + private Map> mapTermsSearched; //USED FOR SEARCH BY QUERY - TEXT QUERY + + private List listDataSourcesForSynonyms; //USED FOR EXTEND + private List listDataSourcesForUnfold; //USED FOR UNFOLD + /** + * + * @param type + * @param searchTerm + * @param upperBoundLongitude + * @param upperBoundLatitude + * @param lowerBoundLongitude + * @param lowerBoundLatitude + * @param fromDate + * @param toDate + * @param listDataSources + * @param rank + * @param resultType + * @param listDataSourcesForSynonyms + */ public SearchEvent(SearchType type, String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, - Date fromDate, Date toDate, List listDataSources, String rank, SpeciesCapability resultType) { + Date fromDate, Date toDate, List listDataSources, String rank, SpeciesCapability resultType,List listDataSourcesForSynonyms, List listDataSourcesForUnfold) { this.type = type; this.searchTerm = searchTerm; this.upperBoundLongitude = upperBoundLongitude; @@ -60,6 +79,8 @@ public class SearchEvent extends GwtEvent { this.lstDataSources = listDataSources; this.groupByRank = rank; this.resultType = resultType; + this.listDataSourcesForSynonyms = listDataSourcesForSynonyms; + this.listDataSourcesForUnfold = listDataSourcesForUnfold; } public SearchEvent(SearchType byQuery, String query) { @@ -124,32 +145,6 @@ public class SearchEvent extends GwtEvent { return toDate; } - /** - * {@inheritDoc} - */ - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SearchEvent [searchTerm="); - builder.append(searchTerm); - builder.append(", type="); - builder.append(type); - builder.append(", upperBoundLongitude="); - builder.append(upperBoundLongitude); - builder.append(", upperBoundLatitude="); - builder.append(upperBoundLatitude); - builder.append(", lowerBoundLongitude="); - builder.append(lowerBoundLongitude); - builder.append(", lowerBoundLatitude="); - builder.append(lowerBoundLatitude); - builder.append(", fromDate="); - builder.append(fromDate); - builder.append(", toDate="); - builder.append(toDate); - builder.append("]"); - return builder.toString(); - } - public List getLstDataSources() { return lstDataSources; } @@ -227,4 +222,62 @@ public class SearchEvent extends GwtEvent { public void setMapTermsSearched(Map> mapTermsSearched) { this.mapTermsSearched = mapTermsSearched; } + + public List getListDataSourcesForSynonyms() { + return listDataSourcesForSynonyms; + } + + public void setListDataSourcesForSynonyms( + List listDataSourcesForSynonyms) { + this.listDataSourcesForSynonyms = listDataSourcesForSynonyms; + } + + + public List getListDataSourcesForUnfold() { + return listDataSourcesForUnfold; + } + + public void setListDataSourcesForUnfold( + List listDataSourcesForUnfold) { + this.listDataSourcesForUnfold = listDataSourcesForUnfold; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("SearchEvent [searchTerm="); + builder.append(searchTerm); + builder.append(", type="); + builder.append(type); + builder.append(", upperBoundLongitude="); + builder.append(upperBoundLongitude); + builder.append(", upperBoundLatitude="); + builder.append(upperBoundLatitude); + builder.append(", lowerBoundLongitude="); + builder.append(lowerBoundLongitude); + builder.append(", lowerBoundLatitude="); + builder.append(lowerBoundLatitude); + builder.append(", fromDate="); + builder.append(fromDate); + builder.append(", toDate="); + builder.append(toDate); + builder.append(", lstDataSources="); + builder.append(lstDataSources); + builder.append(", groupByRank="); + builder.append(groupByRank); + builder.append(", resultType="); + builder.append(resultType); + builder.append(", query="); + builder.append(query); + builder.append(", activeFilterOnResult="); + builder.append(activeFilterOnResult); + builder.append(", mapTermsSearched="); + builder.append(mapTermsSearched); + builder.append(", listDataSourcesForSynonyms="); + builder.append(listDataSourcesForSynonyms); + builder.append(", listDataSourcesForUnfold="); + builder.append(listDataSourcesForUnfold); + builder.append("]"); + return builder.toString(); + } } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEvent.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEvent.java new file mode 100644 index 0000000..0655829 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEvent.java @@ -0,0 +1,42 @@ +/** + * + */ +package org.gcube.portlets.user.speciesdiscovery.client.event; + +import org.gcube.portlets.user.speciesdiscovery.shared.SearchType; + +import com.google.gwt.event.shared.GwtEvent; + + +/** + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * + */ +public class SearchTypeSelectedEvent extends GwtEvent { + + public static final GwtEvent.Type TYPE = new Type(); + private SearchType searchType; + + + public SearchTypeSelectedEvent(SearchType searchType) { + this.searchType = searchType; + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(SearchTypeSelectedEventHandler handler) { + handler.onSearchTypeSelected(this); + } + + /** + * @return + */ + public SearchType getType() { + return searchType; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEventHandler.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEventHandler.java new file mode 100644 index 0000000..caa8de7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/event/SearchTypeSelectedEventHandler.java @@ -0,0 +1,22 @@ +/** + * + */ +package org.gcube.portlets.user.speciesdiscovery.client.event; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @Jul 17, 2013 + * + */ +public interface SearchTypeSelectedEventHandler extends EventHandler { + + /** + * @param searchTypeSelectedEvent + */ + public void onSearchTypeSelected(SearchTypeSelectedEvent searchTypeSelectedEvent); + +} diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/filterresult/ResultFilterPanelManager.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/filterresult/ResultFilterPanelManager.java index 77b7f5b..47bafff 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/filterresult/ResultFilterPanelManager.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/filterresult/ResultFilterPanelManager.java @@ -263,7 +263,7 @@ public class ResultFilterPanelManager{ } - private void resetFilters() { + public void resetFilters() { dataSourceFilter.reset(); dataProviderFilter.reset(); classificationFilter.reset(); diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/job/taxonomy/TaxonomyGridJob.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/job/taxonomy/TaxonomyGridJob.java index 1486d35..8ec344b 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/job/taxonomy/TaxonomyGridJob.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/job/taxonomy/TaxonomyGridJob.java @@ -15,7 +15,6 @@ import org.gcube.portlets.user.speciesdiscovery.client.resources.Resources; import org.gcube.portlets.user.speciesdiscovery.client.window.MessageBoxConfirm; import org.gcube.portlets.user.speciesdiscovery.shared.DataSource; import org.gcube.portlets.user.speciesdiscovery.shared.DownloadState; -import org.gcube.portlets.user.speciesdiscovery.shared.JobOccurrencesModel; import org.gcube.portlets.user.speciesdiscovery.shared.JobTaxonomyModel; import org.gcube.portlets.user.speciesdiscovery.shared.SearchResultType; diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/switchbutton/SwitchButton.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/switchbutton/SwitchButton.java index 08bb937..ea5c51e 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/switchbutton/SwitchButton.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/switchbutton/SwitchButton.java @@ -11,16 +11,11 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.query.client.Function; import com.google.gwt.query.client.css.CSS; import com.google.gwt.query.client.css.Length; -import com.google.gwt.query.client.css.RGBColor; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Timer; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.HasName; diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/QueryBuilder.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/QueryBuilder.java index 94be1f5..e95139e 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/QueryBuilder.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/QueryBuilder.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import org.apache.log4j.Logger; import org.gcube.dataaccess.spql.ParserException; import org.gcube.dataaccess.spql.SPQLQueryParser; import org.gcube.portlets.user.speciesdiscovery.shared.Coordinate; @@ -16,8 +17,10 @@ public class QueryBuilder { protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy"); - + protected static Logger logger = Logger.getLogger(QueryBuilder.class); + public static String buildQuery(String searchTerm, SearchType searchType, SearchFilters searchFilters){ + logger.trace("query building..."); StringBuilder query = new StringBuilder(); @@ -37,6 +40,21 @@ public class QueryBuilder { if (searchType == SearchType.BY_COMMON_NAME) query.append("RESOLVE "); + + //ADDED BY FRANCESCO 17/07/2013 + //ADD EXPAND sources; + if (searchFilters.getListDataSourcesForSynonyms()!=null && searchFilters.getListDataSourcesForSynonyms().size()>0) { + query.append("EXPAND WITH "); + + Iterator dsIterator = searchFilters.getListDataSourcesForSynonyms().iterator(); + while(dsIterator.hasNext()) { + DataSourceModel ds = dsIterator.next(); + query.append(ds.getId()); + if (dsIterator.hasNext()) query.append(", "); + else query.append(" "); + } + } + //ADD data sources; if (searchFilters.getListDataSources()!=null && searchFilters.getListDataSources().size()>0) { query.append("IN "); @@ -49,7 +67,6 @@ public class QueryBuilder { else query.append(" "); } } - List conditions = createFilterProperties(searchFilters); @@ -80,7 +97,10 @@ public class QueryBuilder { String builtQuery = query.toString(); - System.out.println("built query: "+builtQuery); +// System.out.println("built query: "+builtQuery); + + logger.trace("built query: "+builtQuery); + //FIXME TEST try { SPQLQueryParser.parse(builtQuery); diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/SpeciesService.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/SpeciesService.java index b1e90f4..9aa0eda 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/SpeciesService.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/service/SpeciesService.java @@ -27,6 +27,7 @@ import org.gcube.data.spd.client.proxies.Occurrence; 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.exceptions.InvalidQueryException; import org.gcube.data.spd.model.products.OccurrencePoint; import org.gcube.data.spd.model.products.ResultElement; import org.gcube.data.spd.model.products.TaxonomyItem; @@ -155,9 +156,14 @@ public class SpeciesService { // System.out.println("call species service search..."); Stream stream = call.search(query); return new StreamIterator(stream); + }catch (InvalidQueryException e1) { + String error = "Error calling the Species Service: query syntax is not valid"; + logger.error("Error calling the Species Service: " + e1.getMessage(), e1); + throw new SearchServiceException(error); } catch (Exception e) { + String error = "Error calling the Species Service: an error occurred contacting the service"; logger.error("Error calling the Species Service: " + e.getMessage(), e); - throw new SearchServiceException("Error calling the Species Service: "+e.getMessage()); + throw new SearchServiceException(error); } } @@ -276,7 +282,8 @@ public class SpeciesService { case Classification: return SpeciesCapability.TAXONOMYITEM; case NamesMapping: return SpeciesCapability.NAMESMAPPING; case Occurrence: return SpeciesCapability.RESULTITEM; - case Synonims: return SpeciesCapability.SYNONYMS; + case Expansion: return SpeciesCapability.SYNONYMS; + case Unfold: return SpeciesCapability.UNFOLD; default: return SpeciesCapability.UNKNOWN; } } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SearchFilters.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SearchFilters.java index 5a11e17..04509d6 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SearchFilters.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SearchFilters.java @@ -25,19 +25,27 @@ public class SearchFilters implements Serializable { private List listDataSources; private String classificationGroupByRank; private SpeciesCapability resultType; + + private List listDataSourcesForSynonyms; + + private List listDataSourcesForUnfold; public SearchFilters(){}; + /** + * * @param upperBound * @param lowerBound * @param fromDate * @param toDate - * @param listDataSources - * @param classificationGroupRank + * @param listDataSources + * @param classificationGroupRank + * @param resultType + * @param listDataSourcesForSynonyms */ - public SearchFilters(Coordinate upperBound, Coordinate lowerBound, Date fromDate, Date toDate, List listDataSources, String classificationGroupRank, SpeciesCapability resultType) { + public SearchFilters(Coordinate upperBound, Coordinate lowerBound, Date fromDate, Date toDate, List listDataSources, String classificationGroupRank, SpeciesCapability resultType, List listDataSourcesForSynonyms, List listDataSourcesForUnfold) { this.upperBound = upperBound; this.lowerBound = lowerBound; this.fromDate = fromDate; @@ -45,6 +53,8 @@ public class SearchFilters implements Serializable { this.listDataSources = listDataSources; this.classificationGroupByRank = classificationGroupRank; this.resultType = resultType; + this.listDataSourcesForSynonyms = listDataSourcesForSynonyms; + this.listDataSourcesForUnfold = listDataSourcesForUnfold; } /** @@ -124,6 +134,27 @@ public class SearchFilters implements Serializable { this.listDataSources = listDataSources; } + + public List getListDataSourcesForSynonyms() { + return listDataSourcesForSynonyms; + } + + + public void setListDataSourcesForSynonyms( + List listDataSourcesForSynonyms) { + this.listDataSourcesForSynonyms = listDataSourcesForSynonyms; + } + + public List getListDataSourcesForUnfold() { + return listDataSourcesForUnfold; + } + + public void setListDataSourcesForUnfold( + List listDataSourcesForUnfold) { + this.listDataSourcesForUnfold = listDataSourcesForUnfold; + } + + @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -141,7 +172,12 @@ public class SearchFilters implements Serializable { builder.append(classificationGroupByRank); builder.append(", resultType="); builder.append(resultType); + builder.append(", listDataSourcesForSynonyms="); + builder.append(listDataSourcesForSynonyms); + builder.append(", listDataSourcesForUnfold="); + builder.append(listDataSourcesForUnfold); builder.append("]"); return builder.toString(); } + } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SpeciesCapability.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SpeciesCapability.java index 879745c..83a99e4 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SpeciesCapability.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/SpeciesCapability.java @@ -16,6 +16,7 @@ public enum SpeciesCapability { SYNONYMS("SYNONYMS", "Synonyms"), + UNFOLD("UNFOLD", "Unfold"), NAMESMAPPING("NAMESMAPPING", "Names Mapping"), UNKNOWN("UNKNOWN", "unknown"); diff --git a/src/main/resources/org/gcube/portlets/user/speciesdiscovery/SpeciesDiscovery.gwt.xml b/src/main/resources/org/gcube/portlets/user/speciesdiscovery/SpeciesDiscovery.gwt.xml index 7e74ba2..b9ef89f 100644 --- a/src/main/resources/org/gcube/portlets/user/speciesdiscovery/SpeciesDiscovery.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/speciesdiscovery/SpeciesDiscovery.gwt.xml @@ -1,21 +1,24 @@ - + - - - + + + - - - + + - - - - - + + + + + + + + diff --git a/src/main/webapp/switchbutton.css b/src/main/webapp/switchbutton.css new file mode 100644 index 0000000..876f825 --- /dev/null +++ b/src/main/webapp/switchbutton.css @@ -0,0 +1,54 @@ +/* Switch Button */ + +.switch-button-label { + float: left; + + font-size: 10pt; + cursor: pointer; +}} + +.switch-button-label.off { + color: #adadad; +} + +.switch-button-label.on { + color: #0088CC; +} + +.switch-button-background { + float: left; + position: relative; + + background: #ccc; + border: 1px solid #aaa; + + margin: 1px 4px; + + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + + cursor: pointer; + + width: 25px; + height: 11px; + + outline-style: none; /* this avoid the tabindex property to sorround this element with a (maybe dotted) rectangle*/ +} + +.switch-button-button { + position: absolute; + + width: 12px; + height: 11px; + + left: 12px; + top : -1px; + + background: #FAFAFA; + border: 1px solid #aaa; + + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} \ No newline at end of file