package nebula.lang.system;
import nebula.lang.Vo;
public abstract class Keys {
public abstract Object get(Vo v);
public static Keys create(String[] keys) {
switch (keys.length) {
case 1:
return new Keys1(keys[0]);
case 2:
return new Keys2(keys[0], keys[1]);
case 3:
return new Keys3(keys[0], keys[1], keys[2]);
default:
throw new RuntimeException("KeysColumn must less than three");
}
}
static class Keys1 extends Keys {
String key1;
Keys1(String key) {
this.key1 = key;
}
@Override
public Object get(Vo v) {
return v.get(key1.toString());
}
}
static class Keys2 extends Keys {
String key1;
String key2;
Keys2(String key1, String key2) {
this.key1 = key1;
this.key2 = key2;
}
@Override
public Object get(Vo v) {
return v.get(key1.toString()).toString() + "-" + v.get(key2.toString()).toString();
}
}
static class Keys3 extends Keys {
String key1;
String key2;
String key3;
Keys3(String key1, String key2, String key3) {
this.key1 = key1;
this.key2 = key2;
this.key3 = key3;
}
@Override
public Object get(Vo v) {
return v.get(key1.toString()).toString() + "-" + v.get(key2.toString()).toString() + "-"
+ v.get(key2.toString()).toString();
}
}
}