From e523587e4261ba793cd149c659e1b85cd147b998 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 20 May 2013 16:50:24 +0000 Subject: [PATCH] fixed: pom, counter on grid, check/unchek all rows, taxonomy job git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/speciesdiscovery@75163 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/com.google.gdt.eclipse.core.prefs | 2 +- .settings/org.eclipse.wst.common.component | 3 - pom.xml | 2 +- .../client/SearchController.java | 28 +- .../client/cluster/TabItemForTaxonomyRow.java | 4 +- .../client/rpc/TaxonomySearchService.java | 9 +- .../rpc/TaxonomySearchServiceAsync.java | 8 +- .../util/stream/StreamPagingLoader.java | 12 +- .../server/TaxonomySearchServiceImpl.java | 86 ++++- .../server/persistence/ResultRowBuffer.java | 39 ++- .../server/persistence/TaxonomyRowBuffer.java | 36 +++ .../session/SelectableFetchingBuffer.java | 2 + .../speciesdiscovery/shared/TaxonomyJob.java | 6 +- ...TestResultItemRetrievingAndConverting.java | 296 ++++++++++++++++++ .../speciesdiscovery/client/ListPlugins.java | 25 +- 15 files changed, 529 insertions(+), 29 deletions(-) create mode 100644 src/test/java/org/gcube/portlets/user/speciesdiscovery/client/H2TestResultItemRetrievingAndConverting.java diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index c907586..6ace3ff 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/fedy2/workspace/org.gcube.portlets.user.species-discovery/target/species-discovery-3.1.0-SNAPSHOT +lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/speciesdiscovery(trunk)/target/species-discovery-3.1.0-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index b2a2885..4a1dd25 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -3,9 +3,6 @@ - - uses - diff --git a/pom.xml b/pom.xml index 6294ee0..9779605 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,7 @@ spd-model 1.0.0-SNAPSHOT - provided + 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 1f0cb98..7c71d0e 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 @@ -87,6 +87,7 @@ import org.gcube.portlets.user.speciesdiscovery.shared.SearchFilters; import org.gcube.portlets.user.speciesdiscovery.shared.SearchResultType; import org.gcube.portlets.user.speciesdiscovery.shared.SearchType; import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability; +import org.gcube.portlets.user.speciesdiscovery.shared.TaxonomyRow; import org.gcube.portlets.user.speciesdiscovery.shared.filter.ResultFilter; import org.gcube.portlets.user.workspace.lighttree.client.ItemType; import org.gcube.portlets.user.workspace.lighttree.client.event.DataLoadEvent; @@ -384,8 +385,30 @@ public class SearchController { case BYCHILDREN: - SpeciesDiscovery.taxonomySearchService.createTaxonomyJobByChildren(createSpeciesJobEvent.getTaxonomy(), createSpeciesJobEvent.getDataSourceName(), new AsyncCallback() { - +// 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() { + @Override public void onFailure(Throwable caught) { Info.display("Error", "Sorry, An error occurred on create job. Please try again later"); @@ -403,6 +426,7 @@ public class SearchController { } }); + break; case BYIDS: diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/cluster/TabItemForTaxonomyRow.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/cluster/TabItemForTaxonomyRow.java index 6a270d3..d8b7add 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/cluster/TabItemForTaxonomyRow.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/cluster/TabItemForTaxonomyRow.java @@ -265,10 +265,10 @@ public class TabItemForTaxonomyRow { @Override public void onClick(ClickEvent event) { - System.out.println("parent index: "+parentIndex + " size "+currentTaxonomy.getParents().size()); +// System.out.println("parent index: "+parentIndex + " size "+currentTaxonomy.getParents().size()); if(parentIndex >=0 && parentIndex<=currentTaxonomy.getParents().size()){ - System.out.println("set parent true"); +// System.out.println("set parent true"); taxon.setParent(currentTaxonomy.getParents().subList(parentIndex, currentTaxonomy.getParents().size())); } else if(parentIndex == -1){ //items loaded from get children - the current Taxonomy item is the parent diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchService.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchService.java index c0aba8c..f85a8a3 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchService.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchService.java @@ -105,8 +105,8 @@ public interface TaxonomySearchService extends RemoteService { public List getListTaxonomyJobs() throws Exception; - public JobTaxonomyModel createTaxonomyJobByChildren(TaxonomyRow taxonomy, - String dataSourceName) throws Exception; +// public JobTaxonomyModel createTaxonomyJobByChildren(TaxonomyRow taxonomy, +// String dataSourceName) throws Exception; public boolean cancelTaxonomyJob(String jobIdentifier) throws Exception; @@ -154,4 +154,9 @@ public interface TaxonomySearchService extends RemoteService { public JobTaxonomyModel createTaxonomyJobByIds(String search, List dataSources) throws Exception; + + public JobTaxonomyModel createTaxonomyJobByChildren(String taxonomyServiceId, + String taxonomyName, String taxonomyRank, String dataSourceName) + throws Exception; + } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchServiceAsync.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchServiceAsync.java index 5c894be..104117d 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/rpc/TaxonomySearchServiceAsync.java @@ -95,8 +95,8 @@ public interface TaxonomySearchServiceAsync { void getListTaxonomyJobs(AsyncCallback> callback); - void createTaxonomyJobByChildren(TaxonomyRow taxonomy, String dataSourceName, - AsyncCallback callback); +// void createTaxonomyJobByChildren(TaxonomyRow taxonomy, String dataSourceName, +// AsyncCallback callback); void cancelTaxonomyJob(String jobIdentifier, AsyncCallback callback); @@ -137,5 +137,9 @@ public interface TaxonomySearchServiceAsync { AsyncCallback> callback); void createTaxonomyJobByIds(String search, List dataSources, AsyncCallback callback); + + void createTaxonomyJobByChildren(String taxonomyServiceId, + String taxonomyName, String taxonomyRank, String dataSourceName, + AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/util/stream/StreamPagingLoader.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/util/stream/StreamPagingLoader.java index 38a24ec..74c65f6 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/util/stream/StreamPagingLoader.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/util/stream/StreamPagingLoader.java @@ -233,8 +233,16 @@ public class StreamPagingLoader { protected void streamComplete() { - streamSizePoller.cancel(); - fireStreamLoadingComplete(); + Timer t = new Timer() { + + @Override + public void run() { + streamSizePoller.cancel(); + fireStreamLoadingComplete(); + } + }; + + t.schedule(500); } public void setPage(int page) diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/TaxonomySearchServiceImpl.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/TaxonomySearchServiceImpl.java index 05bf0e4..2358333 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/TaxonomySearchServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/TaxonomySearchServiceImpl.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -584,6 +585,24 @@ public class TaxonomySearchServiceImpl extends RemoteServiceServlet implements T if(bufferSize>=MAX_BUFFERING_ELEMENTS){ logger.trace("getSearchStatus MAX_BUFFERING_ELEMENTS is reached - stop search"); stopSearchWithoutRemove(); + + + //CALCULATE NEW BUFFER SIZE AFTER FETCHING IS CLOSED + try { +// int sleepingTime = 500; +// logger.trace("sleeping "+sleepingTime+" ms for translate last objets arrived into buffer"); +// Thread.sleep(sleepingTime); //SLEEPING 0,5 sec, for translating objects that are inserting in buffer and calculate new size of buffer +// logger.trace("sleep termined - search status alive"); + bufferSize = isActiveFilterOnResult?((FilterableFetchingBuffer) searchSession.getBuffer()).getFilteredListSize():searchSession.getBufferSize(); + + } catch (SQLException e) { + logger.trace("getSearchStatus bufferSize error : "+e.getMessage(), e); + throw new SearchServiceException("An error occured on server in searching status, please retry"); + } catch (Exception e) { + logger.trace("getSearchStatus bufferSize error : "+e.getMessage(), e); + throw new SearchServiceException("An error occured on server in searching status, please retry"); + } + status.setResultEOF(true); status.setSize(bufferSize); status.setIsMaxSize(true); @@ -702,10 +721,21 @@ public class TaxonomySearchServiceImpl extends RemoteServiceServlet implements T data = buffer.getFilteredList(activeFiltersObject); if(data!=null){ - for (FetchingElement fetchingElement : data) - updateRowSelection(fetchingElement.getId(), selection); + + List ids = new ArrayList(); + for (FetchingElement fetchingElement : data){ + ids.add(fetchingElement.getId()+""); + } + SelectableFetchingBuffer bufferCompleted = (SelectableFetchingBuffer) searchSession.getBuffer(); + bufferCompleted.updateAllSelectionByIds(selection, ids); size = data.size(); + + //OLD CODE +// for (FetchingElement fetchingElement : data) +// updateRowSelection(fetchingElement.getId(), selection); +// +// size = data.size(); } } @@ -1361,10 +1391,20 @@ public class TaxonomySearchServiceImpl extends RemoteServiceServlet implements T } + + /** + * + * @param taxonomyServiceId + * @param taxonomyName + * @param taxonomyRank + * @param dataSourceName + * @return + * @throws Exception + */ @Override - public JobTaxonomyModel createTaxonomyJobByChildren(TaxonomyRow taxonomy, String dataSourceName) throws Exception { - - logger.trace("Create job for taxonomy id: " + taxonomy.getServiceId()); + public JobTaxonomyModel createTaxonomyJobByChildren(String taxonomyServiceId, String taxonomyName, String taxonomyRank, String dataSourceName) throws Exception { + //FIXED 20/05/2013 + logger.trace("Create job for taxonomy id: " + taxonomyServiceId); // System.out.println("Create job for taxonomy id: " + taxonomy.getServiceId()); JobTaxonomyModel jobSpeciesModel = null; @@ -1373,15 +1413,15 @@ public class TaxonomySearchServiceImpl extends RemoteServiceServlet implements T SpeciesService taxonomyService = getSpeciesService(); - String speciesJobId = taxonomyService.createTaxonomyJobForDWCAByChildren(taxonomy.getServiceId()); + String speciesJobId = taxonomyService.createTaxonomyJobForDWCAByChildren(taxonomyServiceId); long startTime = Calendar.getInstance().getTimeInMillis(); //STORE INTO DAO - TaxonomyJob speciesJob = new TaxonomyJob(speciesJobId, DownloadState.PENDING.toString(), SAVE_CHILDREN_OF+taxonomy.getName(), taxonomy.getName(), dataSourceName, taxonomy.getRank(), startTime, 0, taxonomy.getServiceId()); + TaxonomyJob speciesJob = new TaxonomyJob(speciesJobId, DownloadState.PENDING.toString(), SAVE_CHILDREN_OF+taxonomyName, taxonomyName, dataSourceName, taxonomyRank, startTime, 0, taxonomyServiceId); taxonomyJobDao.insert(speciesJob); - jobSpeciesModel = new JobTaxonomyModel(speciesJob.getId(), speciesJob.getDescriptiveName(), DownloadState.PENDING, null, taxonomy.getName(), dataSourceName, taxonomy.getRank()); + jobSpeciesModel = new JobTaxonomyModel(speciesJob.getId(), speciesJob.getDescriptiveName(), DownloadState.PENDING, null, taxonomyName, dataSourceName, taxonomyRank); Date start = DateUtil.millisecondsToDate(speciesJob.getStartTime()); // jobSpeciesModel.setStartTime(DateUtil.dateToDateFormatString(start)); @@ -1391,6 +1431,36 @@ public class TaxonomySearchServiceImpl extends RemoteServiceServlet implements T return jobSpeciesModel; } +// @Override +// public JobTaxonomyModel createTaxonomyJobByChildren(TaxonomyRow taxonomy, String dataSourceName) throws Exception { +// +// logger.trace("Create job for taxonomy id: " + taxonomy.getServiceId()); +//// System.out.println("Create job for taxonomy id: " + taxonomy.getServiceId()); +// +// JobTaxonomyModel jobSpeciesModel = null; +// +// TaxonomyJobPersistence taxonomyJobDao = DaoSession.getTaxonomyJobDAO(getASLSession()); +// +// SpeciesService taxonomyService = getSpeciesService(); +// +// String speciesJobId = taxonomyService.createTaxonomyJobForDWCAByChildren(taxonomy.getServiceId()); +// +// long startTime = Calendar.getInstance().getTimeInMillis(); +// +// //STORE INTO DAO +// TaxonomyJob speciesJob = new TaxonomyJob(speciesJobId, DownloadState.PENDING.toString(), SAVE_CHILDREN_OF+taxonomy.getName(), taxonomy.getName(), dataSourceName, taxonomy.getRank(), startTime, 0, taxonomy.getServiceId()); +// taxonomyJobDao.insert(speciesJob); +// +// jobSpeciesModel = new JobTaxonomyModel(speciesJob.getId(), speciesJob.getDescriptiveName(), DownloadState.PENDING, null, taxonomy.getName(), dataSourceName, taxonomy.getRank()); +// +// Date start = DateUtil.millisecondsToDate(speciesJob.getStartTime()); +//// jobSpeciesModel.setStartTime(DateUtil.dateToDateFormatString(start)); +// jobSpeciesModel.setStartTime(start); +// jobSpeciesModel.setEndTime(null); +// +// return jobSpeciesModel; +// } + @Override public JobTaxonomyModel createTaxonomyJobByIds(String search, List dataSources) throws Exception { diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/ResultRowBuffer.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/ResultRowBuffer.java index 9b1319d..c75ad43 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/ResultRowBuffer.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/ResultRowBuffer.java @@ -10,6 +10,7 @@ import java.util.List; import javax.persistence.EntityManager; import javax.persistence.Query; +import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; @@ -20,12 +21,16 @@ import org.gcube.portlets.user.speciesdiscovery.server.session.FilterableFetchin import org.gcube.portlets.user.speciesdiscovery.shared.MainTaxonomicRankEnum; import org.gcube.portlets.user.speciesdiscovery.shared.ResultRow; import org.gcube.portlets.user.speciesdiscovery.shared.Taxon; +import org.gcube.portlets.user.speciesdiscovery.shared.TaxonomyRow; import org.gcube.portlets.user.speciesdiscovery.shared.filter.FilterCriteria; import org.gcube.portlets.user.speciesdiscovery.shared.filter.ResultFilter; import org.gcube.portlets.user.speciesdiscovery.shared.util.NormalizeString; + /** - * @author "Federico De Faveri defaveri@isti.cnr.it" + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @May 20, 2013 * */ public class ResultRowBuffer extends AbstractSelectableDaoBuffer implements FilterableFetchingBuffer { @@ -239,4 +244,36 @@ public class ResultRowBuffer extends AbstractSelectableDaoBuffer impl } + /* (non-Javadoc) + * @see org.gcube.portlets.user.speciesdiscovery.server.session.SelectableFetchingBuffer#updateAllSelectionByIds(boolean, java.util.List) + */ + @Override + public void updateAllSelectionByIds(boolean selection, List listIds) + throws Exception { + + EntityManager em = dao.createNewManager(); + + String queryString = "UPDATE ResultRow t SET " + + ResultRow.SELECTED + " = "+ selection +" where " + + ResultRow.ID_FIELD+" IN :inclList"; + + try { + em.getTransaction().begin(); + + TypedQuery query = em.createQuery(queryString, ResultRow.class); + + query.setParameter("inclList", listIds); + + int updateCount = query.executeUpdate(); + + logger.trace("Updated " + updateCount + " item"); + + em.getTransaction().commit(); + } finally { + if (em.getTransaction().isActive()) + em.getTransaction().rollback(); + em.close(); + } + } + } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/TaxonomyRowBuffer.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/TaxonomyRowBuffer.java index 7369707..3941f51 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/TaxonomyRowBuffer.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/persistence/TaxonomyRowBuffer.java @@ -10,6 +10,7 @@ import java.util.List; import javax.persistence.EntityManager; import javax.persistence.Query; +import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; @@ -26,6 +27,7 @@ import org.gcube.portlets.user.speciesdiscovery.shared.util.NormalizeString; /** * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @May 20, 2013 * */ public class TaxonomyRowBuffer extends AbstractSelectableDaoBuffer implements FilterableFetchingBuffer { @@ -212,5 +214,39 @@ public class TaxonomyRowBuffer extends AbstractSelectableDaoBuffer } } + /* (non-Javadoc) + * @see org.gcube.portlets.user.speciesdiscovery.server.session.SelectableFetchingBuffer#updateAllSelectionByIds(boolean, java.util.List) + */ + @Override + public void updateAllSelectionByIds(boolean selection, List listIds) throws Exception { + + EntityManager em = dao.createNewManager(); + + //TODO generalize? + String queryString = "UPDATE TaxonomyRow SET " + + ResultRow.SELECTED + " = "+ selection + +" where "+TaxonomyRow.IS_PARENT +"=false AND " + +ResultRow.ID_FIELD+" IN :inclList"; + + try { + em.getTransaction().begin(); + + TypedQuery query = em.createQuery(queryString, TaxonomyRow.class); + + query.setParameter("inclList", listIds); + + int updateCount = query.executeUpdate(); + + logger.trace("Updated " + updateCount + " item"); + + em.getTransaction().commit(); + } finally { + if (em.getTransaction().isActive()) + em.getTransaction().rollback(); + em.close(); + } + + } + } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/SelectableFetchingBuffer.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/SelectableFetchingBuffer.java index 318bf6c..240d5de 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/SelectableFetchingBuffer.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/SelectableFetchingBuffer.java @@ -19,6 +19,8 @@ public interface SelectableFetchingBuffer extends F public void updateAllSelection(boolean selection) throws Exception; + public void updateAllSelectionByIds(boolean selection, List listIds) throws Exception; + public int sizeSelected() throws Exception; } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/TaxonomyJob.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/TaxonomyJob.java index 547276e..71cff0c 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/TaxonomyJob.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/shared/TaxonomyJob.java @@ -15,10 +15,8 @@ import javax.persistence.Id; @Entity public class TaxonomyJob implements Serializable { - /** - * - */ - private static final long serialVersionUID = -8525420257121366179L; + + private static final long serialVersionUID = -38475548097321689L; public final static String ID_FIELD = "jobId"; public final static String NAME = "descriptiveName"; diff --git a/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/H2TestResultItemRetrievingAndConverting.java b/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/H2TestResultItemRetrievingAndConverting.java new file mode 100644 index 0000000..c3817c8 --- /dev/null +++ b/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/H2TestResultItemRetrievingAndConverting.java @@ -0,0 +1,296 @@ +/** + * + */ +package org.gcube.portlets.user.speciesdiscovery.client; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Query; +import javax.persistence.TypedQuery; + +import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.common.core.scope.GCUBEScope; +import org.gcube.data.spd.model.products.ResultElement; +import org.gcube.data.spd.model.products.TaxonomyItem; +import org.gcube.data.streams.Stream; +import org.gcube.portlets.user.speciesdiscovery.server.persistence.DaoSession; +import org.gcube.portlets.user.speciesdiscovery.server.service.SpeciesService; +import org.gcube.portlets.user.speciesdiscovery.server.service.TaxonomyItemConverter; +import org.gcube.portlets.user.speciesdiscovery.shared.ResultRow; +import org.gcube.portlets.user.speciesdiscovery.shared.TaxonomyRow; + +/** + * @author "Federico De Faveri defaveri@isti.cnr.it" + * + */ +public class H2TestResultItemRetrievingAndConverting { + + private static final int MAX_ELEMENTS = 20; + static String sessionID = "1"; + static String user = "test.user"; + static GCUBEScope scope; + static ASLSession session; + + + public static void main(String[] args) throws Exception + { + + session = SessionManager.getInstance().getASLSession(sessionID, user); + scope = GCUBEScope.getScope("/gcube/devsec"); + session.setScope(scope.toString()); + + EntityManagerFactory factory = DaoSession.getEntityManagerFactory(session); + + EntityManager em = factory.createEntityManager(); +// ScopeProvider.instance.set("/gcube/devsec"); + + int removed; + String tableName; + List list; + +// String tableName = "ParentTaxonomyRow"; +// +// List list = getList(em, tableName); +// +// System.out.println("list "+tableName+ "size is "+list.size()); + +// em = factory.createEntityManager(); +// removed = removeAll(em, tableName); +// +// System.out.println("removed " +removed); + + tableName = "ResultRow"; + + em = factory.createEntityManager(); + list = getList(em, tableName); + + System.out.println("list "+tableName+ "size is "+list.size()); + + +// removeAll(em, "ParentTaxonomyRow"); +// em = factory.createEntityManager(); +// removed = removeAll(em, tableName); + +// System.out.println("removed " +removed); + + +// SpeciesService taxonomyService = new SpeciesService(scope, session); + + + long start = System.currentTimeMillis(); + long last = System.currentTimeMillis(); + int counter = 0; + +// CloseableIterator input = taxonomyService.searchByQuery("'sarda sarda' as ScientificName return Taxon");// searchByFilters(searchTerm, SearchTypeEnum.BY_SCIENTIFIC_NAME, searchFilters); +// SearchFilters searchFilters = new SearchFilters(); +// searchFilters.setResultType(SpeciesCapability.TAXONOMYITEM); +// SearchResultType resultType = QueryUtil.getResultType(searchFilters); +// CloseableIterator output = IteratorChainBuilder.buildChain(input, resultType, session); +// +// FetchingSession fetchingSession = (FetchingSession) FetchingSessionUtil.createFetchingSession(output, resultType, session); +// + +// +// while(!fetchingSession.isComplete()) { +// +// System.out.println((System.currentTimeMillis()-start)+" buffer size "+fetchingSession.getBufferSize()); +// last = System.currentTimeMillis(); +// +// Thread.sleep(1000); +// +// System.out.println("COMPLETE: "+(System.currentTimeMillis()-last)+"ms from last item to close the stream; buffer size "+fetchingSession.getBufferSize()); +// +// System.out.println(fetchingSession.getBufferSize() + " results in "+(System.currentTimeMillis()-start)+"ms total; "+(last-start)+"ms from first to last result"); +// } + + +// System.out.println("Start time: "+last); +// +// while(output.hasNext()) { +// +// System.out.println((System.currentTimeMillis()-last)+"ms "+output.next()); +// last = System.currentTimeMillis(); +// counter++; +// } + +// Stream input = taxonomyService.searchByQuery2("'sarda sarda' as ScientificName return Taxon"); +// //from ResultItem to ResultRow +//// List listElements = new ArrayList(); +//// List listRR = new ArrayList(); +//// ResultItemConverter converter = new ResultItemConverter(session); +// +// TaxonomyItemConverter converter = new TaxonomyItemConverter(session); +// List listRR = new ArrayList(); +// List listElements = new ArrayList(); +// +// while(input.hasNext()) { +// +//// ResultItem result = (ResultItem) input.next(); +// +// TaxonomyItem result = (TaxonomyItem) input.next(); +// +// System.out.println((System.currentTimeMillis()-last)+" ms to recover "+result); +// last = System.currentTimeMillis(); +// counter++; +// +// listElements.add(result); +// +// listRR.add(converter.convert(result)); +// +// System.out.println((System.currentTimeMillis()-last)+" ms to convert "+result); +// +// if(MAX_ELEMENTS == counter) +// break; +// } +// +// input.close(); +// +// counter = 0; +// start = System.currentTimeMillis(); +// last = System.currentTimeMillis(); + + +// +//// for (ResultRow resultRow : listRR) { +// for (TaxonomyRow resultRow : listRR) { +// +// System.out.println(counter + ")" + (System.currentTimeMillis()-last)+" ms "+resultRow); +// last = System.currentTimeMillis(); +// +// +// try{ +// +//// storeTaxonParents(resultRow); +//// storeCommonName(listElements.get(counter), resultRow); +// storeRR(resultRow); +// +// }catch (Exception e) { +// e.printStackTrace(); +// } +// +// if(counter==50) +// break; +// +// counter++; +// } + +// System.out.println("BUFFER SIZE: " + fetchingSession.getBuffer().getList().size()); + + +// System.out.println("COMPLETE: "+(System.currentTimeMillis()-last)+" ms from last item to close the stream"); +// +// System.out.println(counter + " results in "+(System.currentTimeMillis()-start)+" ms total; "+(last-start)+" ms from first to last result"); + + + + List listServiceId = new ArrayList(); + + int i = 0; + for (ResultRow rr : list) { + + listServiceId.add(rr.getIdToString()); + + System.out.println(++i +")listserviceId "+listServiceId); + + if(i==30) + break; + } + + + + em = factory.createEntityManager(); + String queryStr = "select t from ResultRow t where t."+ResultRow.ID_FIELD+" IN :inclList"; + + TypedQuery query2 = em.createQuery(queryStr, ResultRow.class); + + query2.setParameter("inclList", listServiceId); + +// query.setFirstResult(2); +// +// query.setMaxResults(5); + + start = System.currentTimeMillis(); + List results = query2.getResultList(); +// + i = 0; + for (ResultRow r: results) { + System.out.println("ResultRow query "+ ++i +") " + r); + } + +// ExpressionBuilder expression = new ExpressionBuilder(Taxon.class); +// expression.get(Taxon.RANK).equalsIgnoreCase("class"); +// +// +// CriteriaBuilder cb = em.getCriteriaBuilder(); +// +// // Query for a List of objects. +//// CriteriaQuery cq = cb.createQuery(); +// +// CriteriaQuery cq = cb.createQuery(Taxon.class); +// +// Root e = cq.from(Taxon.class); +// +// cq.where(cb.equal(e.get(Taxon.RANK), "class")); +// +// query = em.createQuery(cq); +// +// List result = query.getResultList(); +// +// for (Taxon taxon : result) { +// System.out.println("taxon: " + taxon); +// } + + } + + protected static void storeRR(TaxonomyRow row){ + EntityManagerFactory factory = DaoSession.getEntityManagerFactory(session); + + EntityManager em = factory.createEntityManager(); + + em.getTransaction().begin(); + + em.persist(row); + + em.getTransaction().commit(); + + em.close(); + } + + public static int removeAll(EntityManager em, String tableName) { + + + int removed = 0; + try { + + em.getTransaction().begin(); + removed = em.createQuery("DELETE FROM "+tableName).executeUpdate(); + em.getTransaction().commit(); + System.out.println("DELETE FROM "+tableName + " " + removed +" items"); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + em.close(); + } + + return removed; + } + + public static List getList(EntityManager em, String tableName) { + + List listResultRow = new ArrayList(); + try { + Query query = em.createQuery("select t from "+tableName+" t"); + + listResultRow = query.getResultList(); + } finally { + em.close(); + } + return listResultRow; + } + +} diff --git a/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/ListPlugins.java b/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/ListPlugins.java index 94bb1b7..8e756db 100644 --- a/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/ListPlugins.java +++ b/src/test/java/org/gcube/portlets/user/speciesdiscovery/client/ListPlugins.java @@ -3,14 +3,20 @@ */ package org.gcube.portlets.user.speciesdiscovery.client; +import static org.gcube.data.spd.client.plugins.AbstractPlugin.classification; +import static org.gcube.data.spd.client.plugins.AbstractPlugin.executor; import static org.gcube.data.spd.client.plugins.AbstractPlugin.manager; +import static org.gcube.data.spd.client.plugins.AbstractPlugin.occurrence; import java.net.URI; import java.util.List; import java.util.concurrent.TimeUnit; import org.gcube.common.scope.api.ScopeProvider; +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.PluginDescription; /** @@ -19,6 +25,12 @@ import org.gcube.data.spd.model.PluginDescription; */ public class ListPlugins { + + protected static Manager call; + protected static Occurrence occurrencesCall; + protected static Classification classificationCall; + protected static Executor executorCall; + /** * @param args */ @@ -26,7 +38,18 @@ public class ListPlugins { String scope = "/gcube/devsec"; ScopeProvider.instance.set(scope); - Manager call = manager().at(URI.create("http://node24.d.d4science.research-infrastructures.eu:9000")).withTimeout(3, TimeUnit.MINUTES).build(); + +// this.call = manager().at( URI.create("http://node24.d.d4science.research-infrastructures.eu:9000")).withTimeout(3, TimeUnit.MINUTES).build(); +// this.occurrencesCall = occurrences().at( URI.create("http://node24.d.d4science.research-infrastructures.eu:9000")).withTimeout(3, TimeUnit.MINUTES).build(); +// this.classificationCall = classification().at( URI.create("http://node24.d.d4science.research-infrastructures.eu:9000")).withTimeout(3, TimeUnit.MINUTES).build(); + + + call = manager().withTimeout(3, TimeUnit.MINUTES).build(); +// executorCall = executor().withTimeout(3, TimeUnit.MINUTES).build(); +// occurrencesCall = occurrence().withTimeout(3, TimeUnit.MINUTES).build(); +// classificationCall = classification().withTimeout(3, TimeUnit.MINUTES).build(); + +// call = manager().at(URI.create("http://node24.d.d4science.research-infrastructures.eu:9000")).withTimeout(3, TimeUnit.MINUTES).build(); //Manager call = manager().withTimeout(3, TimeUnit.MINUTES).build(); List plugins = call.getPluginsDescription();