Package org.objectweb.speedo.pobjects.intelli

Source Code of org.objectweb.speedo.pobjects.intelli.TestIntelli

/**
* Copyright (C) 2001-2004 France Telecom R&D
*/
package org.objectweb.speedo.pobjects.intelli;

import org.objectweb.speedo.SpeedoTestHelper;
import org.objectweb.util.monolog.api.BasicLevel;

import java.util.Collection;
import java.util.Iterator;

import javax.jdo.Extent;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;

/**
*
*
* @author chassase
*/
public class TestIntelli extends SpeedoTestHelper {

  public TestIntelli(String name) {
    super(name);
  }

  protected String getLoggerName() {
    return LOG_NAME + ".intelli";
  }


  public void testImbricatedContains() {
    logger.log(BasicLevel.DEBUG, "testSequenceIdNavigateToPrimitive");
    PersistenceManager pm = pmf.getPersistenceManager();
    final int nbAdmin = 5;
    final int nbRolePerAdmin = 5;
    final int nbScopePerRole = 5;
    final Class[] classes = new Class[]{Admin.class, Role.class, Scope.class};
    autoClean(pm, classes);

    //Fill the database
    pm.currentTransaction().begin();
   
   
    for(int i=0; i<nbAdmin; i++) {
        Admin admin = new Admin();
        admin.setF1("admin" + i);
      for(int j=0; j<nbRolePerAdmin; j++) {
          Role role = new Role();
          admin.getRoles().add(role);
          role.setF1("role" + j);
        for(int k=0; k<nbScopePerRole; k++) {
            Scope scope = new Scope();
            role.getScopes().add(scope);
            scope.setF1("scope" + k);
            scope.setRole(role);
        }
      }
      pm.makePersistent(admin);
    }
    pm.currentTransaction().commit();

    pm.currentTransaction().begin();
    Query q = pm.newQuery(Admin.class);
    q.setFilter("((roles.contains(role)) && (role.scopes.contains(scope)) && (scope.f1.matches(\"%2\")) && (scope.f1.matches(p1)))");
    q.declareVariables("Role role; Scope scope");
    q.declareParameters("String p1");
    Collection c = (Collection) q.execute("%2");
    assertEquals("Bad result size", nbAdmin * nbRolePerAdmin, c.size());
    pm.currentTransaction().commit();

    autoClean(pm, classes);
    pm.close();
   
     
 

  public void testMisc() {
    logger.log(BasicLevel.DEBUG, "testSequenceIdNavigateToPrimitive");
    PersistenceManager pm = pmf.getPersistenceManager();
    final int nbSensor = 10;
    final int nbRoomPerArea = 10;
    final int nbStatePerSensor = 5;
    final Class[] classes = new Class[]{Sensor.class, Area.class, State.class, Room.class};

    autoClean(pm, classes);

    //Fill the database
    pm.currentTransaction().begin();
    for(int i=0; i<nbSensor; i++) {
        Sensor sensor = new Sensor(i);
      for(int j=0; j<nbStatePerSensor; j++) {
          State state = new State(i*100 + j);
          sensor.getStates().add(state);
      }
        Area area = new Area(i);
        sensor.setArea(area);
      for(int j=0; j<nbRoomPerArea; j++) {
          Room room = new Room(i*100 + j);
          area.getRooms().add(room);
      }
      pm.makePersistent(sensor);
    }
    pm.currentTransaction().commit();
     
    pm.currentTransaction().begin();
    Query q = pm.newQuery(Sensor.class);
    q.setFilter("((area.rooms.contains(r)) && (r.roomid == rid) && (states.contains(s)) && (s.stateid == sid))");
    q.declareVariables("Room r; StateItf s");
    q.declareParameters("int sid, int rid");
    Collection c = (Collection) q.execute(new Integer(102), new Integer(103));
    pm.currentTransaction().commit();

    autoClean(pm, classes);
    pm.close();
  }
 
  private void autoClean(PersistenceManager pm, Class[] classes) {
    pm.currentTransaction().begin();
    for(int i=0; i<classes.length; i++) {
      Extent extent = pm.getExtent(classes[i], false);
      for(Iterator it = extent.iterator(); it.hasNext();) {
          pm.deletePersistent(it.next());
      }
      extent.closeAll();
    }
    pm.currentTransaction().commit();
  }
 
}
TOP

Related Classes of org.objectweb.speedo.pobjects.intelli.TestIntelli

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.