package org.nutz.dao.test.meta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import org.nutz.dao.Dao;
import org.nutz.dao.TableName;
import org.nutz.service.*;
import org.nutz.trans.Atom;
public class Pojos extends Service {
private Dao dao;
public Pojos(Dao dao) {
super(dao);
this.dao = dao;
}
public void initPet() {
dao.create(Pet.class, true);
}
public void init() {
synchronized (Pojos.class) {
dao.create(Country.class, true);
dao.create(Platoon.class, true);
dao.create(Base.class, true);
dao.create(Fighter.class, true);
dao.create(WaveBand.class, true);
}
}
public Platoon create4Platoon(Base base, String name) {
final Platoon p = dao().insert(Platoon.make(base, name));
int id = p.getId();
initPlatoon(id);
TableName.run(id, new Atom() {
public void run() {
Soldier mick = Soldier.make("Mick");
Soldier zzh = Soldier.make("ZZH");
Soldier peter = Soldier.make("Peter");
Soldier sm = Soldier.make("Super Man");
Soldier bush = Soldier.make("George.W.Bush");
p.setTanks(new HashMap<String, Tank>());
Tank m1a1 = p.addTank(Tank.make("M1-A1"));
m1a1.setMotorName(bush.getName());
Tank t92 = p.addTank(Tank.make("T92"));
t92.setMotorName(zzh.getName());
p.setLeaderName(zzh.getName());
p.setLeader(zzh);
p.setSoliders(new LinkedList<Soldier>());
p.getSoliders().add(mick);
p.getSoliders().add(peter);
p.getSoliders().add(sm);
p.getSoliders().add(bush);
dao.update(p);
dao.insertLinks(p, "leader|soliders|tanks");
m1a1 = dao.fetch(Tank.class, "M1-A1");
m1a1.setMembers(new HashMap<String, Soldier>());
m1a1.addMember(bush).addMember(sm).addMember(zzh);
t92 = dao.fetch(Tank.class, "T92");
t92.setMembers(new HashMap<String, Soldier>());
t92.addMember(zzh).addMember(mick).addMember(peter);
dao.insertRelation(m1a1, "members");
dao.insertRelation(t92, "members");
dao.insertLinks(Gun.assign(mick, Gun.TYPE.AK47, Gun.TYPE.P228), "guns");
dao.insertLinks(Gun.assign(zzh, Gun.TYPE.AWP, Gun.TYPE.MP5, Gun.TYPE.P228), "guns");
dao.insertLinks(Gun.assign(peter, Gun.TYPE.M16, Gun.TYPE.UMP_45), "guns");
dao.insertLinks(Gun.assign(sm, Gun.TYPE.M16, Gun.TYPE.UMP_45), "guns");
dao.insertLinks(Gun.assign(bush, Gun.TYPE.M60, Gun.TYPE.P228), "guns");
}
});
return p;
}
public void initPlatoon(int id) {
TableName.set(id);
dao.create(Soldier.class, true);
dao.create(Tank.class, true);
dao.create(Gun.class, true);
dao.create(Mission.class, true);
TableName.clear();
}
public void dropPlatoon(int id) {
TableName.set(id);
dao.drop(Soldier.class);
dao.drop(Tank.class);
dao.drop(Gun.class);
dao.drop(Mission.class);
TableName.clear();
}
public void initData() {
init();
dao.insert(WaveBand.make("FM_A", 107.9));
dao.insert(WaveBand.make("FM_B", 104.83));
dao.insert(WaveBand.make("DQ_99", 109.99));
dao.insert(WaveBand.make("X", 101.21));
Base b = Base.make("red");
b.setCountry(Country.make("China"));
b.setFighters(new ArrayList<Fighter>(6));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_35));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_27));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_27));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_31));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_31));
b.getFighters().add(Fighter.make(Fighter.TYPE.SU_31));
b.setPlatoons(new HashMap<String, Platoon>());
b.addPlatoon(Platoon.make(b, "C"));
b.addPlatoon(Platoon.make(b, "ES"));
b.addPlatoon(Platoon.make(b, "DT"));
dao.insertWith(b, "country|fighters|platoons");
b = Base.make("blue");
b.setCountry(Country.make("US"));
b.setFighters(new LinkedList<Fighter>());
b.getFighters().add(Fighter.make(Fighter.TYPE.F117A));
b.getFighters().add(Fighter.make(Fighter.TYPE.F22));
b.getFighters().add(Fighter.make(Fighter.TYPE.F15));
b.getFighters().add(Fighter.make(Fighter.TYPE.F15));
b.getFighters().add(Fighter.make(Fighter.TYPE.F16));
b.getFighters().add(Fighter.make(Fighter.TYPE.F16));
b.getFighters().add(Fighter.make(Fighter.TYPE.F16));
b.setPlatoons(new HashMap<String, Platoon>());
b.addPlatoon(Platoon.make(b, "SF"));
b.addPlatoon(Platoon.make(b, "DF"));
b.addPlatoon(Platoon.make(b, "seals"));
dao.insertLinks(b, "country");
dao.insert(b);
dao.insertLinks(b, "fighters|platoons");
}
}