diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java b/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java index 56835bfa0b7..109c066295d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java @@ -21,6 +21,7 @@ import edu.harvard.iq.dataverse.dataset.DatasetThumbnail; import edu.harvard.iq.dataverse.dataset.DatasetUtil; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; +import edu.harvard.iq.dataverse.util.BundleUtil; import edu.harvard.iq.dataverse.util.FileUtil; import edu.harvard.iq.dataverse.util.SystemConfig; import java.io.File; @@ -428,9 +429,9 @@ public void search(boolean onlyDataRelatedToMe) { } // populate preview counts: https://redmine.hmdc.harvard.edu/issues/3560 - previewCountbyType.put("dataverses", 0L); - previewCountbyType.put("datasets", 0L); - previewCountbyType.put("files", 0L); + previewCountbyType.put(BundleUtil.getStringFromBundle("dataverses"), 0L); + previewCountbyType.put(BundleUtil.getStringFromBundle("datasets"), 0L); + previewCountbyType.put(BundleUtil.getStringFromBundle("files"), 0L); if (solrQueryResponseAllTypes != null) { for (FacetCategory facetCategory : solrQueryResponseAllTypes.getTypeFacetCategories()) { for (FacetLabel facetLabel : facetCategory.getFacetLabel()) { @@ -765,15 +766,15 @@ public void setTypeFilterQuery(String typeFilterQuery) { } public Long getFacetCountDatasets() { - return findFacetCountByType("datasets"); + return findFacetCountByType(BundleUtil.getStringFromBundle("datasets")); } public Long getFacetCountDataverses() { - return findFacetCountByType("dataverses"); + return findFacetCountByType(BundleUtil.getStringFromBundle("dataverses")); } public Long getFacetCountFiles() { - return findFacetCountByType("files"); + return findFacetCountByType(BundleUtil.getStringFromBundle("files")); } public String getSearchFieldRelevance() { diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java index e038956b6ef..099176ce036 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java @@ -30,6 +30,7 @@ import java.util.ListIterator; import java.util.Map; import java.util.Set; +import java.util.MissingResourceException; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.EJB; @@ -98,7 +99,7 @@ public class SearchServiceBean { public SolrQueryResponse search(DataverseRequest dataverseRequest, List dataverses, String query, List filterQueries, String sortField, String sortOrder, int paginationStart, boolean onlyDatatRelatedToMe, int numResultsPerPage) throws SearchException { return search(dataverseRequest, dataverses, query, filterQueries, sortField, sortOrder, paginationStart, onlyDatatRelatedToMe, numResultsPerPage, true); } - + /** * Import note: "onlyDatatRelatedToMe" relies on filterQueries for providing * access to Private Data for the correct user @@ -116,7 +117,7 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, List datasetFields = datasetFieldService.findAllOrderedById(); @@ -221,7 +222,7 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, List facetLabelList = new ArrayList<>(); int numMetadataSources = 0; + String metadataBlockName = ""; + String datasetFieldName = ""; + /** + * To find the metadata block name to which the facetField belongs to + * ===facetField: authorName_ss metadatablockname : citation + * ===facetField: dvCategory metadatablockname : "" + */ + for (DatasetFieldType datasetField : datasetFields) { + String solrFieldNameForDataset = datasetField.getSolrField().getNameFacetable(); + if (solrFieldNameForDataset != null && facetField.getName().equals(solrFieldNameForDataset)) { + metadataBlockName = datasetField.getMetadataBlock().getName() ; + datasetFieldName = datasetField.getName(); + break; + } + } + + for (FacetField.Count facetFieldCount : facetField.getValues()) { /** * @todo we do want to show the count for each facet */ // logger.info("field: " + facetField.getName() + " " + facetFieldCount.getName() + " (" + facetFieldCount.getCount() + ")"); + String localefriendlyName = null; if (facetFieldCount.getCount() > 0) { - FacetLabel facetLabel = new FacetLabel(facetFieldCount.getName(), facetFieldCount.getCount()); + if(metadataBlockName.length() > 0 ) { + localefriendlyName = getLocaleTitle(datasetFieldName,facetFieldCount.getName(), metadataBlockName); + } else { + try { + localefriendlyName = BundleUtil.getStringFromPropertyFile(facetFieldCount.getName(), "Bundle"); + } catch (Exception e) { + localefriendlyName = facetFieldCount.getName(); + } + } + FacetLabel facetLabel = new FacetLabel(localefriendlyName, facetFieldCount.getCount()); // quote field facets facetLabel.setFilterQuery(facetField.getName() + ":\"" + facetFieldCount.getName() + "\""); facetLabelList.add(facetLabel); if (facetField.getName().equals(SearchFields.PUBLICATION_STATUS)) { - if (facetLabel.getName().equals(IndexServiceBean.getUNPUBLISHED_STRING())) { + if (facetFieldCount.getName().equals(IndexServiceBean.getUNPUBLISHED_STRING())) { unpublishedAvailable = true; - } else if (facetLabel.getName().equals(IndexServiceBean.getDRAFT_STRING())) { + } else if (facetFieldCount.getName().equals(IndexServiceBean.getDRAFT_STRING())) { draftsAvailable = true; - } else if (facetLabel.getName().equals(IndexServiceBean.getDEACCESSIONED_STRING())) { + } else if (facetFieldCount.getName().equals(IndexServiceBean.getDEACCESSIONED_STRING())) { deaccessionedAvailable = true; } } @@ -652,14 +680,20 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, List 0) { + facetCategory.setFriendlyName(friendlyName); + } else { + String[] parts = name.split("_"); + StringBuilder stringBuilder = new StringBuilder(); + for (String part : parts) { + stringBuilder.append(getCapitalizedName(part.toLowerCase()) + " "); + } + String friendlyNameWithTrailingSpace = stringBuilder.toString(); + friendlyName = friendlyNameWithTrailingSpace.replaceAll(" $", ""); + facetCategory.setFriendlyName(friendlyName); } - String friendlyNameWithTrailingSpace = stringBuilder.toString(); - String friendlyName = friendlyNameWithTrailingSpace.replaceAll(" $", ""); - facetCategory.setFriendlyName(friendlyName); + // logger.info("adding <<<" + staticSearchField + ":" + friendlyName + ">>>"); staticSolrFieldFriendlyNamesBySolrField.put(staticSearchField, friendlyName); // stop examining the declared/static fields in the SearchFields object. we found a match @@ -747,6 +781,31 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, List0) { + return output; + } + else + return title; + } + + public String getCapitalizedName(String name) { return Character.toUpperCase(name.charAt(0)) + name.substring(1); } @@ -782,7 +841,7 @@ private String getPermissionFilterQuery(DataverseRequest dataverseRequest, SolrQ } // ---------------------------------------------------- - // (1) Is this a GuestUser? + // (1) Is this a GuestUser? // Yes, see if GuestUser is part of any groups such as IP Groups. // ---------------------------------------------------- if (user instanceof GuestUser) { @@ -820,9 +879,9 @@ private String getPermissionFilterQuery(DataverseRequest dataverseRequest, SolrQ solrQuery.addFacetField(SearchFields.PUBLICATION_STATUS); // ---------------------------------------------------- - // (3) Is this a Super User? + // (3) Is this a Super User? // Yes, give back everything - // ---------------------------------------------------- + // ---------------------------------------------------- if (au.isSuperuser()) { // dangerous because this user will be able to see // EVERYTHING in Solr with no regard to permissions! @@ -834,7 +893,7 @@ private String getPermissionFilterQuery(DataverseRequest dataverseRequest, SolrQ // (4) User is logged in AND onlyDatatRelatedToMe == true // Yes, give back everything -> the settings will be in // the filterqueries given to search - // ---------------------------------------------------- + // ---------------------------------------------------- if (onlyDatatRelatedToMe == true) { if (systemConfig.myDataDoesNotUsePermissionDocs()) { logger.fine("old 4.2 behavior: MyData is not using Solr permission docs"); @@ -907,3 +966,4 @@ private String getPermissionFilterQuery(DataverseRequest dataverseRequest, SolrQ } } + diff --git a/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java index 93c2d3bd4b2..6b6f5f02a6b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java @@ -23,7 +23,7 @@ public static String getStringFromBundle(String key) { } public static String getStringFromBundle(String key, List arguments) { - ResourceBundle bundle = getResourceBundle(defaultBundleFile , null); + ResourceBundle bundle = getResourceBundle(defaultBundleFile ); if (bundle == null) { return null; } diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index 6ef42104d53..1a616650f59 100755 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -2357,3 +2357,44 @@ rtabfileparser.ioexception.parser2=R Tab File Parser: varQnty=0 in the dataset m #ConfigureFragmentBean.java configurefragmentbean.apiTokenGenerated=API Token will be generated. Please keep it secure as you would do with a password. + +#FacetCategory - staticSearchFields +staticSearchFields.dvCategory=Dataverse Category +staticSearchFields.metadataSource=Metadata Source +staticSearchFields.publicationDate=Publication Year +staticSearchFields.fileTypeGroupFacet=File Type +staticSearchFields.dvObjectType=Type +staticSearchFields.fileTag=File Tag +staticSearchFields.fileAccess=Access +staticSearchFields.publicationStatus=Publication Status + +#dataverse category - Facet Labels +Researcher=Researcher +Research\u0020Project=Research Project +Journal=Journal +Organization\u0020or\u0020Institution=Organization or Institution +Teaching\u0020Course=Teaching Course +Research\u0020Group=Research Group +Laboratory=Laboratory +Department=Department +Uncategorized=Uncategorized + +#filetype - Facet Labels +Document=Document +Text=Text +Tabular\u0020Data=Tabular Data +Data=Data +FITS=FITS +Shape=Shape +Image=Image +Network\u0020Data=Network Data +Unknown=Unknown +Documentation=Documentation +Code=Code +Archive=Archive +Audio=Audio +Video=Video + +#access - Facet Labels +Public=Public +Restricted=Restricted