summaryrefslogtreecommitdiffstats
path: root/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfigHolder.java
blob: 4ebbb1260d64689f1dfd45ea62e49de1ebf2cdbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.earth2me.essentials.signs;

import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.storage.AsyncStorageObjectHolder;
import java.io.File;
import java.io.IOException;
import java.util.*;
import org.bukkit.plugin.Plugin;


public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
{
	private final transient Plugin plugin;
	private Set<EssentialsSign> enabledSigns = new HashSet<EssentialsSign>();
	private boolean signsEnabled = false;

	public SignsConfigHolder(final IEssentials ess, final Plugin plugin)
	{
		super(ess, SignsConfig.class);
		this.plugin = plugin;
		onReload();
		acquireReadLock();
		try
		{
			final Map<String, Boolean> signs = getData().getSigns();
			for (Map.Entry<String, Boolean> entry : signs.entrySet())
			{
				if (entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOR") || entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOUR"))
				{
					signsEnabled = true;
					continue;
				}
				final Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH));
				if (sign != null && entry.getValue())
				{
					enabledSigns.add(sign.getSign());
				}
			}
		}
		finally
		{
			unlock();
		}
		acquireWriteLock();
		try
		{
			final Map<String, Boolean> signs = new HashMap<String, Boolean>();
			for (Signs sign : Signs.values())
			{
				signs.put(sign.toString(), enabledSigns.contains(sign.getSign()));
			}
			getData().setSigns(signs);
		}
		finally
		{
			unlock();
		}
	}

	@Override
	public File getStorageFile() throws IOException
	{
		return new File(plugin.getDataFolder(), "config.yml");
	}

	public Set<EssentialsSign> getEnabledSigns()
	{
		return enabledSigns;
	}

	public boolean areSignsDisabled()
	{
		return !signsEnabled;
	}

	@Override
	public void finishRead()
	{
	}

	@Override
	public void finishWrite()
	{
	}
}