package com.venky.swf.configuration;
import java.util.List;
import com.venky.swf.db.Database;
import com.venky.swf.db.model.User;
import com.venky.swf.db.model.reflection.ModelReflector;
import com.venky.swf.db.table.BindVariable;
import com.venky.swf.db.table.Table;
import com.venky.swf.sql.Expression;
import com.venky.swf.sql.Operator;
import com.venky.swf.sql.Select;
public class AppInstaller implements Installer {
public void install(){
installUsers();
fixUserName();
}
protected void fixUserName(){
Select q = new Select().from(User.class);
ModelReflector<User> ref = ModelReflector.instance(User.class);
String nameColumn = ref.getColumnDescriptor("long_name").getName();
List<User> users = q.where(new Expression(ref.getPool(),nameColumn,Operator.EQ)).execute();
for (User user: users){
user.setLongName(user.getName());
}
}
protected void installUsers(){
Table<User> USER = Database.getTable(User.class);
Select q = new Select().from(User.class);
ModelReflector<User> ref = ModelReflector.instance(User.class);
String nameColumn = ref.getColumnDescriptor("name").getName();
List<User> users = q.where(new Expression(ref.getPool(),nameColumn,Operator.EQ,new BindVariable(ref.getPool(),"root"))).execute(User.class);
if (users.isEmpty()){
User u = USER.newRecord();
u.setName("root");
u.setLongName("Application Adminstrator");
u.setPassword("root");
u.save();
if (u.getId() != 1){
u.setId(1);
u.save(false);
}
}
}
}