Package com.epicsagaonline.bukkit.ChallengeMaps.DAL

Source Code of com.epicsagaonline.bukkit.ChallengeMaps.DAL.MapEntranceData

package com.epicsagaonline.bukkit.ChallengeMaps.DAL;

import java.util.HashMap;
import java.util.HashSet;

import com.epicsagaonline.bukkit.ChallengeMaps.Log;
import com.epicsagaonline.bukkit.ChallengeMaps.Util;
import com.epicsagaonline.bukkit.ChallengeMaps.objects.MapEntrance;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

import org.yaml.snakeyaml.Yaml;

public class MapEntranceData
{

  private static final String DATA_PATH = "data" + File.separator + "entrances.yml";

  private static void Init()
  {
    try
    {
      if (!Current.Plugin.getDataFolder().exists())
      {
        Current.Plugin.getDataFolder().mkdir();
      }
      File file = new File(Current.Plugin.getDataFolder() + File.separator + DATA_PATH);
      if (!file.exists())
      {
        file.createNewFile();
      }
    }
    catch (IOException e)
    {
      Log.Write(e.getMessage());
    }
  }

  public static void SaveMapEntrances()
  {
    Init();
    Save(new File(Current.Plugin.getDataFolder() + File.separator + DATA_PATH));
    //Log.Write("Map Entrances Saved.");
  }

  private static void Save(File file)
  {
    Yaml yaml = new Yaml();
    HashMap<String, Object> root = new HashMap<String, Object>();
    FileOutputStream stream;
    BufferedWriter writer;
    HashSet<String> savedEntrances = new HashSet<String>();

    int count = 1;
    for (String key : Current.MapEntrances.keySet())
    {
      MapEntrance me = Current.MapEntrances.get(key);
      if (me != null)
      {
        if (me.getMap() != null)
        {
          if (!savedEntrances.contains(me.getSignLocation()))
          {
            HashMap<String, Object> newEnt = new HashMap<String, Object>();
            newEnt.put("MapName", me.getMap().getMapName());
            newEnt.put("SignLocation", me.getSignLocation());
            newEnt.put("ChestLocation", me.getChestLocation());
            newEnt.put("HighScores", me.getHighScores());
            root.put("Entrance" + count, newEnt);
            savedEntrances.add(me.getSignLocation());
            count++;
          }
        }
      }
    }

    try
    {
      stream = new FileOutputStream(file);
      stream.getChannel().truncate(0);
      writer = new BufferedWriter(new OutputStreamWriter(stream));
      try
      {
        writer.write(yaml.dump(root));
      }
      finally
      {
        writer.close();
      }
    }
    catch (IOException e)
    {
      Log.Write(e.getMessage());
    }
  }

  public static void LoadMapEntrances()
  {
    Init();
    Load(new File(Current.Plugin.getDataFolder() + File.separator + DATA_PATH));
    if (Current.MapEntrances.size() == 0)
    {
      Log.Write("No Map Entrances Detected!");
    }
    else
    {
      Log.Write((Current.MapEntrances.size() / 2) + " Map Entrance(s) Loaded.");
    }
  }

  @SuppressWarnings("unchecked") private static void Load(File file)
  {

    if (file.exists())
    {
      Yaml yaml = new Yaml();
      HashMap<String, Object> root = new HashMap<String, Object>();
      FileInputStream stream;
      try
      {
        stream = new FileInputStream(file);
        root = (HashMap<String, Object>) yaml.load(stream);
        if (root != null)
        {
          for (String key : root.keySet())
          {
            HashMap<String, Object> data = (HashMap<String, Object>) Util.getObjectValueFromHashSet(key, root);
            if (data != null)
            {
              MapEntrance me = new MapEntrance(data);
              if (me != null)
              {
                Current.MapEntrances.put(me.getSignLocation(), me);
                Current.MapEntrances.put(me.getChestLocation(), me);
              }
            }
          }
        }
      }
      catch (FileNotFoundException e)
      {
        Log.Write(e.getMessage());
      }
    }
  }
}
TOP

Related Classes of com.epicsagaonline.bukkit.ChallengeMaps.DAL.MapEntranceData

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.