Commit cd300e10 by Lee Munkyeong

コードレビュー対応。

parent a368af94
...@@ -39,40 +39,39 @@ public class RoomListJSON extends AcmsCommonJSON { ...@@ -39,40 +39,39 @@ public class RoomListJSON extends AcmsCommonJSON {
protected void parse(JSONObject json) throws JSONValidationException { protected void parse(JSONObject json) throws JSONValidationException {
// ルーム一覧情報を取得 // ルーム一覧情報を取得
if (json.has(Body)) { if (!json.has(Body)) { return; }
JSONArray roomListJsonArray = json.getJSONObject(Body).getJSONArray(ChatRoomInfoList);
if (roomListJsonArray != null) {
roomList = new ArrayList<ChatRoomDto>();
for (int listCount = 0; listCount < roomListJsonArray.length(); listCount++) {
if (roomListJsonArray.getJSONObject(listCount).length() == 0) {
break;
}
ChatRoomDto chatRoomDto = new ChatRoomDto();
ChatMessageDto chatMessageDto = new ChatMessageDto();
chatRoomDto.chatRoomId = roomListJsonArray.getJSONObject(listCount).getInt(RoomId); JSONArray roomListJsonArray = json.getJSONObject(Body).getJSONArray(ChatRoomInfoList);
chatRoomDto.chatRoomName = roomListJsonArray.getJSONObject(listCount).getString(RoomName); if (roomListJsonArray == null) { return; }
chatRoomDto.type = roomListJsonArray.getJSONObject(listCount).getInt(RoomType);
chatRoomDto.unreadCount = roomListJsonArray.getJSONObject(listCount).has(UnreadCount) ? roomListJsonArray.getJSONObject(listCount).getInt(UnreadCount) : 0;
chatRoomDto.userCount = roomListJsonArray.getJSONObject(listCount).getJSONArray(AttendUsers).length();
//最後メッセージ情報がある場合の処理 roomList = new ArrayList<ChatRoomDto>();
JSONObject lastMessageInfoJSON = roomListJsonArray.getJSONObject(listCount).has(LastMessageInfo) ? roomListJsonArray.getJSONObject(listCount).getJSONObject(LastMessageInfo) : null; for (int listCount = 0; listCount < roomListJsonArray.length(); listCount++) {
if (lastMessageInfoJSON != null && lastMessageInfoJSON.has(MessageId)) { if (roomListJsonArray.getJSONObject(listCount).length() == 0) {
chatMessageDto.chatRoomId = chatRoomDto.chatRoomId; break;
chatMessageDto.message = lastMessageInfoJSON.getString(Message); }
chatMessageDto.messageType = lastMessageInfoJSON.getInt(MessageType); ChatRoomDto chatRoomDto = new ChatRoomDto();
if (lastMessageInfoJSON.has(InsertDate)) { ChatMessageDto chatMessageDto = new ChatMessageDto();
chatMessageDto.insertDate = DateTimeUtil.millToDateString(lastMessageInfoJSON.getJSONObject(InsertDate).getLong(Time));
} chatRoomDto.chatRoomId = roomListJsonArray.getJSONObject(listCount).getInt(RoomId);
chatMessageDto.shopMemberId = lastMessageInfoJSON.getInt(ShopMemberId); chatRoomDto.chatRoomName = roomListJsonArray.getJSONObject(listCount).getString(RoomName);
chatMessageDto.chatMessageId = lastMessageInfoJSON.getInt(MessageId); chatRoomDto.type = roomListJsonArray.getJSONObject(listCount).getInt(RoomType);
chatRoomDto.lastMessageInfo = chatMessageDto; chatRoomDto.unreadCount = roomListJsonArray.getJSONObject(listCount).has(UnreadCount) ? roomListJsonArray.getJSONObject(listCount).getInt(UnreadCount) : 0;
} chatRoomDto.userCount = roomListJsonArray.getJSONObject(listCount).getJSONArray(AttendUsers).length();
roomList.add(chatRoomDto); //最後メッセージ情報がある場合の処理
JSONObject lastMessageInfoJSON = roomListJsonArray.getJSONObject(listCount).has(LastMessageInfo) ? roomListJsonArray.getJSONObject(listCount).getJSONObject(LastMessageInfo) : null;
if (lastMessageInfoJSON != null && lastMessageInfoJSON.has(MessageId)) {
chatMessageDto.chatRoomId = chatRoomDto.chatRoomId;
chatMessageDto.message = lastMessageInfoJSON.getString(Message);
chatMessageDto.messageType = lastMessageInfoJSON.getInt(MessageType);
if (lastMessageInfoJSON.has(InsertDate)) {
chatMessageDto.insertDate = DateTimeUtil.millToDateString(lastMessageInfoJSON.getJSONObject(InsertDate).getLong(Time));
} }
chatMessageDto.shopMemberId = lastMessageInfoJSON.getInt(ShopMemberId);
chatMessageDto.chatMessageId = lastMessageInfoJSON.getInt(MessageId);
chatRoomDto.lastMessageInfo = chatMessageDto;
} }
roomList.add(chatRoomDto);
} }
} }
} }
......
...@@ -15,18 +15,17 @@ public class ChatMessageDto extends AbstractDto { ...@@ -15,18 +15,17 @@ public class ChatMessageDto extends AbstractDto {
@Override @Override
public Object[] getInsertValues() { public Object[] getInsertValues() {
Object[] test = new Object[]{chatMessageId, chatRoomId, shopMemberId, message, messageType, imageName, downloadFileName, savePath, insertDate}; return new Object[] { chatMessageId, chatRoomId, shopMemberId, message, messageType, imageName, downloadFileName, savePath, insertDate };
return new Object[]{chatMessageId, chatRoomId, shopMemberId, message, messageType, imageName, downloadFileName, savePath, insertDate};
} }
@Override @Override
public Object[] getUpdateValues() { public Object[] getUpdateValues() {
return new Object[]{chatRoomId, shopMemberId, message, messageType, imageName, downloadFileName, savePath, insertDate, chatMessageId}; return new Object[] { chatRoomId, shopMemberId, message, messageType, imageName, downloadFileName, savePath, insertDate, chatMessageId };
} }
@Override @Override
public String[] getKeyValues() { public String[] getKeyValues() {
return new String[]{""+ chatMessageId}; return new String[]{ "" + chatMessageId };
} }
} }
...@@ -18,17 +18,17 @@ public class ChatRoomDto extends AbstractDto { ...@@ -18,17 +18,17 @@ public class ChatRoomDto extends AbstractDto {
@Override @Override
public Object[] getInsertValues() { public Object[] getInsertValues() {
return new Object[]{chatRoomId, chatRoomName, type, unreadCount, userCount, favoriteRegisterDate}; return new Object[] { chatRoomId, chatRoomName, type, unreadCount, userCount, favoriteRegisterDate };
} }
@Override @Override
public Object[] getUpdateValues() { public Object[] getUpdateValues() {
return new Object[]{favoriteRegisterDate, chatRoomName, type, unreadCount, userCount, chatRoomId}; return new Object[] { favoriteRegisterDate, chatRoomName, type, unreadCount, userCount, chatRoomId };
} }
@Override @Override
public String[] getKeyValues() { public String[] getKeyValues() {
return new String[]{""+ chatRoomId}; return new String[] { "" + chatRoomId };
} }
} }
...@@ -8,17 +8,17 @@ public class CollaborationDetailDto extends AbstractDto { ...@@ -8,17 +8,17 @@ public class CollaborationDetailDto extends AbstractDto {
@Override @Override
public Object[] getInsertValues() { public Object[] getInsertValues() {
return new Object[]{collaborationDetialId, collaborationId, collaborationType, collaborationDuration}; return new Object[] { collaborationDetialId, collaborationId, collaborationType, collaborationDuration };
} }
@Override @Override
public Object[] getUpdateValues() { public Object[] getUpdateValues() {
return new Object[]{collaborationDuration, collaborationId, collaborationType, collaborationDetialId}; return new Object[] { collaborationDuration, collaborationId, collaborationType, collaborationDetialId };
} }
@Override @Override
public String[] getKeyValues() { public String[] getKeyValues() {
return new String[]{""+ collaborationDetialId}; return new String[]{ "" + collaborationDetialId };
} }
} }
...@@ -10,17 +10,17 @@ public class ShopMemberDto extends AbstractDto { ...@@ -10,17 +10,17 @@ public class ShopMemberDto extends AbstractDto {
@Override @Override
public Object[] getInsertValues() { public Object[] getInsertValues() {
return new Object[]{shopMemberId, shopMemberName, profileUrl, favoriteRegisterDate}; return new Object[] { shopMemberId, shopMemberName, profileUrl, favoriteRegisterDate };
} }
@Override @Override
public Object[] getUpdateValues() { public Object[] getUpdateValues() {
return new Object[]{shopMemberName, profileUrl, favoriteRegisterDate, shopMemberId}; return new Object[] { shopMemberName, profileUrl, favoriteRegisterDate, shopMemberId };
} }
@Override @Override
public String[] getKeyValues() { public String[] getKeyValues() {
return new String[]{""+ shopMemberId}; return new String[]{ "" + shopMemberId };
} }
} }
...@@ -9,228 +9,228 @@ CHAT.globalIsInvite = false; ...@@ -9,228 +9,228 @@ CHAT.globalIsInvite = false;
CHAT.globalLoginParameter; CHAT.globalLoginParameter;
CHAT.saveRoomInfo = function(roomId, roomName) { CHAT.saveRoomInfo = function(roomId, roomName) {
CHAT.globalLoginParameter.roomId = roomId; CHAT.globalLoginParameter.roomId = roomId;
CHAT.globalLoginParameter.roomName = roomName; CHAT.globalLoginParameter.roomName = roomName;
if (CHAT_UTIL.isIOS()) { if (CHAT_UTIL.isIOS()) {
webkit.messageHandlers.roomInfosaveMessageHandlerId.postMessage({"roomId":roomId, "roomName":roomName}); webkit.messageHandlers.roomInfosaveMessageHandlerId.postMessage({"roomId":roomId, "roomName":roomName});
} else if (CHAT_UTIL.isAndroid()) { } else if (CHAT_UTIL.isAndroid()) {
if (roomId == undefined && roomName == undefined) { if (roomId == undefined && roomName == undefined) {
android.saveVisitRoomInfo('', ''); android.saveVisitRoomInfo('', '');
} else { } else {
android.saveVisitRoomInfo(roomId, roomName); android.saveVisitRoomInfo(roomId, roomName);
} }
} }
} }
// #36170 画像パスが存在しない場合はデフォルトの画像を返す // #36170 画像パスが存在しない場合はデフォルトの画像を返す
// 存在する場合はプロフィール画像取得用APIのURLを生成して返す // 存在する場合はプロフィール画像取得用APIのURLを生成して返す
CHAT.getProfileImgUrl = function(path) { CHAT.getProfileImgUrl = function(path) {
if (path == undefined || path == "") { if (path == undefined || path == "") {
return ASSET_PATH + 'images/user-profile.png'; return ASSET_PATH + 'images/user-profile.png';
} else { } else {
var userInfo = path.split("/").reverse(); var userInfo = path.split("/").reverse();
return CMS_SERVER_URL + '/file/getProfileImage?profileFileName=' + userInfo[0] + '&profileGetLoginId=' + userInfo[1]; return CMS_SERVER_URL + '/file/getProfileImage?profileFileName=' + userInfo[0] + '&profileGetLoginId=' + userInfo[1];
} }
} }
// Video のサムネイルファイル生成する // Video のサムネイルファイル生成する
CHAT.createVideoThumbnailAndUpload = function(sourceImage, callback) { CHAT.createVideoThumbnailAndUpload = function(sourceImage, callback) {
var fileReader = new FileReader(); var fileReader = new FileReader();
fileReader.onload = function() { fileReader.onload = function() {
var blob = new Blob([fileReader.result], {type: sourceImage.type}); var blob = new Blob([fileReader.result], {type: sourceImage.type});
var url = URL.createObjectURL(blob); var url = URL.createObjectURL(blob);
var video = document.createElement('video'); var video = document.createElement('video');
var timeupdate = function() { var timeupdate = function() {
if (snapImage()) { if (snapImage()) {
video.removeEventListener('timeupdate', timeupdate); video.removeEventListener('timeupdate', timeupdate);
video.pause(); video.pause();
} }
}; };
video.addEventListener('loadeddata', function() { video.addEventListener('loadeddata', function() {
if (snapImage()) { if (snapImage()) {
video.removeEventListener('timeupdate', timeupdate); video.removeEventListener('timeupdate', timeupdate);
} }
}); });
var snapImage = function() { var snapImage = function() {
var canvas = document.createElement('canvas'); var canvas = document.createElement('canvas');
canvas.width = video.videoWidth; canvas.width = video.videoWidth;
canvas.height = video.videoHeight; canvas.height = video.videoHeight;
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
fetch(canvas.toDataURL("image/jpeg")) fetch(canvas.toDataURL("image/jpeg"))
.then(function(res) { .then(function(res) {
return res.arrayBuffer(); return res.arrayBuffer();
}) })
.then(function(buf) { .then(function(buf) {
// 回転された画像をFormDataに保存 // 回転された画像をFormDataに保存
const newFile = new File([buf], sourceImage.name, {type:"image/jpeg"}); const newFile = new File([buf], sourceImage.name, {type:"image/jpeg"});
callback(newFile, true); callback(newFile, true);
// ajax End // ajax End
}).catch((error) => { // fetch Error catch Block }).catch((error) => { // fetch Error catch Block
if (error) { if (error) {
console.log(error) console.log(error)
} }
}); });
return true; return true;
}; };
video.addEventListener('timeupdate', timeupdate); video.addEventListener('timeupdate', timeupdate);
video.preload = 'metadata'; video.preload = 'metadata';
video.src = url; video.src = url;
// Load video in Safari / IE11 // Load video in Safari / IE11
video.muted = true; video.muted = true;
video.playsInline = true; video.playsInline = true;
video.play(); video.play();
}; };
fileReader.readAsArrayBuffer(sourceImage); fileReader.readAsArrayBuffer(sourceImage);
} }
// Ajaxでイメージをアップロードする // Ajaxでイメージをアップロードする
CHAT.uploadImage = function(formData) { CHAT.uploadImage = function(formData) {
formData.append('roomId', CHAT.globalLoginParameter.roomId); formData.append('roomId', CHAT.globalLoginParameter.roomId);
jQuery.ajax({ jQuery.ajax({
async: true, async: true,
url: CMS_SERVER_URL+"/file/upload", url: CMS_SERVER_URL+"/file/upload",
type: "post", type: "post",
data: formData, data: formData,
contentType: false, contentType: false,
processData: false processData: false
}).done(function(res) { }).done(function(res) {
// 8 // 8
var imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.fileName + '&roomId=' + CHAT.globalLoginParameter.roomId; var imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.fileName + '&roomId=' + CHAT.globalLoginParameter.roomId;
var imageName = res.fileName var imageName = res.fileName
// uploadFileの判断 // uploadFileの判断
var extension = imageName.substr(imageName.lastIndexOf('.') + 1).toLowerCase(); var extension = imageName.substr(imageName.lastIndexOf('.') + 1).toLowerCase();
// 画像の処理 // 画像の処理
if (res.fileType == "jpeg" || res.fileType == "jpg" || res.fileType == "png") { if (res.fileType == "jpeg" || res.fileType == "jpg" || res.fileType == "png") {
if (res.thumbnailPath && res.thumbnailPath.length > 0) { if (res.thumbnailPath && res.thumbnailPath.length > 0) {
imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.thumbImageFileName + '&roomId=' + CHAT.globalLoginParameter.roomId; imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.thumbImageFileName + '&roomId=' + CHAT.globalLoginParameter.roomId;
imageName = res.thumbImageFileName; imageName = res.thumbImageFileName;
} }
let downloadPath = CMS_SERVER_URL + '/file/download?fileName=' + imageName + '&roomId=' + CHAT.globalLoginParameter.roomId; let downloadPath = CMS_SERVER_URL + '/file/download?fileName=' + imageName + '&roomId=' + CHAT.globalLoginParameter.roomId;
// アップロードが終了した後ローディング画面から離れてメッセージをメッセージを転送する // アップロードが終了した後ローディング画面から離れてメッセージをメッセージを転送する
const lightbox = $('<a/>',{href:imgPath, 'data-lightbox':'attachedImages','data-title':imageName}); const lightbox = $('<a/>',{href:imgPath, 'data-lightbox':'attachedImages','data-title':imageName});
const image = $('<img/>',{src:imgPath, width:'auto',style:'max-width:100%'}); const image = $('<img/>',{src:imgPath, width:'auto',style:'max-width:100%'});
const downloadIcon = $('<a/>',{href:downloadPath, class:'fa fa-download', download:res.fileName}); const downloadIcon = $('<a/>',{href:downloadPath, class:'fa fa-download', download:res.fileName});
lightbox.append(image); lightbox.append(image);
lightbox.append(downloadIcon); lightbox.append(downloadIcon);
let text = lightbox.prop('outerHTML') let text = lightbox.prop('outerHTML')
let encodedText let encodedText
try { try {
encodedText = encodeURIComponent(text) encodedText = encodeURIComponent(text)
} catch(e) { } catch(e) {
encodedText = text; encodedText = text;
} }
socket.emit('createMessage', { socket.emit('createMessage', {
text: encodedText text: encodedText
}, 1); }, 1);
} else { // 動画の処理 } else { // 動画の処理
if (res.thumbnailPath && res.thumbnailPath.length > 0) { if (res.thumbnailPath && res.thumbnailPath.length > 0) {
imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.thumbImageFileName + '&roomId=' + CHAT.globalLoginParameter.roomId; imgPath = CMS_SERVER_URL + '/file/getImage?fileName=' + res.thumbImageFileName + '&roomId=' + CHAT.globalLoginParameter.roomId;
} }
let downloadPath = CMS_SERVER_URL + '/file/download?fileName=' + imageName + '&roomId=' + CHAT.globalLoginParameter.roomId; let downloadPath = CMS_SERVER_URL + '/file/download?fileName=' + imageName + '&roomId=' + CHAT.globalLoginParameter.roomId;
const aTag = $('<a/>', {id:"attachedImages"}) const aTag = $('<a/>', {id:"attachedImages"})
const image = $('<img/>',{src:imgPath, width:'auto',style:'max-width:100%'}); const image = $('<img/>',{src:imgPath, width:'auto',style:'max-width:100%'});
const downloadIcon = $('<a/>',{href:downloadPath, class:'fa fa-download', download:res.fileName}); const downloadIcon = $('<a/>',{href:downloadPath, class:'fa fa-download', download:res.fileName});
aTag.append(image); aTag.append(image);
aTag.append(downloadIcon); aTag.append(downloadIcon);
let text = aTag.prop('outerHTML'); let text = aTag.prop('outerHTML');
let encodedText let encodedText
try { try {
encodedText = encodeURIComponent(text) encodedText = encodeURIComponent(text)
} catch(e) { } catch(e) {
encodedText = text; encodedText = text;
} }
socket.emit('createMessage', { socket.emit('createMessage', {
text: encodedText text: encodedText
}, 1); }, 1);
} }
$('.overlay').removeClass('active undismissable'); $('.overlay').removeClass('active undismissable');
$('.loader').removeClass('active'); $('.loader').removeClass('active');
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
}) })
} }
// Thumbnailのファイルを生成する。 // Thumbnailのファイルを生成する。
CHAT.createThumbnailAndUpload = function(sourceImage, callback) { CHAT.createThumbnailAndUpload = function(sourceImage, callback) {
const fileReader = new FileReader(); const fileReader = new FileReader();
const img = new Image(); const img = new Image();
fileReader.onloadend = function() { fileReader.onloadend = function() {
img.src = fileReader.result img.src = fileReader.result
} }
img.onload = function() { img.onload = function() {
const elem = document.createElement('canvas'); const elem = document.createElement('canvas');
var rate var rate
var width = img.width var width = img.width
var height = img.height var height = img.height
if ((img.width <= 500) && (img.height <= 500)) if ((img.width <= 500) && (img.height <= 500))
{ {
callback(undefined, false) callback(undefined, false)
return return
} }
if (img.width > img.height) if (img.width > img.height)
{ {
rate = 500/img.width rate = 500/img.width
} else { } else {
rate = 500/img.height rate = 500/img.height
} }
elem.width = width * rate; elem.width = width * rate;
elem.height = height * rate; elem.height = height * rate;
const ctx = elem.getContext('2d') const ctx = elem.getContext('2d')
ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, elem.width, elem.height); ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, elem.width, elem.height);
// ctx.drawImage(img, 0, 0, width, height); // ctx.drawImage(img, 0, 0, width, height);
fetch(elem.toDataURL("image/jpeg")) fetch(elem.toDataURL("image/jpeg"))
.then(function(res) { .then(function(res) {
return res.arrayBuffer(); return res.arrayBuffer();
}) })
.then(function(buf) { .then(function(buf) {
const newFile = new File([buf], sourceImage.name, {type:"image/jpeg"}); const newFile = new File([buf], sourceImage.name, {type:"image/jpeg"});
callback(newFile, true) callback(newFile, true)
}).catch((error) => { // fetch Error catch Block }).catch((error) => { // fetch Error catch Block
if (error) { if (error) {
console.log(error) console.log(error)
} }
}); });
} }
fileReader.readAsDataURL(sourceImage); fileReader.readAsDataURL(sourceImage);
} }
// 該当チャットルームに参加するためログイン情報をサーバに渡す // 該当チャットルームに参加するためログイン情報をサーバに渡す
getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomName = undefined, languageCode) { getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomName = undefined, languageCode) {
var loginParam = new Object() var loginParam = new Object()
loginParam.sid = sid; loginParam.sid = sid;
loginParam.loginId = loginId; loginParam.loginId = loginId;
loginParam.shopName = shopName; loginParam.shopName = shopName;
loginParam.roomId = roomId; loginParam.roomId = roomId;
loginParam.roomName = roomName; loginParam.roomName = roomName;
CHAT.globalLoginParameter = loginParam; CHAT.globalLoginParameter = loginParam;
if (!languageCode) { if (!languageCode) {
languageCode = "en" languageCode = "en"
} }
CHAT_UI.htmlElementTextInitialize(languageCode) CHAT_UI.htmlElementTextInitialize(languageCode)
if (IS_ONLINE == 'true') { if (IS_ONLINE == 'true') {
socket.emit('join', loginParam, function(err) { socket.emit('join', loginParam, function(err) {
if (err) { if (err) {
// #36174 // #36174
...@@ -257,14 +257,14 @@ getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomNam ...@@ -257,14 +257,14 @@ getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomNam
// loadingIndicatorを表示しない // loadingIndicatorを表示しない
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
}); });
} else { } else {
// loadingIndicatorを表示しない // loadingIndicatorを表示しない
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
} }
} }
CHAT.leaveRoom = function() { CHAT.leaveRoom = function() {
socket.emit('leaveRoom', function() { socket.emit('leaveRoom', function() {
}); });
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment