Package aleksandar.djuric.offline

Source Code of aleksandar.djuric.offline.OfflineDataManager

package aleksandar.djuric.offline;

import java.awt.Color;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.LinkedList;

import aleksandar.djuric.common.TimeManagement;
import aleksandar.djuric.entities.Attribute;
import aleksandar.djuric.entities.Player;
import aleksandar.djuric.entities.Team;
import aleksandar.djuric.gui.ColorPane;

public class OfflineDataManager {
 
  private static String myleague;
 
  public static LinkedList<Team> load(ColorPane display){
    File dir = new File(".");
    String[] dirs = dir.list();
    dir = null;
    for (int i = 0; i < dirs.length; i++) {
      if(dirs[i].contains("League") || dirs[i].contains("Division"))
      {
        dir = new File(dirs[i]);
        myleague = dirs[i];
        break;
      }
    }
    LinkedList<Team> teams = new LinkedList<Team>();
    if(dir == null)
      return null;
    Team team = null;
    Player player = null;
    dirs = dir.list();
    File file = null;
    BufferedReader in = null;
    for (int i = 0; i < dirs.length; i++)
    {
      try
      {
        file = new File(dir + "/" + dirs[i]);
        in = new BufferedReader(
            new InputStreamReader(
            new FileInputStream(file), "UTF-8"));
        String[] array = null;
        String tmp = in.readLine();
        team = new Team(tmp, Integer.parseInt(in.readLine()));
        while((tmp = in.readLine()) != null)
        {
          if(tmp.equals(""))
            continue;
          else if(tmp.contains("Player"))
          {
            array = tmp.split("[ \t]+");
            player = new Player();
            player.setId(Integer.parseInt(
                array[array.length - 1]));
            StringBuilder s = new StringBuilder();
            for (int j = 1; j < array.length - 1; j++) {
              s.append(array[j]);
              if(j != array.length - 2)
                s.append(" ");
            }
            player.setName(s.toString());
            try
            {
              tmp = in.readLine();
              array = tmp.split(",");
              if(array[0].equals("My Character"))
              {
                player.setMyChar(true);
                if(array.length > 1)
                  player.setLastOnline(
                    TimeManagement.getTM().getDate(
                        array[1]));
                if(array.length > 2)
                  TimeManagement.getTM().setNextTrainingDate(
                      array[2]);
              }
              else
              {
                player.setMyChar(false);
                player.setLastOnline(
                    TimeManagement.getTM().getDate(
                        array[0]));
              }
              tmp = in.readLine();
              array = tmp.split("birthDate[ \t]+");
              player.setBirthDate(array[1]);
             
              tmp = in.readLine();
              array = tmp.split("userName[ \t]+");
              player.setUserName(array[1]);
             
              tmp = in.readLine();
              array = tmp.split("age[ \t]+");
              player.setAge(Integer.parseInt(array[1]));
             
              tmp = in.readLine();
              array = tmp.split("position[ \t]+");
              player.setPosition(array[1]);
             
              tmp = in.readLine();
              array = tmp.split("aPosition[ \t]+");
              player.setaPosition(array[1]);
             
              tmp = in.readLine();
              array = tmp.split("value[ \t]+");
              player.setValue(Double.parseDouble(array[1]));
             
              tmp = in.readLine();
              array = tmp.split("number[ \t]+");
              player.setNumber(Integer.parseInt(array[1]));
              Attribute[] attribs =
                new Attribute[Player.attribNames.length];
              for (int j = 0; j < attribs.length; j++)
              {
                tmp = in.readLine();
                if(tmp.startsWith("-"))
                {
                  j -= 1;
                  continue;
                }
                String tmp1 = tmp.substring(
                    tmp.indexOf("(") + 1,
                    tmp.indexOf(")"));
                try
                {
                  attribs[j] = new Attribute(
                      Double.parseDouble(tmp1));
                }
                catch(NumberFormatException e)
                {
                  attribs[j] = new Attribute(
                      tmp.substring(
                          tmp.lastIndexOf("  ") + 2,
                          tmp.lastIndexOf(" ")));
                }
              }
              player.setAttribs(attribs);
             
              in.readLine();
              tmp = in.readLine();
              String[] sAbility = null;
              if(tmp.equals("special abilities"))
              {
                while(!(tmp = in.readLine()).equals(""))
                {
                  sAbility = tmp.split("_");
                  player.addSpecialAbility(sAbility[0],
                      Integer.parseInt(sAbility[1]));
                }
              }
            }
            catch(ArrayIndexOutOfBoundsException e)
            {
              display.append(Color.RED,
                  " Invalid player data. - "
                  + player.getName()
                  + "\n"
                  + team.getName()
                  + "\n");
            }
            catch(NumberFormatException e)
            {
              display.append(Color.RED,
                  " Invalid player data. - "
                  + player.getName()
                  + "\n"
                  + team.getName()
                  + "\n");
            }
            catch(StringIndexOutOfBoundsException e)
            {
              display.append(Color.RED,
                  " Invalid player data. - "
                  + player.getName()
                  + "\n"
                  + team.getName()
                  + "\n");
            }
           
            team.addPlayer(player);
          }       
        }
        in.close();
        teams.add(team);
      }
      catch (FileNotFoundException e) {
        e.printStackTrace();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      catch (NumberFormatException e)
      {
        e.printStackTrace();
      }
    }
    return teams;
  }
 
  public static String getMyleague() {
    return myleague;
  }

  public static void setMyleague(String myleague) {
    OfflineDataManager.myleague = myleague;
  }

  public static void write(LinkedList<Team> teams)
  {
    File dir = new File(getMyleague());
    if(!dir.exists())
    {
      dir.mkdir();
    }
    else
    {
      File[] filenames = dir.listFiles();
      for (int i = 0; i < filenames.length; i++) {
        filenames[i].delete();
      }
    }
    if(teams != null)
      for (int i = 0; i < teams.size(); i++) {
        write(teams.get(i));
      }
  }
 
  public static void write(Team team)
  {
    PrintWriter out;
    try {
      out = new PrintWriter(new File(getMyleague()
          + "/" + team.getName() + ".txt"), "UTF-8");
      out.println(team.getName());
      out.println(team.getId());
      out.println();
      if(team.getNPlayers() != 0)
      {
        for (int j = 0; j < team.getNPlayers(); j++) {
          Player curPlayer = team.getPlayer(j);
          out.println(curPlayer.toStringFull());
          out.println();
          out.println("--------------------------" +
                "------------------------------");
          out.println();
        }
      }
      out.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }
 
  public static void write(String stats)
  {
    PrintWriter out;
    try {
      out = new PrintWriter(new File("stats.txt"), "UTF-8");
      out.println(stats);
      out.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }
 
  public static void main(String[] args) {
    LinkedList<Team> teams = OfflineDataManager.load(new ColorPane());
    System.out.println(teams);
    for (int i = 0; i < teams.size(); i++) {
      System.out.println(Arrays.toString(teams.get(i).getPlayerNames()));
    }
  }
 
 

}
TOP

Related Classes of aleksandar.djuric.offline.OfflineDataManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.