package net.amigocraft.GoldBank.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;*/
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import net.amigocraft.GoldBank.GoldBank;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
public class MiscUtils {
public static GoldBank plugin = GoldBank.plugin;
public static boolean isInt(String i){
try {
Integer.parseInt(i);
return true;
}
catch(NumberFormatException nfe){
return false;
}
}
public static boolean isMat(String m){
if (Material.getMaterial(m) != null)
return true;
else
return false;
}
@SuppressWarnings("deprecation")
public static boolean isMat(int m){
//TODO: Magic numbers. Because Bukkit said so.
if (Material.getMaterial(m) != null)
return true;
else
return false;
}
public static boolean isBool(String b){
try {
Boolean.parseBoolean(b);
return true;
}
catch (Exception e){
e.printStackTrace();
return false;
}
}
public static boolean charKeyExists(char[] array, int key){
try {
Character.toString(array[key]);
return true;
}
catch (Exception e){
return false;
}
}
public static Block getAdjacentBlock(Block block, Material material){
BlockFace[] faces = new BlockFace[]{BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST, BlockFace.UP};
for (BlockFace face : faces){
Block adjBlock = block.getRelative(face);
if (adjBlock.getType() == material){
if (face != BlockFace.UP){
@SuppressWarnings("deprecation")
byte data = adjBlock.getData();
byte north = 0x2;
byte south = 0x3;
byte west = 0x4;
byte east = 0x5;
BlockFace attached = null;
if (data == east){
attached = BlockFace.WEST;
}
else if (data == west){
attached = BlockFace.EAST;
}
else if (data == north){
attached = BlockFace.SOUTH;
}
else if (data == south){
attached = BlockFace.NORTH;
}
if (adjBlock.getType() == Material.SIGN_POST){
attached = BlockFace.DOWN;
}
// I had to be a bit creative with the comparison...
if (block.getX() == adjBlock.getRelative(attached).getX() && block.getY() ==
adjBlock.getRelative(attached).getY() && block.getZ() == adjBlock.getRelative(attached).getZ()){
return adjBlock;
}
}
else if (material == Material.SIGN_POST){
return adjBlock;
}
}
}
return null;
}
// read the text file
public static String readFile(String fileName){
File file = new File(fileName);
char[] buffer = null;
try {
BufferedReader bufferedReader = new BufferedReader(
new FileReader(file));
buffer = new char[(int)file.length()];
int i = 0;
int c = bufferedReader.read();
while (c != -1){
buffer[i++] = (char)c;
c = bufferedReader.read();
}
bufferedReader.close();
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
return new String(buffer);
}
// get the number of a day of the week
public static int checkDay(String day){
Map<String,Integer> mp=new HashMap<String,Integer>();
mp.put("Sunday",1);
mp.put("Monday",2);
mp.put("Tuesday",3);
mp.put("Wednesday",4);
mp.put("Thursday",5);
mp.put("Friday",6);
mp.put("Saturday",7);
return mp.get(day).intValue();
}
/*public static boolean colExists(String table, String col){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("org.sqlite.JDBC");
String dbPath = "jdbc:sqlite:" + plugin.getDataFolder() + File.separator + "data.db";
conn = DriverManager.getConnection(dbPath);
st = conn.createStatement();
rs = st.executeQuery("SELECT " + col + " FROM " + table + " LIMIT 1");
return true;
}
catch (Exception e){
return false;
}
finally {
try {
rs.close();
st.close();
conn.close();
}
catch (Exception n){
n.printStackTrace();
}
}
}*/
public String escape(String s){
s = s.replace("'", "''");
return s;
}
public static UUID getSafeUUID(Player player){
return getSafeUUID(player.getName());
}
public static UUID getSafeUUID(String player){
try {
return GoldBank.onlineUUIDs.containsKey(player)
? GoldBank.onlineUUIDs.get(player)
: UUIDFetcher.getUUIDOf(player);
}
catch (Exception ex){
ex.printStackTrace();
}
return null;
}
@SuppressWarnings("deprecation")
public static Player getSafePlayer(UUID uuid){
if (GoldBank.UUID_SUPPORT)
return Bukkit.getPlayer(uuid);
else
try {
return Bukkit.getPlayer(NameFetcher.getUsername(uuid));
}
catch (Exception ex){
ex.printStackTrace();
}
return null;
}
public static String getSafePlayerName(UUID uuid){
if (GoldBank.UUID_SUPPORT)
return Bukkit.getOfflinePlayer(uuid).getName();
else
try {
return NameFetcher.getUsername(uuid);
}
catch (Exception ex){
ex.printStackTrace();
}
return null;
}
}