2020-02-10 22:29:34 +01:00
|
|
|
package envoy.server.processors;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
2020-04-02 16:32:23 +02:00
|
|
|
import envoy.data.Contact;
|
|
|
|
import envoy.event.contact.ContactSearchRequest;
|
|
|
|
import envoy.event.contact.ContactSearchResult;
|
2020-02-15 22:43:20 +01:00
|
|
|
import envoy.server.data.PersistenceManager;
|
2020-02-10 22:29:34 +01:00
|
|
|
import envoy.server.data.User;
|
2020-02-12 22:01:32 +01:00
|
|
|
import envoy.server.net.ConnectionManager;
|
2020-02-10 22:29:34 +01:00
|
|
|
import envoy.server.net.ObjectWriteProxy;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Project: <strong>envoy-server-standalone</strong><br>
|
2020-06-12 10:56:02 +02:00
|
|
|
* File: <strong>ContactSearchProcessor.java</strong><br>
|
2020-02-10 22:29:34 +01:00
|
|
|
* Created: <strong>08.02.2020</strong><br>
|
|
|
|
*
|
|
|
|
* @author Kai S. K. Engelbart
|
|
|
|
* @author Maximilian Käfer
|
|
|
|
* @since Envoy Server Standalone v0.1-alpha
|
|
|
|
*/
|
2020-06-12 10:56:02 +02:00
|
|
|
public class ContactSearchProcessor implements ObjectProcessor<ContactSearchRequest> {
|
2020-02-10 22:29:34 +01:00
|
|
|
|
|
|
|
/**
|
2020-04-02 16:32:23 +02:00
|
|
|
* Writes a list of contacts to the client containing all {@link Contact}s
|
2020-02-10 22:29:34 +01:00
|
|
|
* matching the search phrase contained inside the request. The client and their
|
|
|
|
* contacts are excluded from the result.
|
|
|
|
*
|
|
|
|
* @since Envoy Server Standalone v0.1-alpha
|
|
|
|
*/
|
|
|
|
@Override
|
2020-03-26 20:14:09 +01:00
|
|
|
public void process(ContactSearchRequest request, long socketID, ObjectWriteProxy writeProxy) throws IOException {
|
|
|
|
writeProxy.write(socketID,
|
2020-02-12 07:10:33 +01:00
|
|
|
new ContactSearchResult(PersistenceManager.getInstance()
|
2020-07-06 11:40:13 +02:00
|
|
|
.searchUsers(request.get(), ConnectionManager.getInstance().getUserIDBySocketID(socketID))
|
2020-02-10 22:29:34 +01:00
|
|
|
.stream()
|
2020-03-25 16:34:55 +01:00
|
|
|
.map(User::toCommon)
|
2020-02-10 22:29:34 +01:00
|
|
|
.collect(Collectors.toList())));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Class<ContactSearchRequest> getInputClass() { return ContactSearchRequest.class; }
|
|
|
|
}
|