Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ul
- import java.net.{URLDecoder,URLEncoder}
- trait Props {
- val propsContainer = this;
- val props = new PropsMan {
- container = propsContainer;
- }
- }
- class PropsMan {
- var container:AnyRef = null;
- val attrs = new collection.mutable.ArrayBuffer[PropAttr];
- def apply(name:String):Any =
- container.getClass.getMethods.find(_.getName == name).get.invoke(container);
- def get(name:String) = apply(name);
- def update(name:String, value:Int):PropsMan = update(name, new java.lang.Integer(value));
- def update(name:String, value:Double):PropsMan = update(name, new java.lang.Double(value));
- def update(name:String, value:Object):PropsMan = {
- container.getClass.getMethods.find(_.getName == name+"_$eq").get.invoke(container, value);
- this
- }
- def updateString(name:String, value:String):PropsMan = {
- update(name, apply(name) match {
- case i:java.lang.Integer => new java.lang.Integer(java.lang.Integer.parseInt(value))
- case d:java.lang.Double => new java.lang.Double(java.lang.Double.parseDouble(value))
- case b:java.lang.Boolean => new java.lang.Boolean(java.lang.Boolean.parseBoolean(value))
- case s:java.lang.String => value
- case _ => value
- });
- this
- }
- def tags = (for (a<-attrs) yield a.tag);
- def names = (for (a<-attrs) yield a.name);
- def attr(aTag:String) = attrs.find(_.tag == aTag).get;
- def toConf:String = (
- for (a <- attrs) yield
- a.tag + " = " + URLEncoder.encode(apply(a.tag).toString, "UTF-8")
- ).mkString("\n");
- def fromConf(s:String) {
- for (l <- s.lines) {
- val snv = l.split(" = ");
- if ((snv.length == 2)&&(tags.contains(snv(0))))
- updateString(snv(0), URLDecoder.decode(snv(1), "UTF-8"))
- }
- }
- def toXml:String = {
- ""
- }
- def fromXml(s:String) {
- }
- def toJson:String = {
- ""
- }
- def fromJson(s:String) {
- }
- }
- class PropAttr(
- var tag:String = "",
- var name:String = "",
- var descr:String = "",
- var hide:Boolean = false,
- var ro:Boolean = false
- ) {
- def this(aTag:String, aName:String) = this(aTag,aName,"");
- def this(aTag:String) = this(aTag,aTag);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement