???????????????????????????飺

????public static ResourceBuilder newResource (String userName) {

????ResourceBuilder rb = new ResourceBuilder();

????rb.userName = userName + UnitTestThreadContext.getUniqueSuffix();

????return rb; }

????public ResourceBuilder assignRole(String roleName) {

????this.roleName = roleName + UnitTestThreadContext.getUniqueSuffix();

????return this;

????}

????public Resource create() {

????ResourceDAO resourceDAO = new ResourceDAO(UnitTestThreadContext.getSession());

????Resource rs;

????if (StringUtils.isNotBlank(userName)) {

????rs = resourceDAO.createResource(this.userName);

????} else {

????throw new RuntimeException("must have a user name to create a resource");

????}

????if (StringUtils.isNotBlank(roleName)) {

????Role role = RoleBuilder.newRole(roleName).create();

????rs.addRole(role);

????}

????return rs;

????}

????public static void delete(Resource rs?? boolean cascadeToRole) {

????Session session = UnitTestThreadContext.getSession();

????ResourceDAO resourceDAO = new ResourceDAO(session);

????resourceDAO.delete(rs);

????if (cascadeToRole) {

????RoleDAO roleDAO = new RoleDAO(session);

????List roles = rs.getRoles();

????for (Object role : roles) {

????roleDAO.delete((Role)role);

????}

????}

????}

????ResourceBuilder?????????????????????????????????????????????????

????ResourceBuilder.newResource(“Tom”).assignRole(“Developer”).create();

???????а???????????????????delete()?????????????????????????з??????????delete()?????????????????????????????Щ?????????????????????????

????UnitTestThreadContext?????????????????????????????Hibernate Session?????????????????????????????????????????????????????

????public class UnitTestThreadContext {

????private static ThreadLocal threadSession=new ThreadLocal();

????private static ThreadLocal threadUniqueId=new ThreadLocal();

????private final static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/

????dd HH_mm_ss_S");

????public static Session getSession(){>

????Session session = threadSession.get();

????if (session==null) {

????throw new RuntimeException("Hibernate Session not set!");

????}

????return session;

????}

????public static void setSession(Session session) {

????threadSession.set(session);

????}

????public static String getUniqueSuffix() {

????String uniqueId = threadUniqueId.get();

????if (uniqueId==null){

????uniqueId = "-"+dateFormat.format(new Date());

????threadUniqueId.set(uniqueId);

????}

????return uniqueId;

????}

????…

????}

??????????

???????????????????????С????????м??????????????????????????

????protected void setUp() throws Exception {

????TestServerMain.run(); //setup a minimum running infrastructure

????}

????public void testResourceBreakdown(){

????Resource resource=createResource(); //use ResourceBuilder to build unique resources

????List requests=createRequests(); //use RequestBuilder to build unique requests

????assignRequestToResource(resource?? requests);

????List tickets=createTickets(); //use TicketBuilder to build unique tickets

????assignTicketToResource(resource?? tickets);

????Map result=new ResourceBreakdownService().search(resource);

????verifyResult(result);

????}

????protected void tearDown() throws Exception {

????// use TicketBuilder.delete() to delete tickets

????// use RequestBuilder.delete() to delete requests

????// use ResourceBuilder.delete() to delete resources

???????????????д?????????????????????????????????????????д???????

??????????Щ????????????????ResourceBreakdownService??????????????з???????????????????????????????????鼮??????????????????????????????????????????????????


????????????“??????Map????????????Map……”?????????????????μ?ResourceLoadBucket??????????????????????????????????????????????????????????????????????????????佫???aggregate()???????????????????????????????????????á????????????????????????????е??Щ???????????????????????????????
??????????????У????????????????巽??????????????????????????????·????????????????????Щ????????????????????????????????????????????????????????????????С????????????????????????????????????????????Щ????????????????????????Щ hack??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????о??????????д?????????????????????????????????????????δ???????????????????