/*
* Copyright 2015 Evgeny Dolganov (evgenij.dolganov@gmail.com).
*
* 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 och.chat.web.model;
import static java.lang.Boolean.*;
import static och.util.Util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import och.api.model.chat.ChatLog;
import och.api.model.chat.ChatUser;
import och.api.model.chat.Message;
public class ChatLogResp {
public Integer fromIndex;
public List<Message> messages;
public List<ChatUser> users;
public Map<Long, String> operators;
public Boolean hasNewOperators;
public Map<Integer, String> clientRefs;
//extra
public String id;
protected ChatLogResp(){}
public ChatLogResp(ChatLog chatLog){
this(chatLog, true, true);
}
protected ChatLogResp(ChatLog chatLog, boolean replaceClientInfo, boolean clearClientRefs){
this.fromIndex = chatLog.fromIndex;
this.messages = chatLog.messages;
this.hasNewOperators = chatLog.hasNewOperators;
this.clientRefs = clearClientRefs? null : chatLog.clientRefs;
//skip init data if no updates
if( ! hasUpdates()) {
return;
}
this.operators = chatLog.operators;
//remove client info
List<ChatUser> logUsers = chatLog.users;
if(isEmpty(logUsers)) this.users = null;
else {
this.users = new ArrayList<>();
for(ChatUser user : logUsers){
if(user.isClient()) {
String clientInfo = replaceClientInfo? "client" : user.userId;
this.users.add(new ChatUser(clientInfo, null, null));
}
else this.users.add(user);
}
}
}
/**
* Имеются ли обновления в текущих данных
*/
public boolean hasUpdates() {
return ! isEmpty(messages) || TRUE.equals(hasNewOperators);
}
}