package im.actor.core.modules.encryption.entity;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import im.actor.runtime.bser.BserObject;
import im.actor.runtime.bser.BserValues;
import im.actor.runtime.bser.BserWriter;
public class UserKeys extends BserObject {
private int uid;
private UserKeysGroup[] userKeysGroups;
public UserKeys(int uid, UserKeysGroup[] userKeysGroups) {
this.uid = uid;
this.userKeysGroups = userKeysGroups;
}
public UserKeys(byte[] data) throws IOException {
load(data);
}
public int getUid() {
return uid;
}
public UserKeysGroup[] getUserKeysGroups() {
return userKeysGroups;
}
public UserKeys addUserKeyGroup(UserKeysGroup keysGroup) {
ArrayList<UserKeysGroup> userKeysGroups = new ArrayList<UserKeysGroup>();
for (UserKeysGroup g : this.userKeysGroups) {
userKeysGroups.add(g);
}
userKeysGroups.add(keysGroup);
return new UserKeys(uid, userKeysGroups.toArray(new UserKeysGroup[userKeysGroups.size()]));
}
public UserKeys removeUserKeyGroup(int keyGroupId) {
ArrayList<UserKeysGroup> userKeysGroups = new ArrayList<UserKeysGroup>();
for (UserKeysGroup g : this.userKeysGroups) {
if (g.getKeyGroupId() != keyGroupId) {
userKeysGroups.add(g);
}
}
return new UserKeys(uid, userKeysGroups.toArray(new UserKeysGroup[userKeysGroups.size()]));
}
@Override
public void parse(BserValues values) throws IOException {
uid = values.getInt(1);
List<byte[]> g = values.getRepeatedBytes(2);
userKeysGroups = new UserKeysGroup[g.size()];
for (int i = 0; i < userKeysGroups.length; i++) {
userKeysGroups[i] = new UserKeysGroup(g.get(i));
}
}
@Override
public void serialize(BserWriter writer) throws IOException {
writer.writeInt(1, uid);
for (UserKeysGroup ukg : userKeysGroups) {
writer.writeObject(2, ukg);
}
}
}