Skip to content
This repository was archived by the owner on Jan 15, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
public abstract class AbstractSocialSearchConnector extends SearchServiceConnector {

private static final Log LOG = ExoLogger.getLogger(AbstractSocialSearchConnector.class);


protected String language;
protected final class Range {

public final int offset;
Expand All @@ -57,8 +58,9 @@ public AbstractSocialSearchConnector(InitParams initParams) {
}

@Override
public final Collection<SearchResult> search(SearchContext context, String query, Collection<String> sites, int offset, int limit, String sort, String order) {
public final Collection<SearchResult> search(SearchContext context, String query, Collection<String> sites, int offset, int limit, String sort, String order, String language) {

setLanguage(language);
//
SortBy sortBy = null;
if ("relevancy".equalsIgnoreCase(sort)) {
Expand Down Expand Up @@ -218,4 +220,12 @@ protected long getRelevancy(Row row) {
}

protected abstract Collection<SearchResult> search(SearchContext context, String query, Range range, Sorting sort);

public String getLanguage() {
return language;
}

public void setLanguage(String language) {
this.language = language;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
Expand All @@ -16,6 +18,7 @@
import org.exoplatform.portal.mop.SiteType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.resources.ResourceBundleService;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.social.core.chromattic.entity.SpaceEntity;
import org.exoplatform.social.core.service.LinkProvider;
Expand Down Expand Up @@ -59,7 +62,7 @@ public Collection<SearchResult> search(SearchContext context, String query, Rang


ListAccess<Space> la = spaceService.getUnifiedSearchSpacesWithListAccess(getCurrentUserName(), filter);

//
try {
Space[] spaces = la.load(range.offset, range.limit);
Expand All @@ -73,20 +76,32 @@ public Collection<SearchResult> search(SearchContext context, String query, Rang

//
if (Space.HIDDEN.equals(s.getVisibility()) && !spaceService.isMember(s, getCurrentUserName())) continue;


ResourceBundle resourceBundle = null;
ResourceBundleService resourceBundleService = (ResourceBundleService) ExoContainerContext.getCurrentContainer().getComponentInstance(ResourceBundleService.class);
if(resourceBundleService != null){
String[] sharedResourceBundleNames = resourceBundleService.getSharedResourceBundleNames();
for (String resourceBundleName : sharedResourceBundleNames) {
if(resourceBundleName.equals("locale.social.Core")){
resourceBundle = resourceBundleService.getResourceBundle(resourceBundleName, Locale.forLanguageTag(getLanguage()));
break;
}
}
}

//
StringBuilder sb = new StringBuilder(s.getDisplayName());
sb.append(String.format(" - %s Member(s)", s.getMembers().length));
sb.append(String.format(" - %s " + (resourceBundle != null ? resourceBundle.getString("SpaceSearchConnector.members") : "Member(s)"), s.getMembers().length));
if (Space.OPEN.equals(s.getRegistration())) {
sb.append(" - Free to Join");
sb.append(" - " + (resourceBundle != null ? resourceBundle.getString("SpaceSearchConnector.free_to_join") : "Free to Join"));
} else if (Space.VALIDATION.equals(s.getRegistration())) {
sb.append(" - Register");
sb.append(" - " + (resourceBundle != null ? resourceBundle.getString("SpaceSearchConnector.register") : "Register"));
} else if (Space.CLOSE.equals(s.getRegistration())) {
sb.append(" - Invitation Only");
sb.append(" - " + (resourceBundle != null ? resourceBundle.getString("SpaceSearchConnector.invitation_only") : "Invitation Only"));
} else {
LOG.debug(s.getRegistration() + " registration unknown");
}

//
row = (rowIt != null && rowIt.hasNext()) ? rowIt.nextRow() : null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,9 @@ ProfileUpdatesPublisher.experience_section_updated=Experience has been updated.
ProfileUpdatesPublisher.aboutMe_section_updated="About me" has been updated.

RelationshipPublisher.user_relation_confirmed=I'm now connected with {0}
RelationshipPublisher.user_relations=I'm now connected with {0} user(s)
RelationshipPublisher.user_relations=I'm now connected with {0} user(s)

SpaceSearchConnector.members=Member(s)
SpaceSearchConnector.free_to_join=Free to Join
SpaceSearchConnector.register=Register
SpaceSearchConnector.invitation_only=Invitation Only
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,8 @@ ProfileUpdatesPublisher.aboutMe_section_updated="About me" has been updated.

RelationshipPublisher.user_relation_confirmed=Je suis d\u00E9sormais connect\u00E9 avec {0}
RelationshipPublisher.user_relations=Je suis maintenant connect\u00E9 avec {0} utilisateur(s).

SpaceSearchConnector.members=Membre(s)
SpaceSearchConnector.free_to_join=libre d'adh\u00E9rer
SpaceSearchConnector.register=S'enregistrer
SpaceSearchConnector.invitation_only=Invitation Seulement
Original file line number Diff line number Diff line change
Expand Up @@ -100,21 +100,21 @@ protected void tearDown() throws Exception {
}

public void testFilter() throws Exception {
assertEquals(1, peopleSearchConnector.search(null, "foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, " foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, "bar", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "bar position", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "doSomething", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "exo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "job description", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, "foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(1, peopleSearchConnector.search(null, " foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(1, peopleSearchConnector.search(null, "bar", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "bar position", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "doSomething", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "exo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "job description", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
//
assertEquals(2, peopleSearchConnector.search(null, "posi", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "do", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(2, peopleSearchConnector.search(null, "posi", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
assertEquals(2, peopleSearchConnector.search(null, "do", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
}

public void testData() throws Exception {
Collection<SearchResult> cFoo = peopleSearchConnector.search(null, "foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc");
Collection<SearchResult> cFoo = peopleSearchConnector.search(null, "foo", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en");
SearchResult rFoo = cFoo.iterator().next();
assertEquals("foo", rFoo.getTitle());
assertTrue(rFoo.getExcerpt().indexOf("foo") >= 0);
Expand All @@ -127,27 +127,27 @@ public void testData() throws Exception {
assertTrue(rFoo.getDate() != 0);
assertEquals(pFoo.getCreatedTime(), rFoo.getDate());

Collection<SearchResult> cBar = peopleSearchConnector.search(null, "bar", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc");
Collection<SearchResult> cBar = peopleSearchConnector.search(null, "bar", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en");
SearchResult rBar = cBar.iterator().next();
Profile pBar = identityManager.getProfile(identityManager.getOrCreateIdentity(OrganizationIdentityProvider.NAME, "bar"));
assertEquals(pBar.getAvatarUrl(), rBar.getImageUrl());
}

public void testOrder() throws Exception {

List<SearchResult> rTitleAsc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "title", "asc");
List<SearchResult> rTitleAsc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "title", "asc", "en");
assertEquals("bar", rTitleAsc.get(0).getTitle());
assertEquals("foo", rTitleAsc.get(1).getTitle());

List<SearchResult> rTitleDesc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "title", "desc");
List<SearchResult> rTitleDesc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "title", "desc", "en");
assertEquals("foo", rTitleDesc.get(0).getTitle());
assertEquals("bar", rTitleDesc.get(1).getTitle());

List<SearchResult> rDateAsc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "date", "asc");
List<SearchResult> rDateAsc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "date", "asc", "en");
assertEquals("foo", rDateAsc.get(0).getTitle());
assertEquals("bar", rDateAsc.get(1).getTitle());

List<SearchResult> rDateDesc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "date", "desc");
List<SearchResult> rDateDesc = (List<SearchResult>) peopleSearchConnector.search(null, "position", Collections.EMPTY_LIST, 0, 10, "date", "desc", "en");
assertEquals("bar", rDateDesc.get(0).getTitle());
assertEquals("foo", rDateDesc.get(1).getTitle());
}
Expand Down Expand Up @@ -181,15 +181,15 @@ public void testSearchSpecialCharacters() throws Exception {
identityManager.saveProfile(rootProfile);
tearDown.add(rootIdentity.getId());

assertEquals(1, peopleSearchConnector.search(null, "広いニーズ", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, "広いニーズ", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());

rootProfile.setProperty(Profile.POSITION, StringEscapeUtils.escapeHtml("広いニーズ"));
rootProfile.setProperty(Profile.FIRST_NAME, "root");
identityManager.saveProfile(rootProfile);
assertEquals(1, peopleSearchConnector.search(null, "広いニーズ", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, "広いニーズ", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());

rootProfile.setProperty(Profile.EXPERIENCES_SKILLS, StringEscapeUtils.escapeHtml("! . , : ; ( ) ^}{[] -, \" '% *"));
identityManager.saveProfile(rootProfile);
assertEquals(1, peopleSearchConnector.search(null, "! . , : ; ( ) ^}{[] -, \" '% *", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc").size());
assertEquals(1, peopleSearchConnector.search(null, "! . , : ; ( ) ^}{[] -, \" '% *", Collections.EMPTY_LIST, 0, 10, "relevancy", "asc", "en").size());
}
}
Loading