From 7d10c522ecc1aedbaf4798de50508869af10c02e Mon Sep 17 00:00:00 2001 From: aPunch Date: Wed, 18 Jan 2012 06:48:47 -0600 Subject: [PATCH] more saving work --- lib/CitizensAPI.jar | Bin 10939 -> 11890 bytes src/net/citizensnpcs/storage/Storage.java | 45 +-- .../storage/database/DatabaseStorage.java | 189 +++++----- .../storage/flatfile/YamlStorage.java | 334 +++++++++++------- 4 files changed, 301 insertions(+), 267 deletions(-) diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index 9db02680e0a8ca8e20d003ab4d2d99705b43bd71..e2b700f3e87f9e2d43d643fef1b0913d765cf8ab 100644 GIT binary patch delta 2509 zcmY+G2{_dGAIHZGW-yq^k!#$>vBnY7LF1^^nn9C{Gm%6>LT-&SM;Noeb!3^ET#<1P zv5v3`8A>b7BDq2ga-}T&N89fH`+T48^Zgvp=lML(_jx|A=lz@AnhX344#Le3+PB*V z6u3G#)qr9+2Dxo;s7{&_4m=n)K9K}eHMx(B=CJj1m-eBFbB($6gt z4-iE6tmV0_oU((Jx+-C!o`$$OX`@OMRnf%UM@NgTj*AE`g>veFj@9qlFw#A zm&1J}@YSsoL0hvs18;WvSFl(TmqeGD%&uB@jkGW$tf<=qL-qb}?)FhkpOewcsV4Dt zrDeo zQ`PrwDQ`Jm>1;d1>bznqkF0LLCrAtRv0ER#Bu1KdrZCXq{LO5w$lA4Kn#)$xQEYu`YS}?hy7!vHuQ# zK1m3Vc>dc5&{J9SO{3i(d=y*Xl+KqmFJoIPxuqi1ywf0tyRqF~Th&TA4%xd4CWoTlbF9-(;AlQ002+$9siy6u=H?{NqBFpehkxcHui{w3yT`d{H1&^b7#qxk zokLjpwxAkF{4bO(^cKNsF9LfjMrS7m@*`mIk#S;4wGKHYcluH-W@$Si_Z4mM4#~GR zFEg+=xxCT$a>7r6HD zs!>vf`kwf%+NilqiDO6e7m4Yw{d4e#hs}&OJs|~zq25gE?A0dO`I+Mj`A>QDMDov= zd%$y=?L0>s@rOs^vUVC`pQsEy!b{o1A{kJrUTdiw$w$Pjhf#7PN|w=rBk9yti=0rV z_Z$7f@WHfq7`?pE{`ts9*ES%c%$m#icdYh06K+QdPuvAdVyg)Ed1UKbM<2wKi2ZFQKvphQv1J3r6zcOLh32PJ`OCs@jS(;v` z-_=MWW2TN06w>lXqhs?&Z>GKWd;e#+;*CzxpC(`1`Hm?k^G&z&Unmmz<*(X=j+Jz# z!bl$jmcZM2QdhwYzU_N|(+W8x;@2)c9|igcIxr4&4w<<8)b-{rhc7!&pc-XD`Vu&L z60tWBqSQ?oI>*#DgJBY$)Vze5nW?KMmUQy?44Iv6RL6Q+9I+Jb?FlsRTZQ$n!lS{t zG@<8`vN1^)UmLS(7gIqb@0G3kkI@tC5=nVovvC|hjIF2JUv!Q{`)hu~=y>;uWHcYAFjQY!5}i5V+&KDf(uBh?lSoh)3M zgPOpl%AMm4j~9NPW=S*SQ&GN-VmZWMp`d5Px78D_{RzKWo4XayuxKR04YN5K+n^Ae&ruQ=gkgL!?o>;l0je1uW+~m`n%!Dev|s**86+r;=p%auMt)q3^8 zisgji^IUXkA5?9nM&W_mbXv?Q!3%{Y?guk&882N82oHJuB)*C!bT@G5LdIsv^zv)2 z7sfZXR`jFdV+1#2w_UsV#d)&7kg%|{5cO+zTT2=k=B|Ksq!;PfQ;bf~SvC)E*}H;^ zu06)1{wb)ilG3Qfz%B$4=B1zNWKdhBaatlzSF9NWZee4Iju)@=1!7mL$S1t}O zHdu6O?Ufca?)cJ4+9%#8i%eaoy1os%Hxkz-I$<7B0QEkRWZ&Z|Uv+v>U8?SrM{?Ap z?pZ95(`m#)7WMjUycY7vY>^2UA?S-|LTAzlWz0|F3|(zYxzmdacQ00RH5K6yn9t+9 zG+Xzw*3Fm)xo!quxbLvzZk8v;UZ9BvGZH)Es97PWozj;`WS;2UB#$(sVxu2S(F;>n zA0N1;+f{Wwet35Fs_v%JF;$DK6oW4UXEFJEf`wpAzQSkkQ`aUn%aZeT7vQG`9tGF; z+}Spb=%N_*y4sIwie9-}H0R&P6hLzFKZ{h)%R22t$l%>Fs(LK;e=Ggphndrm6;)C-6c|1{mQKKoUT#s4g(4iU3l?5b%B7vu{PQ;*y+# zD$ph-{I%GiCIvQ?`j+AYqSavlzq%<{1@(WaBVcK{uVeN(+$t@s`QNYn4Yu!y{r8}6 v(=_D&ZR7wPz-qwdzb7FGbmY4RMTKt-a^h!jJiPlg8O}My2Lc^b*^mAQNx*Bp delta 1630 zcmZXUdozwcT{PSA$Yx0IM=n$z565mcd zJ`bh`aPWDigW!rJyiQ9}2U0f$b=#rnE(w&xt+(0onaZ7nQaq zKQC_NY1qb|cV=?T8trdGyvXsqAv?o&N8 z%e;Gds-VQaaL>HWVcx)Gu(I6*NoUh=sbdIgDb#N+JF4fXmn)>>`gj_T{B?CMvdK-- z7N|(`TT6OoFZqWeIiCN>IpcC4C$<^#b8lJk-bU6+1jKSXL_#85RziXT8meNz79AMq zXrRn3^h#j92|}z}9=5lUVW)58^Lr)p9UKke?= zOUY>)gb|*??fqy!i~QQIC0=reQUl(C?OV<2BtPxoDBLVDIaCVCWVX zvU+aHWGMA@Usmc3umajl#V3a%2S(Kw@(%j&557}=;t*Z!XQ~JrG8`;!R$p$|eK9$6 zLe)Dp<F-E>&deXa8!XJKa>iAczsDAaqM&yBPuA4W8f9*}Kde; z>lkk&<4)udH1)(?s7QLGvpLqDV zkBwU$@7i0tldy2a{-$Nb3zsunTs~QoVse=G_ALD+Ze^83rbd5^mK!e3S!I9 z1pR$PY1z`DfT~&A*t&t`N-T|yt%a|SUs#Z^vQm$9F_ zdh%mvL4h)6*jp6B8nQFcq`gEw0ej;TH>>S)d#*}S&3L4g%^tSZcJAi_rv-q1XSy?V zx?cYB41G+>!yk0(Ew}Oa#96`*Z0l>8tf#UufiuoXCs|6Wd6C00J|c!Mr52W!Ig)+= z*~i*aWx&5eG}>`x~vZu?03teXNCpG_HIOuTatvt$^Inn z`S|PwQQ*Bw7tEM9^|%Ko>z$ULNLb<$;3_PdPuVrUF3+G#0tm=Y)q!}tnb>t;0KOJ1 z)rQw;YHt8Qj;=cBsH+N|RFnb3e=1clQ;z^>$o;6~ zz*l+}z|9RmB0~HM2i*xMAR6|I$RbdHM8#imrxN@-1tp?@emIz@q7G7tWT0C~JQBe& zA^`|SfK)XdaDiwHa5jraGRP#6foc`;NC68`NbnVj0A#3&qZRmx00;Fn;IQvX7hhG0 zC(+`s&|;y~As`1B9RCcQ^<03!c+QV*lsH-{2y(AMiI-q7~5+Xo)4UK>3>A GsDA;Y`nZ4q diff --git a/src/net/citizensnpcs/storage/Storage.java b/src/net/citizensnpcs/storage/Storage.java index 1aede3fd4..018f3f080 100644 --- a/src/net/citizensnpcs/storage/Storage.java +++ b/src/net/citizensnpcs/storage/Storage.java @@ -1,7 +1,6 @@ package net.citizensnpcs.storage; -import java.util.Collection; -import java.util.List; +import net.citizensnpcs.api.DataKey; public interface Storage { @@ -9,45 +8,5 @@ public interface Storage { public void save(); - public void removeKey(String key); - - public String getString(String key); - - public String getString(String key, String value); - - public void setString(String key, String value); - - public int getInt(String key); - - public int getInt(String key, int value); - - public void setInt(String key, int value); - - public double getDouble(String key); - - public double getDouble(String key, double value); - - public void setDouble(String key, double value); - - public long getLong(String key); - - public long getLong(String key, long value); - - public void setLong(String key, long value); - - public boolean getBoolean(String key); - - public boolean getBoolean(String key, boolean value); - - public void setBoolean(String key, boolean value); - - public Object getRaw(String string); - - public void setRaw(String path, Object value); - - public boolean keyExists(String path); - - public Collection getKeys(String string); - - public List getIntegerKeys(String string); + public DataKey getKey(String root); } \ No newline at end of file diff --git a/src/net/citizensnpcs/storage/database/DatabaseStorage.java b/src/net/citizensnpcs/storage/database/DatabaseStorage.java index 0d5a4bfe2..0b5fd7cfc 100644 --- a/src/net/citizensnpcs/storage/database/DatabaseStorage.java +++ b/src/net/citizensnpcs/storage/database/DatabaseStorage.java @@ -1,8 +1,8 @@ package net.citizensnpcs.storage.database; -import java.util.Collection; import java.util.List; +import net.citizensnpcs.api.DataKey; import net.citizensnpcs.storage.Storage; public class DatabaseStorage implements Storage { @@ -20,128 +20,125 @@ public class DatabaseStorage implements Storage { } @Override - public void removeKey(String key) { - // TODO Auto-generated method stub - - } - - @Override - public String getString(String key) { + public DataKey getKey(String root) { // TODO Auto-generated method stub return null; } - @Override - public String getString(String key, String value) { - // TODO Auto-generated method stub - return null; - } + public class DatabaseKey extends DataKey { - @Override - public void setString(String key, String value) { - // TODO Auto-generated method stub + @Override + public void copy(String to) { + // TODO Auto-generated method stub - } + } - @Override - public int getInt(String key) { - // TODO Auto-generated method stub - return 0; - } + @Override + public boolean getBoolean(String key) { + // TODO Auto-generated method stub + return false; + } - @Override - public int getInt(String key, int value) { - // TODO Auto-generated method stub - return 0; - } + @Override + public double getDouble(String key) { + // TODO Auto-generated method stub + return 0; + } - @Override - public void setInt(String key, int value) { - // TODO Auto-generated method stub + @Override + public int getInt(String key) { + // TODO Auto-generated method stub + return 0; + } - } + @Override + public List getIntegerSubKeys() { + // TODO Auto-generated method stub + return null; + } - @Override - public double getDouble(String key) { - // TODO Auto-generated method stub - return 0; - } + @Override + public long getLong(String key) { + // TODO Auto-generated method stub + return 0; + } - @Override - public double getDouble(String key, double value) { - // TODO Auto-generated method stub - return 0; - } + @Override + public DataKey getRelative(String relative) { + // TODO Auto-generated method stub + return null; + } - @Override - public void setDouble(String key, double value) { - // TODO Auto-generated method stub + @Override + public String getString(String key) { + // TODO Auto-generated method stub + return null; + } - } + @Override + public Iterable getSubKeys() { + // TODO Auto-generated method stub + return null; + } - @Override - public long getLong(String key) { - // TODO Auto-generated method stub - return 0; - } + @Override + public boolean keyExists(String key) { + // TODO Auto-generated method stub + return false; + } - @Override - public long getLong(String key, long value) { - // TODO Auto-generated method stub - return 0; - } + @Override + public String name() { + // TODO Auto-generated method stub + return null; + } - @Override - public void setLong(String key, long value) { - // TODO Auto-generated method stub + @Override + public void removeKey(String key) { + // TODO Auto-generated method stub - } + } - @Override - public boolean getBoolean(String key) { - // TODO Auto-generated method stub - return false; - } + @Override + public void setBoolean(String key, boolean value) { + // TODO Auto-generated method stub - @Override - public boolean getBoolean(String key, boolean value) { - // TODO Auto-generated method stub - return false; - } + } - @Override - public void setBoolean(String key, boolean value) { - // TODO Auto-generated method stub + @Override + public void setDouble(String key, double value) { + // TODO Auto-generated method stub - } + } - @Override - public Object getRaw(String string) { - // TODO Auto-generated method stub - return null; - } + @Override + public void setInt(String key, int value) { + // TODO Auto-generated method stub - @Override - public void setRaw(String path, Object value) { - // TODO Auto-generated method stub + } - } + @Override + public void setLong(String key, long value) { + // TODO Auto-generated method stub - @Override - public boolean keyExists(String path) { - // TODO Auto-generated method stub - return false; - } + } - @Override - public Collection getKeys(String string) { - // TODO Auto-generated method stub - return null; - } + @Override + public void setString(String key, String value) { + // TODO Auto-generated method stub - @Override - public List getIntegerKeys(String string) { - // TODO Auto-generated method stub - return null; + } + + @Override + public Object getRaw(String key) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setRaw(String path, Object value) { + // TODO Auto-generated method stub + + } } } \ No newline at end of file diff --git a/src/net/citizensnpcs/storage/flatfile/YamlStorage.java b/src/net/citizensnpcs/storage/flatfile/YamlStorage.java index f1c205806..5403db3ca 100644 --- a/src/net/citizensnpcs/storage/flatfile/YamlStorage.java +++ b/src/net/citizensnpcs/storage/flatfile/YamlStorage.java @@ -2,13 +2,16 @@ package net.citizensnpcs.storage.flatfile; import java.io.File; import java.io.IOException; -import java.util.Collection; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.logging.Level; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; +import net.citizensnpcs.api.DataKey; import net.citizensnpcs.storage.Storage; import net.citizensnpcs.util.Messaging; @@ -28,140 +31,25 @@ public class YamlStorage implements Storage { @Override public void load() { - // TODO Auto-generated method stub - + try { + config.load(file); + } catch (Exception ex) { + ex.printStackTrace(); + } } @Override public void save() { - // TODO Auto-generated method stub - + try { + config.save(file); + } catch (Exception ex) { + ex.printStackTrace(); + } } @Override - public void removeKey(String key) { - // TODO Auto-generated method stub - - } - - @Override - public String getString(String key) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getString(String key, String value) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setString(String key, String value) { - // TODO Auto-generated method stub - - } - - @Override - public int getInt(String key) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int getInt(String key, int value) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void setInt(String key, int value) { - // TODO Auto-generated method stub - - } - - @Override - public double getDouble(String key) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public double getDouble(String key, double value) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void setDouble(String key, double value) { - // TODO Auto-generated method stub - - } - - @Override - public long getLong(String key) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public long getLong(String key, long value) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void setLong(String key, long value) { - // TODO Auto-generated method stub - - } - - @Override - public boolean getBoolean(String key) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean getBoolean(String key, boolean value) { - // TODO Auto-generated method stub - return false; - } - - @Override - public void setBoolean(String key, boolean value) { - // TODO Auto-generated method stub - - } - - @Override - public Object getRaw(String string) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setRaw(String path, Object value) { - // TODO Auto-generated method stub - - } - - @Override - public boolean keyExists(String path) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Collection getKeys(String string) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List getIntegerKeys(String string) { - // TODO Auto-generated method stub - return null; + public DataKey getKey(String root) { + return new YamlKey(root); } private void create() { @@ -173,4 +61,194 @@ public class YamlStorage implements Storage { Messaging.log(Level.SEVERE, "Could not create file: " + file.getName()); } } + + public class YamlKey extends DataKey { + private final String current; + + public YamlKey(String root) { + current = root; + } + + @Override + public void copy(String to) { + ConfigurationSection root = config.getConfigurationSection(current); + if (root == null) + return; + config.createSection(to, root.getValues(true)); + } + + @Override + public boolean getBoolean(String key) { + String path = getKeyExt(key); + if (keyExists(path)) { + if (config.getString(path) == null) + return config.getBoolean(path); + return Boolean.parseBoolean(config.getString(path)); + } + return false; + } + + @Override + public boolean getBoolean(String keyExt, boolean def) { + return config.getBoolean(getKeyExt(keyExt), def); + } + + @Override + public double getDouble(String key) { + String path = getKeyExt(key); + if (keyExists(path)) { + if (config.getString(path) == null) { + if (config.get(path) instanceof Integer) + return config.getInt(path); + return config.getDouble(path); + } + return Double.parseDouble(config.getString(path)); + } + return 0; + } + + @Override + public double getDouble(String keyExt, double def) { + return config.getDouble(getKeyExt(keyExt), def); + } + + @Override + public int getInt(String key) { + String path = getKeyExt(key); + if (keyExists(path)) { + if (config.getString(path) == null) + return config.getInt(path); + return Integer.parseInt(config.getString(path)); + } + return 0; + } + + @Override + public int getInt(String path, int value) { + return config.getInt(getKeyExt(path), value); + } + + @Override + public List getIntegerSubKeys() { + List res = new ArrayList(); + ConfigurationSection section = config.getConfigurationSection(current); + if (section == null) + return res; + List keys = new ArrayList(); + for (String key : section.getKeys(false)) { + try { + keys.add(Integer.parseInt(key)); + } catch (NumberFormatException ex) { + } + } + Collections.sort(keys); + for (int key : keys) + res.add(getRelative(Integer.toString(key))); + return res; + } + + @Override + public long getLong(String key) { + String path = getKeyExt(key); + if (keyExists(path)) { + if (config.getString(path) == null) { + if (config.get(path) instanceof Integer) + return config.getInt(path); + return config.getLong(path); + } + return Long.parseLong(config.getString(path)); + } + return 0; + } + + @Override + public long getLong(String keyExt, long def) { + return config.getLong(getKeyExt(keyExt), def); + } + + @Override + public DataKey getRelative(String relative) { + return new YamlKey(getKeyExt(relative)); + } + + @Override + public String getString(String key) { + String path = getKeyExt(key); + if (keyExists(path)) { + return config.get(path).toString(); + } + return ""; + } + + @Override + public Iterable getSubKeys() { + List res = new ArrayList(); + ConfigurationSection section = config.getConfigurationSection(current); + if (section == null) + return res; + for (String key : section.getKeys(false)) { + res.add(getRelative(key)); + } + return res; + } + + @Override + public boolean keyExists(String key) { + return config.get(getKeyExt(key)) != null; + } + + @Override + public String name() { + int last = current.lastIndexOf('.'); + return current.substring(last == 0 ? 0 : last + 1); + } + + @Override + public void removeKey(String key) { + config.set(getKeyExt(key), null); + } + + @Override + public void setBoolean(String key, boolean value) { + config.set(getKeyExt(key), value); + } + + @Override + public void setDouble(String key, double value) { + config.set(getKeyExt(key), String.valueOf(value)); + } + + @Override + public void setInt(String key, int value) { + config.set(getKeyExt(key), value); + } + + @Override + public void setLong(String key, long value) { + config.set(getKeyExt(key), value); + } + + @Override + public void setString(String key, String value) { + config.set(getKeyExt(key), value); + } + + @Override + public Object getRaw(String key) { + return config.get(getKeyExt(key)); + } + + @Override + public void setRaw(String key, Object value) { + config.set(getKeyExt(key), value); + } + + private String getKeyExt(String from) { + if (from.isEmpty()) + return current; + if (from.charAt(0) == '.') + return current.isEmpty() ? from.substring(1, from.length()) : current + from; + return current.isEmpty() ? from : current + "." + from; + } + } } \ No newline at end of file