package edu.washington.cs.oneswarm.ui.gwt.server; import org.bouncycastle.util.encoders.Base64; import org.gudy.azureus2.core3.util.Base32; import edu.washington.cs.oneswarm.f2f.FriendInvitation; import edu.washington.cs.oneswarm.ui.gwt.rpc.FriendInvitationLite; import edu.washington.cs.oneswarm.ui.gwt.rpc.OneSwarmConstants.SecurityLevel; public class FriendInvitationLiteFactory { public static FriendInvitationLite createFriendInvitationLite(FriendInvitation i) { FriendInvitationLite il = new FriendInvitationLite(); il.setCreatedDate(i.getCreatedDate()); il.setHasChanged(il.isHasChanged()); il.setKey(Base32.encode(i.getKey())); if (i.getLastConnectIp() != null) { il.setLastConnectIp(i.getLastConnectIp()); } il.setMaxAge(i.getMaxAge()); il.setName(i.getName()); if (i.getRemotePublicKey() != null) { il.setRemotePublicKey(new String(Base64.encode(i.getRemotePublicKey()))); } il.setSecurityLevel(SecurityLevel.fromCode(i.getSecurityLevel())); il.setStatusText(i.getStatus().getDisplayString()); il.setCreatedLocally(i.isCreatedLocally()); return il; } public static FriendInvitation createFriendInvitation(FriendInvitationLite il) throws Exception { byte[] key = Base32.decode(il.getKey()); if (key.length != FriendInvitation.INV_KEY_LENGTH) { throw new Exception("wrong key length (" + key.length + "!=" + FriendInvitation.INV_KEY_LENGTH + ")"); } FriendInvitation i = new FriendInvitation(key); i.setName(il.getName()); i.setMaxAge(il.getMaxAge()); i.setCanSeeFileList(il.isCanSeeFileList()); i.setSecurityLevel(il.getSecurityLevel().getLevel()); i.setCreatedDate(il.getCreatedDate()); if (il.getLastConnectIp() != null) { i.setLastConnectIp(il.getLastConnectIp()); } if (il.getRemotePublicKey() != null) { i.setRemotePublicKey(Base64.decode(il.getRemotePublicKey())); } i.setCreatedLocally(il.isCreatedLocally()); return i; } }