From: Alexey L. <lou...@us...> - 2003-06-03 17:19:02
|
User: loubyansky Date: 03/06/03 10:19:01 Modified: src/main/org/jboss/persistence/jbossdo/store StoreManager.java StoreManagerImpl.java Log: fixed some bugs in PersistenceManager.getObjectById() and loading one-side association. Revision Changes Path 1.2 +2 -0 jboss-persistence/src/main/org/jboss/persistence/jbossdo/store/StoreManager.java Index: StoreManager.java =================================================================== RCS file: /cvsroot/jboss/jboss-persistence/src/main/org/jboss/persistence/jbossdo/store/StoreManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- StoreManager.java 3 Jun 2003 11:07:45 -0000 1.1 +++ StoreManager.java 3 Jun 2003 17:19:01 -0000 1.2 @@ -29,5 +29,7 @@ PersistenceCapable load(JBossStateManager sm); + PersistenceCapable loadById(JBossStateManager sm); + PersistenceCapable loadByFK(JBossStateManager sm, int fkFieldIndex); } 1.2 +31 -0 jboss-persistence/src/main/org/jboss/persistence/jbossdo/store/StoreManagerImpl.java Index: StoreManagerImpl.java =================================================================== RCS file: /cvsroot/jboss/jboss-persistence/src/main/org/jboss/persistence/jbossdo/store/StoreManagerImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- StoreManagerImpl.java 3 Jun 2003 11:07:45 -0000 1.1 +++ StoreManagerImpl.java 3 Jun 2003 17:19:01 -0000 1.2 @@ -18,6 +18,7 @@ import org.jboss.logging.Logger; import javax.jdo.spi.PersistenceCapable; +import javax.jdo.JDOUserException; /** * @@ -115,6 +116,36 @@ log.debug("load command: " + command); command.executeQuery(); + jdoClass.getResults(command, sm); + return sm.getPersistenceCapable(); + } + + public PersistenceCapable loadById(JBossStateManager sm) + { + PersistenceCapable pc = sm.getPersistenceCapable(); + JDOClass jdoClass = schemaMapper.getJDOClassByName(pc.getClass().getName()); + + JDOLoad command = new JDOLoad(); + command.setClass(jdoClass); + command.setParameterMask( + JBossStateManager.JBOSS_FIELD_LOAD_REQUIRED | JBossStateManager.JBOSS_FIELD_LOADED); + command.setParameterFlags(JBossStateManager.JBOSS_FIELD_LOAD_REQUIRED); + + int loadParameters = jdoClass.getIdentity().setLoadParameters(command, sm); + loadParameters += jdoClass.setLoadParameters(command, sm); + if(loadParameters == 0) + return sm.getPersistenceCapable(); + jdoClass.getIdentity().setFilterParameters(command, sm); + + command.generate(schemaMapper, generator); + log.debug("loadById command: " + command); + command.executeQuery(); + + if(!command.hasResults()) + throw new JDOUserException("Object not found. id=" + sm.getObjectId(pc)); + + // read identity first and then default-fetch-group + jdoClass.getIdentity().getResults(command, sm); jdoClass.getResults(command, sm); return sm.getPersistenceCapable(); } |