[trunk] New mechanism for upgrading config files. This will be extended in the future.

New worth.yml autogenerated from the previous values.

git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1215 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
snowleo 2011-04-16 13:36:09 +00:00
parent aaae6264cb
commit d311fc126f
3 changed files with 274 additions and 171 deletions

View File

@ -51,7 +51,6 @@ public class Essentials extends JavaPlugin
public Essentials() throws IOException
{
loadClasses();
}
public static void ensureEnabled(Server server)
@ -62,10 +61,6 @@ public class Essentials extends JavaPlugin
pm.enablePlugin(ess);
}
public static void loadClasses()
{
}
public static Essentials getStatic()
{
return staticThis;
@ -100,6 +95,7 @@ public class Essentials extends JavaPlugin
public void onEnable()
{
setStatic();
new EssentialsUpgrade(this.getDescription().getVersion(), this.getDataFolder());
confList = new ArrayList<IConf>();
settings = new Settings(this.getDataFolder());
confList.add(settings);

View File

@ -0,0 +1,74 @@
package com.earth2me.essentials;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class EssentialsUpgrade {
private static boolean alreadyRun = false;
private final static Logger logger = Logger.getLogger("Minecraft");
EssentialsUpgrade(String version, File dataFolder) {
if (alreadyRun == true) return;
alreadyRun = true;
moveWorthValuesToWorthYml(dataFolder);
}
private void moveWorthValuesToWorthYml(File dataFolder) {
try {
File configFile = new File(dataFolder, "config.yml");
EssentialsConf conf = new EssentialsConf(configFile);
conf.load();
Worth w = new Worth(dataFolder);
for (Material mat : Material.values()) {
int id = mat.getId();
double value = conf.getDouble("worth-"+id, Double.NaN);
if (!Double.isNaN(value)) {
w.setPrice(new ItemStack(mat, 1, (short)0, (byte)0), value);
}
}
removeLinesFromConfig(configFile,"\\s*#?\\s*worth-[0-9]+.*", "# Worth values have been moved to worth.yml");
} catch (Throwable e) {
logger.log(Level.WARNING, "Error while upgrading the files", e);
}
}
private void removeLinesFromConfig(File file, String regex, String info) throws Exception {
boolean needUpdate = false;
BufferedReader br = new BufferedReader(new FileReader(file));
File tempFile = File.createTempFile("essentialsupgrade", ".yml");
BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile));
do {
String line = br.readLine();
if (line == null) break;
if (line.matches(regex)) {
if (needUpdate == false && info != null) {
bw.write(info, 0, info.length());
bw.newLine();
}
needUpdate = true;
} else {
if (line.endsWith("\r\n")) {
bw.write(line, 0, line.length() - 2);
} else if (line.endsWith("\r") || line.endsWith("\n")) {
bw.write(line, 0, line.length() - 1);
} else {
bw.write(line, 0, line.length());
}
bw.newLine();
}
} while(true);
br.close();
bw.close();
if (needUpdate) {
file.renameTo(new File(file.getParentFile(), file.getName().concat("."+System.currentTimeMillis()+".upgraded")));
tempFile.renameTo(file);
}
}
}

View File

@ -1,166 +1,199 @@
worth-1: 2
worth-2: 1
worth-3: 1
worth-4: 1
worth-5: 1
worth-6: 2
worth-7: 1000
worth-8: 1
worth-9: 1
worth-10: 1
worth-11: 1
worth-12: 1
worth-13: 1
worth-14: 45
worth-15: 18
worth-16: 15
worth-17: 2
worth-18: 0
worth-19: 80
worth-20: 10
worth-21: 100
worth-22: 500
worth-23: 9
worth-24: 5
worth-25: 40
worth-35: 8
worth-37: 2
worth-38: 2
worth-39: 2
worth-40: 2
worth-41: 400
worth-42: 160
worth-43: 3
worth-44: 3
worth-45: 40
worth-46: 10000
worth-47: 20
worth-48: 90
worth-49: 130
worth-50: 1
worth-53: 8
worth-54: 15
worth-55: 7
worth-56: 200
worth-57: 1500
worth-58: 20
worth-60: 3
worth-61: 10
worth-65: 10
worth-66: 40
worth-67: 22
worth-68: 1
worth-69: 7
worth-70: 10
worth-71: 15
worth-72: 10
worth-73: 30
worth-74: 30
worth-76: 10
worth-77: 7
worth-81: 10
worth-82: 3
worth-83: 15
worth-85: 10
worth-86: 50
worth-91: 60
worth-256: 40
worth-257: 80
worth-258: 60
worth-260: 10
worth-261: 75
worth-262: 10
worth-263: 3
worth-264: 230
worth-265: 20
worth-266: 50
worth-267: 60
worth-268: 10
worth-269: 10
worth-270: 10
worth-271: 10
worth-272: 40
worth-273: 40
worth-274: 40
worth-275: 40
worth-276: 700
worth-277: 350
worth-278: 1000
worth-279: 1000
worth-280: 1
worth-281: 6
worth-282: 30
worth-283: 200
worth-284: 220
worth-285: 300
worth-286: 300
worth-287: 5
worth-288: 3
worth-289: 19
worth-290: 10
worth-291: 40
worth-292: 60
worth-293: 600
worth-294: 200
worth-295: 5
worth-296: 9
worth-297: 20
worth-298: 20
worth-299: 40
worth-300: 20
worth-301: 17
worth-302: 40
worth-303: 40
worth-304: 50
worth-305: 30
worth-306: 120
worth-307: 300
worth-308: 250
worth-309: 50
worth-310: 1500
worth-311: 3000
worth-312: 2200
worth-313: 1500
worth-314: 300
worth-315: 600
worth-316: 400
worth-317: 250
worth-320: 6
worth-321: 50
worth-322: 500
worth-323: 10
worth-324: 30
worth-325: 10
worth-326: 10
worth-327: 30
worth-328: 20
worth-329: 100
worth-330: 35
worth-331: 1
worth-332: 1
worth-333: 5
worth-334: 10
worth-335: 15
worth-336: 10
worth-337: 8
worth-338: 10
worth-339: 30
worth-340: 35
worth-341: 50
worth-342: 35
worth-343: 30
worth-344: 1
worth-345: 50
worth-346: 25
worth-347: 100
worth-348: 11
worth-349: 5
worth-350: 20
worth-351: 10
worth-352: 10
worth-353: 5
worth-354: 100
worth-355: 25
worth-356: 10
worth-2256: 950
worth-2257: 1000
worth:
stonebutton:
'0': 7.0
wood: 1.0
arrow: 10.0
diamondpickaxe: 1000.0
rawfish: 5.0
minecart: 20.0
leatherchestplate: 40.0
storageminecart: 35.0
leaves:
'0': 0.0
feather: 3.0
goldchestplate: 600.0
mushroomsoup: 30.0
bread: 20.0
stationarywater:
'0': 1.0
workbench: 20.0
stonehoe: 40.0
brownmushroom: 2.0
wool:
'0': 8.0
mossycobblestone: 90.0
diamondhoe: 600.0
woodsword: 10.0
torch:
'0': 1.0
grass: 1.0
poweredminecart: 30.0
snowball: 1.0
goldenapple: 500.0
leatherleggings: 20.0
log:
'0': 2.0
diamondaxe: 1000.0
slimeball: 50.0
fence: 10.0
stonespade: 40.0
claybrick: 10.0
noteblock: 40.0
ironaxe: 60.0
coalore: 15.0
clayball: 8.0
fishingrod: 25.0
ironhoe: 60.0
goldrecord: 950.0
ironpickaxe: 80.0
irondoor: 35.0
bucket: 10.0
redrose: 2.0
grilledpork: 6.0
gravel: 1.0
wooddoor: 30.0
chainmailhelmet: 40.0
ironchestplate: 300.0
diamondblock: 1500.0
diamondhelmet: 1500.0
goldhelmet: 300.0
redstonetorchon:
'0': 10.0
ironspade: 40.0
furnace:
'0': 10.0
ironsword: 60.0
dispenser:
'0': 9.0
woodaxe: 10.0
seeds: 5.0
painting: 50.0
woodplate:
'0': 10.0
redstoneore: 30.0
diamondspade: 350.0
waterbucket: 10.0
water:
'0': 1.0
bedrock: 1000.0
irondoorblock:
'0': 15.0
goldhoe: 200.0
sand: 1.0
goldsword: 200.0
stoneaxe: 40.0
bookshelf: 20.0
ironblock: 160.0
jackolantern:
'0': 60.0
boat: 5.0
diamondchestplate: 3000.0
redstonewire:
'0': 7.0
redmushroom: 2.0
string: 5.0
stoneplate:
'0': 10.0
wallsign:
'0': 1.0
cactus:
'0': 10.0
sulphur: 19.0
rails:
'0': 40.0
ironore: 18.0
leatherhelmet: 20.0
stone: 2.0
egg: 1.0
diamondore: 200.0
woodhoe: 10.0
goldleggings: 400.0
chainmailleggings: 50.0
yellowflower: 2.0
ironhelmet: 120.0
obsidian: 130.0
dirt: 1.0
leather: 10.0
leatherboots: 17.0
lever:
'0': 7.0
cobblestone: 1.0
cake: 100.0
woodstairs:
'0': 8.0
ironingot: 20.0
goldore: 45.0
pumpkin:
'0': 50.0
bed: 25.0
watch: 100.0
ironleggings: 250.0
sign: 10.0
doublestep:
'0': 3.0
woodpickaxe: 10.0
stonepickaxe: 40.0
chainmailboots: 30.0
diamondleggings: 2200.0
cookedfish: 20.0
saddle: 100.0
cobblestonestairs:
'0': 22.0
tnt: 10000.0
glowingredstoneore: 30.0
apple: 10.0
woodspade: 10.0
goldingot: 50.0
diode: 10.0
soil:
'0': 3.0
clay: 3.0
goldblock: 400.0
stick: 1.0
paper: 30.0
brick: 40.0
stationarylava:
'0': 1.0
chest: 15.0
sandstone: 5.0
goldpickaxe: 300.0
compass: 50.0
sugarcane: 10.0
diamondsword: 700.0
goldboots: 250.0
sponge: 80.0
stonesword: 40.0
coal:
'0': 3.0
goldaxe: 300.0
bone: 10.0
diamond: 230.0
glass: 10.0
goldspade: 220.0
lapisblock: 500.0
lavabucket: 30.0
wheat: 9.0
ladder:
'0': 10.0
sugarcaneblock:
'0': 15.0
bowl: 6.0
chainmailchestplate: 40.0
sapling:
'0': 2.0
diamondboots: 1500.0
lapisore: 100.0
lava:
'0': 1.0
milkbucket: 15.0
redstone: 1.0
greenrecord: 1000.0
inksack:
'0': 10.0
glowstonedust: 11.0
book: 35.0
bow: 75.0
ironboots: 50.0
step:
'0': 3.0
sugar: 5.0