/*
* Copyright 2017 TWO SIGMA OPEN SOURCE, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.twosigma.beaker.jupyter;
import com.twosigma.beaker.jupyter.comm.Comm;
import com.twosigma.beaker.jupyter.msg.JupyterMessages;
import com.twosigma.beaker.widgets.Layout;
import com.twosigma.beaker.widgets.Widget;
import com.twosigma.jupyter.message.Message;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class SearchMessages {
public static List<Message> getListLayout(List<Message> messages){
return getListByDataAttr(messages, Widget.VIEW_NAME, new Layout().getViewNameValue());
}
public static Message getLayoutForWidget(List<Message> messages, Message widget){
Map map = ((Map)widget.getContent().get(Comm.DATA));
if(map == null || map.get(Layout.LAYOUT) == null) return null;
String id = ((String) map.get(Layout.LAYOUT)).replace(Layout.IPY_MODEL, "");
return getMessageByCommId(messages, id);
}
public static List<Message> getListWidgetsByViewName(List<Message> messages, String viewNameValue){
return getListByDataAttr(messages, Widget.VIEW_NAME, viewNameValue);
}
public static List<Message> getListWidgetsByModelName(List<Message> messages, String modelNameValue){
return getListByDataAttr(messages, Widget.MODEL_NAME, modelNameValue);
}
public static List<Message> getListByDataAttr(List<Message> messages, String key, String value){
return messages.stream()
.filter(m -> {
Map map = ((Map)m.getContent().get(Comm.DATA));
return map != null && map.containsKey(key) && value.equals(map.get(key));
})
.collect(Collectors.toList());
}
public static Message getMessageByCommId(List<Message> messages, String id){
return messages.stream()
.filter(m -> id.equals((String) m.getContent().get(Comm.COMM_ID)))
.findFirst()
.get();
}
public static List<Message> getListMessagesByType(List<Message> messages, JupyterMessages type){
return messages.stream()
.filter(m -> m.getHeader() != null
&& m.getHeader().getType() != null
&& m.getHeader().getType().equalsIgnoreCase(type.toString())
)
.collect(Collectors.toList());
}
}