Guest
Public paste!

Untitled

By: a guest | Mar 20th, 2010 | Syntax: None | Size: 3.37 KB | Hits: 68 | Expires: Never
Copy text to clipboard
  1. package com.rs2hd.io;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.BufferedWriter;
  7. import java.io.FileWriter;
  8. import java.util.Date;
  9. import java.text.SimpleDateFormat;
  10.  
  11. import org.apache.mina.common.IoSession;
  12. import com.rs2hd.model.punishHandler;
  13. import com.rs2hd.Main;
  14. import java.util.*;
  15. import com.rs2hd.Constants;
  16. import com.rs2hd.model.Player;
  17. import com.rs2hd.model.PlayerDetails;
  18. import com.rs2hd.model.World;
  19. import com.rs2hd.util.XStreamUtil;
  20. import com.thoughtworks.xstream.XStream;
  21. import com.rs2hd.model.World;
  22. import com.rs2hd.model.PunishHandler;
  23.  
  24. /**
  25.  * XML player loader/saver.
  26.  * @author Graham
  27.  *
  28.  */
  29. public class XStreamPlayerLoader implements PlayerLoader {
  30.  
  31. public static PunishHandler punish = new PunishHandler();
  32.        
  33.         @Override
  34.         public PlayerLoadResult load(PlayerDetails p)
  35.         {
  36.                 XStream xstream = XStreamUtil.getXStream();
  37.                 PlayerLoadResult result = new PlayerLoadResult();
  38.                 result.returnCode = Constants.ReturnCodes.INVALID_PASSWORD;
  39.                 try
  40.                 {
  41.                         Player player = (Player) xstream.fromXML(new FileInputStream("data/savedgames/"+p.getUsername()+".xml"));
  42.                         player.getPlayerDetails().setSession(p.getSession());
  43.                         if(punish.isMuted(player.getUsername()))
  44.                                 player.muted = true;
  45.                         if(punish.isIpMuted(player.getSession()))
  46.                                 punish.writeTo(player.getUsername(), "data/text/mutes");
  47.                         if(punish.isIpBanned(player.getSession()))
  48.                                 punish.writeTo(player.getUsername(), "data/text/bans");
  49.                                 result.returnCode = Constants.ReturnCodes.BANNED;
  50.                         if(punish.isBanned(player.getUsername()))
  51.                                 result.returnCode = Constants.ReturnCodes.BANNED;
  52.                         else
  53.                         {
  54.                                 if(!player.getPlayerDetails().getPassword().equals(p.getPassword()))
  55.                                         result.returnCode = Constants.ReturnCodes.INVALID_PASSWORD;
  56.                                 else
  57.                                 {
  58.                                         if(World.getInstance().isOnline(p.getUsername())) {
  59.                                                 result.returnCode = Constants.ReturnCodes.ALREADY_ONLINE;
  60.                                         }
  61.                                         else
  62.                                         {
  63.                                                 result.player = player;
  64.                                                 result.returnCode = Constants.ReturnCodes.LOGIN_OK;
  65.                                                 //Main.frame.updateList();
  66.                                                 try {
  67.                                                 Date todaysDate = new java.util.Date();
  68.                                                 SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss");
  69.                                                 String formattedDate = formatter.format(todaysDate);
  70.                                                 BufferedWriter login = new BufferedWriter(new FileWriter("data/login/"+player.getUsername()+".txt", true));
  71.                                                 login.write("Successful login on "+formattedDate + " from " +p.getSession().getRemoteAddress().toString().substring(p.getSession().getRemoteAddress().toString().indexOf("/")+1,p.getSession().getRemoteAddress().toString().indexOf(":")));
  72.                                                 login.newLine();
  73.                                                 login.flush();
  74.                                                 login.close();
  75.         } catch (Exception e) {
  76.                 }
  77.                                         }
  78.                                 }
  79.                         }
  80.                 }
  81.                 catch (FileNotFoundException e)
  82.                 {
  83.                         result.returnCode = Constants.ReturnCodes.LOGIN_OK;
  84.                         result.player = new Player(p);
  85.                         result.player = (Player) result.player.readResolve();
  86.                 } catch (Exception e) {
  87.                         // corrupted file
  88.                         result.returnCode = 8;
  89.                 }
  90.                 return result;
  91.         }
  92.        
  93.         @Override
  94.         public boolean save(Player p) {
  95.                 boolean flag = true;
  96.                 try {
  97.                         XStream xstream = XStreamUtil.getXStream();
  98.                         xstream.toXML(p, new FileOutputStream("data/savedgames/"+p.getPlayerDetails().getUsername()+".xml"));
  99.                 } catch(Exception e) {
  100.                         flag = false;
  101.                 }
  102.                 return flag;
  103.         }
  104.        
  105. }