Commit ccccd253 authored by Grigory Fedorov's avatar Grigory Fedorov

extension/muc: light code formatting and refactoring.

parent 743096a8
......@@ -66,10 +66,8 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
private final EntityNotificationProvider<RoomAuthorizationError> authorizationErrorProvider;
private MUCManager() {
inviteProvider = new EntityNotificationProvider<RoomInvite>(
R.drawable.ic_stat_add_circle);
authorizationErrorProvider = new EntityNotificationProvider<RoomAuthorizationError>(
R.drawable.ic_stat_error);
inviteProvider = new EntityNotificationProvider<>(R.drawable.ic_stat_add_circle);
authorizationErrorProvider = new EntityNotificationProvider<>(R.drawable.ic_stat_error);
}
public static MUCManager getInstance() {
......@@ -78,19 +76,18 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
@Override
public void onLoad() {
final Collection<RoomChat> roomChats = new ArrayList<RoomChat>();
final Collection<RoomChat> needJoins = new ArrayList<RoomChat>();
final Collection<RoomChat> roomChats = new ArrayList<>();
final Collection<RoomChat> needJoins = new ArrayList<>();
Cursor cursor = RoomTable.getInstance().list();
try {
if (cursor.moveToFirst()) {
do {
RoomChat roomChat = new RoomChat(
RoomTable.getAccount(cursor),
RoomTable.getRoom(cursor),
RoomTable.getNickname(cursor),
RoomTable.getPassword(cursor));
if (RoomTable.needJoin(cursor))
RoomTable.getAccount(cursor), RoomTable.getRoom(cursor),
RoomTable.getNickname(cursor), RoomTable.getPassword(cursor));
if (RoomTable.needJoin(cursor)) {
needJoins.add(roomChat);
}
roomChats.add(roomChat);
} while (cursor.moveToNext());
}
......@@ -105,38 +102,34 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
});
}
private void onLoaded(Collection<RoomChat> roomChats,
Collection<RoomChat> needJoins) {
private void onLoaded(Collection<RoomChat> roomChats, Collection<RoomChat> needJoins) {
for (RoomChat roomChat : roomChats) {
AbstractChat abstractChat = MessageManager.getInstance().getChat(
roomChat.getAccount(), roomChat.getUser());
if (abstractChat != null)
if (abstractChat != null) {
MessageManager.getInstance().removeChat(abstractChat);
}
MessageManager.getInstance().addChat(roomChat);
if (needJoins.contains(roomChat))
if (needJoins.contains(roomChat)) {
roomChat.setState(RoomState.waiting);
}
}
NotificationManager.getInstance().registerNotificationProvider(
inviteProvider);
NotificationManager.getInstance().registerNotificationProvider(
authorizationErrorProvider);
NotificationManager.getInstance().registerNotificationProvider(inviteProvider);
NotificationManager.getInstance().registerNotificationProvider(authorizationErrorProvider);
}
/**
* @param account
* @param room
* @return <code>null</code> if does not exists.
*/
private RoomChat getRoomChat(String account, String room) {
AbstractChat chat = MessageManager.getInstance().getChat(account, room);
if (chat != null && chat instanceof RoomChat)
if (chat != null && chat instanceof RoomChat) {
return (RoomChat) chat;
}
return null;
}
/**
* @param account
* @param room
* @return Whether there is such room.
*/
public boolean hasRoom(String account, String room) {
......@@ -144,14 +137,13 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
/**
* @param account
* @param room
* @return nickname or empty string if room does not exists.
*/
public String getNickname(String account, String room) {
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null)
if (roomChat == null) {
return "";
}
return roomChat.getNickname();
}
......@@ -162,26 +154,24 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
*/
public String getPassword(String account, String room) {
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null)
if (roomChat == null) {
return "";
}
return roomChat.getPassword();
}
/**
* @param account
* @param room
* @return list of occupants or empty list.
*/
public Collection<Occupant> getOccupants(String account, String room) {
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null)
if (roomChat == null) {
return Collections.emptyList();
}
return roomChat.getOccupants();
}
/**
* @param account
* @param room
* @return <code>null</code> if there is no such invite.
*/
public RoomInvite getInvite(String account, String room) {
......@@ -195,8 +185,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
public void removeRoom(final String account, final String room) {
removeInvite(getInvite(account, room));
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null)
if (roomChat == null) {
return;
}
leaveRoom(account, room);
MessageManager.getInstance().removeChat(roomChat);
RosterManager.getInstance().onContactChanged(account, room);
......@@ -211,10 +202,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
/**
* Creates or updates existed room.
*
* @param account
* @param room
* @param nickname
* @param password
*/
public void createRoom(String account, String room, String nickname,
String password, boolean join) {
......@@ -222,8 +209,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
AbstractChat chat = MessageManager.getInstance().getChat(account, room);
RoomChat roomChat;
if (chat == null || !(chat instanceof RoomChat)) {
if (chat != null)
if (chat != null) {
MessageManager.getInstance().removeChat(chat);
}
roomChat = new RoomChat(account, room, nickname, password);
MessageManager.getInstance().addChat(roomChat);
} else {
......@@ -232,8 +220,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
roomChat.setPassword(password);
}
requestToWriteRoom(account, room, nickname, password, join);
if (join)
if (join) {
joinRoom(account, room, true);
}
}
private void requestToWriteRoom(final String account, final String room,
......@@ -248,8 +237,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
/**
* @param account
* @param room
* @return Whether room is disabled.
*/
public boolean isDisabled(final String account, final String room) {
......@@ -258,8 +245,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
/**
* @param account
* @param room
* @return Whether connected is establish or connection is in progress.
*/
public boolean inUse(final String account, final String room) {
......@@ -270,12 +255,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
/**
* Requests to join to the room.
*
* @param account
* @param room
* @param requested Whether user request to join the room.
*/
public void joinRoom(final String account, final String room,
boolean requested) {
public void joinRoom(final String account, final String room, boolean requested) {
final XMPPConnection xmppConnection;
final RoomChat roomChat;
final String nickname;
......@@ -323,19 +305,21 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
@Override
public void run() {
try {
if (roomChat.getMultiUserChat() != multiUserChat)
if (roomChat.getMultiUserChat() != multiUserChat) {
return;
}
multiUserChat.join(nickname, password);
Application.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
if (roomChat.getMultiUserChat() != multiUserChat)
if (roomChat.getMultiUserChat() != multiUserChat) {
return;
if (roomChat.getState() == RoomState.joining)
}
if (roomChat.getState() == RoomState.joining) {
roomChat.setState(RoomState.occupation);
}
removeAuthorizationError(account, room);
RosterManager.getInstance().onContactChanged(
account, room);
RosterManager.getInstance().onContactChanged(account, room);
}
});
return;
......@@ -343,42 +327,35 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
Application.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
if (roomChat.getMultiUserChat() != multiUserChat)
if (roomChat.getMultiUserChat() != multiUserChat) {
return;
}
roomChat.setState(RoomState.error);
addAuthorizationError(account, room);
if (e.getXMPPError() != null
&& e.getXMPPError().getCode() == 409)
Application.getInstance().onError(
R.string.NICK_ALREADY_USED);
else if (e.getXMPPError() != null
&& e.getXMPPError().getCode() == 401)
Application.getInstance().onError(
R.string.AUTHENTICATION_FAILED);
else
Application.getInstance().onError(
R.string.NOT_CONNECTED);
RosterManager.getInstance().onContactChanged(
account, room);
if (e.getXMPPError() != null && e.getXMPPError().getCode() == 409) {
Application.getInstance().onError(R.string.NICK_ALREADY_USED);
} else if (e.getXMPPError() != null && e.getXMPPError().getCode() == 401) {
Application.getInstance().onError(R.string.AUTHENTICATION_FAILED);
} else {
Application.getInstance().onError(R.string.NOT_CONNECTED);
}
RosterManager.getInstance().onContactChanged(account, room);
}
});
return;
} catch (IllegalStateException e) {
} catch (RuntimeException e) {
LogManager.exception(this, e);
} catch (Exception e) {
LogManager.exception(this, e);
}
Application.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
if (roomChat.getMultiUserChat() != multiUserChat)
if (roomChat.getMultiUserChat() != multiUserChat) {
return;
}
roomChat.setState(RoomState.waiting);
Application.getInstance().onError(
R.string.NOT_CONNECTED);
RosterManager.getInstance().onContactChanged(account,
room);
Application.getInstance().onError(R.string.NOT_CONNECTED);
RosterManager.getInstance().onContactChanged(account, room);
}
});
}
......@@ -390,17 +367,16 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
public void leaveRoom(String account, String room) {
final MultiUserChat multiUserChat;
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null)
if (roomChat == null) {
return;
}
multiUserChat = roomChat.getMultiUserChat();
roomChat.setState(RoomState.unavailable);
roomChat.setRequested(false);
roomChat.newAction(roomChat.getNickname(), null, ChatAction.leave);
requestToWriteRoom(account, room, roomChat.getNickname(),
roomChat.getPassword(), false);
requestToWriteRoom(account, room, roomChat.getNickname(), roomChat.getPassword(), false);
if (multiUserChat != null) {
Thread thread = new Thread("Leave to room " + room + " from "
+ account) {
Thread thread = new Thread("Leave to room " + room + " from " + account) {
@Override
public void run() {
try {
......@@ -417,41 +393,39 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
@Override
public void onPacket(ConnectionItem connection, String bareAddress,
Packet packet) {
if (!(connection instanceof AccountItem))
public void onPacket(ConnectionItem connection, String bareAddress, Packet packet) {
if (!(connection instanceof AccountItem)) {
return;
}
String account = ((AccountItem) connection).getAccount();
if (bareAddress == null || !(packet instanceof Message))
if (bareAddress == null || !(packet instanceof Message)) {
return;
}
Message message = (Message) packet;
if (message.getType() != Message.Type.normal
&& message.getType() != Message.Type.chat)
if (message.getType() != Message.Type.normal && message.getType() != Message.Type.chat) {
return;
}
MUCUser mucUser = MUC.getMUCUserExtension(packet);
if (mucUser == null || mucUser.getInvite() == null)
if (mucUser == null || mucUser.getInvite() == null) {
return;
}
RoomChat roomChat = getRoomChat(account, bareAddress);
if (roomChat == null || !roomChat.getState().inUse()) {
String inviter = mucUser.getInvite().getFrom();
if (inviter == null)
if (inviter == null) {
inviter = bareAddress;
}
inviteProvider.add(new RoomInvite(account, bareAddress, inviter,
mucUser.getInvite().getReason(), mucUser.getPassword()),
true);
mucUser.getInvite().getReason(), mucUser.getPassword()), true);
}
}
/**
* Sends invitation.
*
* @param account
* @param room
* @param user
* @throws NetworkException
*/
public void invite(String account, String room, String user)
throws NetworkException {
public void invite(String account, String room, String user) throws NetworkException {
RoomChat roomChat = getRoomChat(account, room);
if (roomChat == null || roomChat.getState() != RoomState.available) {
Application.getInstance().onError(R.string.NOT_CONNECTED);
......@@ -474,8 +448,7 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
public void addAuthorizationError(String account, String room) {
authorizationErrorProvider.add(
new RoomAuthorizationError(account, room), null);
authorizationErrorProvider.add(new RoomAuthorizationError(account, room), null);
}
}
......@@ -91,8 +91,9 @@ public class Occupant implements Comparable<Occupant> {
@Override
public int compareTo(Occupant another) {
int result = another.role.ordinal() - role.ordinal();
if (result != 0)
if (result != 0) {
return result;
}
return nickname.compareTo(another.nickname);
}
......
......@@ -22,8 +22,7 @@ import com.xabber.android.data.entity.BaseEntity;
import com.xabber.android.data.notification.EntityNotificationItem;
import com.xabber.android.ui.ConferenceAdd;
public class RoomAuthorizationError extends BaseEntity implements
EntityNotificationItem {
public class RoomAuthorizationError extends BaseEntity implements EntityNotificationItem {
public RoomAuthorizationError(String account, String user) {
super(account, user);
......@@ -31,8 +30,7 @@ public class RoomAuthorizationError extends BaseEntity implements
@Override
public Intent getIntent() {
return ConferenceAdd.createIntent(Application.getInstance(),
account, user);
return ConferenceAdd.createIntent(Application.getInstance(), account, user);
}
@Override
......@@ -42,8 +40,7 @@ public class RoomAuthorizationError extends BaseEntity implements
@Override
public String getText() {
return Application.getInstance().getString(
R.string.AUTHENTICATION_FAILED);
return Application.getInstance().getString(R.string.AUTHENTICATION_FAILED);
}
}
......@@ -85,8 +85,8 @@ public class RoomChat extends AbstractChat {
state = RoomState.unavailable;
subject = "";
multiUserChat = null;
occupants = new HashMap<String, Occupant>();
invites = new HashMap<String, String>();
occupants = new HashMap<>();
invites = new HashMap<>();
}
@Override
......@@ -138,8 +138,9 @@ public class RoomChat extends AbstractChat {
occupants.clear();
invites.clear();
}
if (state == RoomState.available)
if (state == RoomState.available) {
sendMessages();
}
}
Collection<Occupant> getOccupants() {
......@@ -164,15 +165,12 @@ public class RoomChat extends AbstractChat {
@Override
protected MessageItem newMessage(String text) {
return newMessage(nickname, text, null, null, false, false, false,
false, true);
return newMessage(nickname, text, null, null, false, false, false, false, true);
}
@Override
protected boolean canSendMessage() {
if (super.canSendMessage())
return state == RoomState.available;
return false;
return super.canSendMessage() && state == RoomState.available;
}
@Override
......@@ -182,8 +180,9 @@ public class RoomChat extends AbstractChat {
@Override
protected boolean onPacket(String bareAddress, Packet packet) {
if (!super.onPacket(bareAddress, packet))
if (!super.onPacket(bareAddress, packet)) {
return false;
}
final String from = packet.getFrom();
final String resource = StringUtils.parseResource(from);
if (packet instanceof Message) {
......@@ -197,36 +196,38 @@ public class RoomChat extends AbstractChat {
}
MUCUser mucUser = MUC.getMUCUserExtension(packet);
if (mucUser != null && mucUser.getDecline() != null) {
onInvitationDeclined(mucUser.getDecline().getFrom(), mucUser
.getDecline().getReason());
onInvitationDeclined(mucUser.getDecline().getFrom(), mucUser.getDecline().getReason());
return true;
}
final String text = message.getBody();
final String subject = message.getSubject();
if (text == null && subject == null)
if (text == null && subject == null) {
return true;
if (isSelf(resource)) // Own message
}
if (isSelf(resource)) { // Own message
return true;
}
if (subject != null) {
if (this.subject.equals(subject))
if (this.subject.equals(subject)) {
return true;
}
this.subject = subject;
RosterManager.getInstance().onContactChanged(account,
bareAddress);
RosterManager.getInstance().onContactChanged(account, bareAddress);
newAction(resource, subject, ChatAction.subject);
} else {
String packetID = message.getPacketID();
Date delay = Delay.getDelay(message);
for (MessageItem messageItem : messages) {
// Search for duplicates
if (packetID != null
&& packetID.equals(messageItem.getPacketID()))
if (packetID != null && packetID.equals(messageItem.getPacketID())) {
return true;
}
if (delay != null) {
if (delay.equals(messageItem.getDelayTimestamp())
&& resource.equals(messageItem.getResource())
&& text.equals(messageItem.getText()))
&& text.equals(messageItem.getText())) {
return true;
}
}
}
updateThreadId(message.getThread());
......@@ -246,30 +247,24 @@ public class RoomChat extends AbstractChat {
RosterManager.getInstance().onContactChanged(account, user);
} else {
boolean changed = false;
if (oldOccupant.getAffiliation() != newOccupant
.getAffiliation()) {
if (oldOccupant.getAffiliation() != newOccupant.getAffiliation()) {
changed = true;
onAffiliationChanged(resource,
newOccupant.getAffiliation());
onAffiliationChanged(resource, newOccupant.getAffiliation());
}
if (oldOccupant.getRole() != newOccupant.getRole()) {
changed = true;
onRoleChanged(resource, newOccupant.getRole());
}
if (oldOccupant.getStatusMode() != newOccupant
.getStatusMode()
|| !oldOccupant.getStatusText().equals(
newOccupant.getStatusText())) {
if (oldOccupant.getStatusMode() != newOccupant.getStatusMode()
|| !oldOccupant.getStatusText().equals(newOccupant.getStatusText())) {
changed = true;
onStatusChanged(resource, newOccupant.getStatusMode(),
newOccupant.getStatusText());
onStatusChanged(resource, newOccupant.getStatusMode(), newOccupant.getStatusText());
}
if (changed) {
RosterManager.getInstance().onContactChanged(account, user);
}
if (changed)
RosterManager.getInstance().onContactChanged(account,
user);
}
} else if (presence.getType() == Presence.Type.unavailable
&& state == RoomState.available) {
} else if (presence.getType() == Presence.Type.unavailable && state == RoomState.available) {
occupants.remove(stringPrep);
MUCUser mucUser = MUC.getMUCUserExtension(presence);
if (mucUser != null && mucUser.getStatus() != null) {
......@@ -280,8 +275,9 @@ public class RoomChat extends AbstractChat {
onBan(resource, mucUser.getItem().getActor());
} else if ("303".equals(code)) {
String newNick = mucUser.getItem().getNick();
if (newNick == null)
if (newNick == null) {
return true;
}
onRename(resource, newNick);
Occupant occupant = createOccupant(newNick, presence);
occupants.put(Jid.getStringPrep(newNick), occupant);
......@@ -305,7 +301,6 @@ public class RoomChat extends AbstractChat {
}
/**
* @param resource
* @return Whether resource is own nickname.
*/
private boolean isSelf(String resource) {
......@@ -314,9 +309,6 @@ public class RoomChat extends AbstractChat {
/**
* Informs that the invitee has declined the invitation.
*
* @param from
* @param reason
*/
private void onInvitationDeclined(String from, String reason) {
// TODO
......@@ -324,38 +316,35 @@ public class RoomChat extends AbstractChat {
/**
* A occupant becomes available.
*
* @param resource
*/
private void onAvailable(String resource) {
if (isSelf(resource)) {
setState(RoomState.available);
if (isRequested()) {
if (showStatusChange())
newMessage(
resource,
Application.getInstance().getString(
if (showStatusChange()) {
newMessage(resource, Application.getInstance().getString(
R.string.action_join_complete_to, user),
ChatAction.complete, null, true, true, false,
false, true);
ChatAction.complete, null, true, true, false, false, true);
}
active = true;
setRequested(false);
} else {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, null, ChatAction.complete);
}
}
} else {
if (state == RoomState.available)
if (showStatusChange())
if (state == RoomState.available) {
if (showStatusChange()) {
newAction(resource, null, ChatAction.join);
}
}
}
}
/**
* Warning: this method should be placed with packet provider.
*
* @param resource
* @param presence
* @return New occupant based on presence information.
*/
private Occupant createOccupant(String resource, Presence presence) {
......@@ -382,8 +371,9 @@ public class RoomChat extends AbstractChat {
statusText = presence.getStatus();
}
}
if (statusText == null)
if (statusText == null) {
statusText = "";
}
occupant.setJid(jid);
occupant.setAffiliation(affiliation);
occupant.setRole(role);
......@@ -398,18 +388,16 @@ public class RoomChat extends AbstractChat {
private void onRoleChanged(String resource, Role role) {
}
private void onStatusChanged(String resource, StatusMode statusMode,
String statusText) {
private void onStatusChanged(String resource, StatusMode statusMode, String statusText) {
}
/**
* A occupant leaves room.
*
* @param resource
*/
private void onLeave(String resource) {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, null, ChatAction.leave);
}
if (isSelf(resource)) {
setState(RoomState.waiting);
RosterManager.getInstance().onContactChanged(account, user);
......@@ -419,65 +407,66 @@ public class RoomChat extends AbstractChat {
/**
* A occupant was kicked.
*
* @param resource
* @param actor
*/
private void onKick(String resource, String actor) {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, actor, ChatAction.kick);
if (isSelf(resource))
}
if (isSelf(resource)) {
MUCManager.getInstance().leaveRoom(account, user);
}
}
/**
* A occupant was banned.
*
* @param resource
* @param actor
*/
private void onBan(String resource, String actor) {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, actor, ChatAction.ban);
if (isSelf(resource))
}
if (isSelf(resource)) {
MUCManager.getInstance().leaveRoom(account, user);
}
}
/**
* A occupant has changed his nickname in the room.
*
* @param resource
* @param newNick
*/
private void onRename(String resource, String newNick) {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, newNick, ChatAction.nickname);
}
}
/**
* A user's membership was revoked from the room
*
* @param resource
* @param actor
*/
private void onRevoke(String resource, String actor) {
if (showStatusChange())
if (showStatusChange()) {
newAction(resource, actor, ChatAction.kick);
if (isSelf(resource))
}
if (isSelf(resource)) {
MUCManager.getInstance().leaveRoom(account, user);
}
}
@Override
protected void onComplete() {
super.onComplete();
if (getState() == RoomState.waiting)
if (getState() == RoomState.waiting) {
MUCManager.getInstance().joinRoom(account, user, false);
}
}
@Override
protected void onDisconnect() {
super.onDisconnect();
if (state != RoomState.unavailable)
if (state != RoomState.unavailable) {
setState(RoomState.waiting);
}
}
}
\ No newline at end of file
......@@ -46,8 +46,7 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
*/
private final String password;
public RoomInvite(String account, String user, String inviter,
String reason, String password) {
public RoomInvite(String account, String user, String inviter, String reason, String password) {
super(account, user);
this.inviter = inviter;
this.reason = reason == null ? "" : reason;
......@@ -73,18 +72,17 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
* @return Text for the confirmation.
*/
public String getConfirmation() {
String accountName = AccountManager.getInstance().getVerboseName(
account);
String inviterName = RosterManager.getInstance().getName(account,
inviter);
if (reason == null || "".equals(reason))
String accountName = AccountManager.getInstance().getVerboseName(account);
String inviterName = RosterManager.getInstance().getName(account, inviter);
if (reason == null || "".equals(reason)) {
return Application.getInstance()
.getString(R.string.muc_invite_confirm, accountName,
inviterName, user);
else
} else {
return Application.getInstance().getString(
R.string.muc_invite_confirm_reason, accountName,
inviterName, user, reason);
}
}
public String getInviter() {
......
......@@ -62,29 +62,40 @@ public enum RoomState {
* @return Status mode used in contact list.
*/
StatusMode toStatusMode() {
if (this == RoomState.available)
return StatusMode.available;
else if (this == RoomState.occupation)
return StatusMode.connection;
else if (this == RoomState.joining)
return StatusMode.connection;
else if (this == RoomState.creating)
return StatusMode.connection;
else if (this == RoomState.unavailable)
return StatusMode.unavailable;
else if (this == RoomState.waiting)
return StatusMode.connection;
else if (this == RoomState.error)
return StatusMode.unsubscribed;
else
throw new IllegalStateException();
switch (this) {
case available:
return StatusMode.available;
case occupation:
case joining:
case creating:
case waiting:
return StatusMode.connection;
case unavailable:
return StatusMode.unavailable;
case error:
return StatusMode.unsubscribed;
default:
throw new IllegalStateException();
}
}
/**
* @return Connected is establish or connection is in progress.
*/
boolean inUse() {
return this == RoomState.available || this == RoomState.occupation
|| this == RoomState.creating || this == RoomState.joining;
switch (this) {
case available:
case occupation:
case joining:
case creating:
return true;
case unavailable:
case waiting:
case error:
default:
return false;
}
}
}
......@@ -56,9 +56,8 @@ class RoomTable extends AbstractAccountTable {
}
private static final String NAME = "rooms";
private static final String[] PROJECTION = new String[]{Fields._ID,
Fields.ACCOUNT, Fields.ROOM, Fields.NICKNAME, Fields.PASSWORD,
Fields.NEED_JOIN,};
private static final String[] PROJECTION = new String[]{ Fields._ID,
Fields.ACCOUNT, Fields.ROOM, Fields.NICKNAME, Fields.PASSWORD, Fields.NEED_JOIN };
private final DatabaseManager databaseManager;
private SQLiteStatement writeStatement;
......@@ -123,20 +122,12 @@ class RoomTable extends AbstractAccountTable {
/**
* Adds or updates room.
*
* @param account
* @param room
* @param nickname
* @param password
* @param join
*/
void write(String account, String room, String nickname, String password,
boolean join) {
void write(String account, String room, String nickname, String password, boolean join) {
synchronized (writeLock) {
if (writeStatement == null) {
SQLiteDatabase db = databaseManager.getWritableDatabase();
writeStatement = db
.compileStatement("INSERT OR REPLACE INTO " + NAME
writeStatement = db.compileStatement("INSERT OR REPLACE INTO " + NAME
+ " (" + Fields.ACCOUNT + ", " + Fields.ROOM
+ ", " + Fields.NICKNAME + ", "
+ Fields.PASSWORD + ", " + Fields.NEED_JOIN
......@@ -153,14 +144,10 @@ class RoomTable extends AbstractAccountTable {
/**
* Removes room.
*
* @param account
* @param room
*/
void remove(String account, String room) {
SQLiteDatabase db = databaseManager.getWritableDatabase();
db.delete(NAME, Fields.ACCOUNT + " = ? AND " + Fields.ROOM + " = ?",
new String[]{account, room});
db.delete(NAME, Fields.ACCOUNT + " = ? AND " + Fields.ROOM + " = ?", new String[]{account, room});
}
@Override
......
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