[jboss-envers-commits] JBoss Envers SVN: r111 - in trunk/src/main/org/jboss/envers: configuration and 7 other directories.
jboss-envers-commits at lists.jboss.org
jboss-envers-commits at lists.jboss.org
Sat Aug 16 13:39:06 EDT 2008
Author: adamw
Date: 2008-08-16 13:39:05 -0400 (Sat, 16 Aug 2008)
New Revision: 111
Added:
trunk/src/main/org/jboss/envers/entities/
trunk/src/main/org/jboss/envers/entities/RelationDescription.java
trunk/src/main/org/jboss/envers/mapper/relation/
trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java
trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java
Removed:
trunk/src/main/org/jboss/envers/configuration/entities/
trunk/src/main/org/jboss/envers/mapper/id/relation/
trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java
trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java
Modified:
trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java
trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java
trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java
trunk/src/main/org/jboss/envers/entities/IdMappingData.java
trunk/src/main/org/jboss/envers/event/VersionsEventListener.java
trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java
trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java
trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java
trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java
trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java
trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java
trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java
Log:
ENVERS-37: moving packages to more logical places
Modified: trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -27,7 +27,7 @@
import org.jboss.envers.configuration.metadata.VersionsMetadataGenerator;
import org.jboss.envers.configuration.metadata.AnnotationsMetadataReader;
import org.jboss.envers.configuration.metadata.PersistentClassVersioningData;
-import org.jboss.envers.configuration.entities.EntitiesConfigurations;
+import org.jboss.envers.entities.EntitiesConfigurations;
import org.jboss.envers.synchronization.VersionsSyncManager;
import org.jboss.envers.tools.graph.GraphTopologicalSort;
import org.jboss.envers.tools.reflection.YReflectionManager;
Modified: trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -30,14 +30,14 @@
import org.dom4j.DocumentHelper;
import org.dom4j.Attribute;
import org.dom4j.tree.DefaultElement;
-import org.jboss.envers.configuration.entities.EntityConfiguration;
-import org.jboss.envers.configuration.entities.IdMappingData;
+import org.jboss.envers.entities.EntityConfiguration;
+import org.jboss.envers.entities.IdMappingData;
import org.jboss.envers.configuration.VersionsConfiguration;
import org.jboss.envers.mapper.*;
import org.jboss.envers.mapper.id.*;
-import org.jboss.envers.mapper.id.relation.ToOneIdMapper;
-import org.jboss.envers.mapper.id.relation.OneToOneIdMapper;
-import org.jboss.envers.mapper.id.relation.OneToManyIdMapper;
+import org.jboss.envers.mapper.relation.ToOneIdMapper;
+import org.jboss.envers.mapper.relation.OneToOneIdMapper;
+import org.jboss.envers.mapper.relation.OneToManyIdMapper;
import org.jboss.envers.tools.StringTools;
import org.jboss.envers.tools.Tools;
import org.jboss.envers.tools.HibernateVersion;
Copied: trunk/src/main/org/jboss/envers/entities (from rev 109, trunk/src/main/org/jboss/envers/configuration/entities)
Modified: trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/EntitiesConfigurations.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -19,11 +19,10 @@
*
* Red Hat Author(s): Adam Warski
*/
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
import org.jboss.envers.mapper.id.IdMapper;
import org.jboss.envers.mapper.ExtendedPropertyMapper;
-import org.jboss.envers.configuration.RelationDescription;
import java.util.Map;
import java.util.HashMap;
Modified: trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/EntityConfiguration.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -19,9 +19,9 @@
*
* Red Hat Author(s): Adam Warski
*/
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.mapper.ExtendedPropertyMapper;
import org.jboss.envers.mapper.id.IdMapper;
Modified: trunk/src/main/org/jboss/envers/entities/IdMappingData.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/IdMappingData.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/IdMappingData.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -19,7 +19,7 @@
*
* Red Hat Author(s): Adam Warski
*/
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
import org.jboss.envers.mapper.id.IdMapper;
import org.dom4j.Element;
Copied: trunk/src/main/org/jboss/envers/entities/RelationDescription.java (from rev 109, trunk/src/main/org/jboss/envers/configuration/RelationDescription.java)
===================================================================
--- trunk/src/main/org/jboss/envers/entities/RelationDescription.java (rev 0)
+++ trunk/src/main/org/jboss/envers/entities/RelationDescription.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,53 @@
+/*
+ * Envers. http://www.jboss.org/envers
+ *
+ * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Adam Warski
+ */
+package org.jboss.envers.entities;
+
+import org.jboss.envers.mapper.id.IdMapper;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+*/
+public class RelationDescription {
+ public final String fromPropertyName;
+ public final RelationType relationType;
+ public final String toEntityName;
+ public final String mappedByPropertyName;
+ public final IdMapper idMapper;
+ public boolean bidirectional;
+
+ public RelationDescription(String fromPropertyName, RelationType relationType, String toEntityName,
+ String mappedByPropertyName, IdMapper idMapper) {
+ this.fromPropertyName = fromPropertyName;
+ this.relationType = relationType;
+ this.toEntityName = toEntityName;
+ this.mappedByPropertyName = mappedByPropertyName;
+ this.idMapper = idMapper;
+
+ this.bidirectional = false;
+ }
+
+ public static enum RelationType {
+ TO_ONE,
+ ONE_TO_ONE,
+ ONE_TO_MANY
+ }
+}
Modified: trunk/src/main/org/jboss/envers/event/VersionsEventListener.java
===================================================================
--- trunk/src/main/org/jboss/envers/event/VersionsEventListener.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/event/VersionsEventListener.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -25,7 +25,7 @@
import org.hibernate.cfg.Configuration;
import org.hibernate.persister.entity.EntityPersister;
import org.jboss.envers.configuration.VersionsConfiguration;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.synchronization.VersionsSync;
import org.jboss.envers.synchronization.work.AddWorkUnit;
import org.jboss.envers.synchronization.work.ModWorkUnit;
Modified: trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -21,8 +21,6 @@
*/
package org.jboss.envers.mapper.id;
-import org.hibernate.Query;
-
/**
* @author Adam Warski (adam at warski dot org)
*/
@@ -35,11 +33,6 @@
this.value = value;
}
- public void appendProperty(StringBuilder queryStr, String prefix) {
- queryStr.append(prefix).append(".");
- queryStr.append(flatEntityPropertyName);
- }
-
public String getProperty(String prefix) {
if (prefix != null) {
return prefix + "." + flatEntityPropertyName;
@@ -51,13 +44,4 @@
public Object getValue() {
return value;
}
-
- public void appendPropertyWithParameter(StringBuilder queryStr, String prefix) {
- appendProperty(queryStr, prefix);
- queryStr.append(" = :").append(flatEntityPropertyName);
- }
-
- public void setQueryParameter(Query query) {
- query.setParameter(flatEntityPropertyName, value);
- }
}
Copied: trunk/src/main/org/jboss/envers/mapper/relation (from rev 109, trunk/src/main/org/jboss/envers/mapper/id/relation)
Deleted: trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -1,80 +0,0 @@
-/*
- * Envers. http://www.jboss.org/envers
- *
- * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
- *
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT A WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License, v.2.1 along with this distribution; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * Red Hat Author(s): Adam Warski
- */
-package org.jboss.envers.mapper.id.relation;
-
-import org.jboss.envers.mapper.PropertyMapper;
-import org.jboss.envers.reader.VersionsReaderImplementor;
-import org.jboss.envers.reader.lazy.OneToManyInitializor;
-import org.jboss.envers.reader.lazy.proxy.ListProxy;
-import org.jboss.envers.reader.lazy.proxy.SetProxy;
-import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.tools.reflection.ReflectionTools;
-import org.hibernate.property.Setter;
-import org.hibernate.property.Getter;
-
-import java.util.*;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public class OneToManyIdMapper implements PropertyMapper {
- private String owningReferencePropertyName;
- private String owningEntityName;
- private String propertyName;
-
- public OneToManyIdMapper(String owningReferencePropertyName, String owningEntityName, String propertyName) {
- this.owningReferencePropertyName = owningReferencePropertyName;
- this.owningEntityName = owningEntityName;
- this.propertyName = propertyName;
- }
-
- public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
- return false;
- }
-
- @SuppressWarnings({"unchecked"})
- public void mapToEntityFromMap(Object obj, Map data, Object primaryKey, VersionsReaderImplementor versionsReader, Number revision) {
- if (obj == null) {
- return;
- }
-
- Class<?> entityClass = ReflectionTools.loadClass(owningEntityName);
-
- Getter getter = ReflectionTools.getGetter(obj.getClass(), propertyName);
- Class collectionClass = getter.getReturnType();
-
- // todo: investigate generics
- Object value;
- if (List.class.isAssignableFrom(collectionClass)) {
- value = new ListProxy(new OneToManyInitializor<ArrayList>(versionsReader, entityClass,
- owningReferencePropertyName, primaryKey, revision, ArrayList.class));
- } else if (Set.class.isAssignableFrom(collectionClass) || Collection.class.isAssignableFrom(collectionClass)) {
- value = new SetProxy(new OneToManyInitializor<HashSet>(versionsReader, entityClass,
- owningReferencePropertyName, primaryKey, revision, HashSet.class));
- } else {
- throw new VersionsException("Unsupported versioned collection type: " + collectionClass.getName());
- }
-
- Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
- setter.set(obj, value, null);
- }
-}
\ No newline at end of file
Copied: trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java (from rev 110, trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java)
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java (rev 0)
+++ trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,80 @@
+/*
+ * Envers. http://www.jboss.org/envers
+ *
+ * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Adam Warski
+ */
+package org.jboss.envers.mapper.relation;
+
+import org.jboss.envers.mapper.PropertyMapper;
+import org.jboss.envers.reader.VersionsReaderImplementor;
+import org.jboss.envers.reader.lazy.OneToManyInitializor;
+import org.jboss.envers.reader.lazy.proxy.ListProxy;
+import org.jboss.envers.reader.lazy.proxy.SetProxy;
+import org.jboss.envers.exception.VersionsException;
+import org.jboss.envers.tools.reflection.ReflectionTools;
+import org.hibernate.property.Setter;
+import org.hibernate.property.Getter;
+
+import java.util.*;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class OneToManyIdMapper implements PropertyMapper {
+ private final String owningReferencePropertyName;
+ private final String owningEntityName;
+ private final String propertyName;
+
+ public OneToManyIdMapper(String owningReferencePropertyName, String owningEntityName, String propertyName) {
+ this.owningReferencePropertyName = owningReferencePropertyName;
+ this.owningEntityName = owningEntityName;
+ this.propertyName = propertyName;
+ }
+
+ public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
+ return false;
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public void mapToEntityFromMap(Object obj, Map data, Object primaryKey, VersionsReaderImplementor versionsReader, Number revision) {
+ if (obj == null) {
+ return;
+ }
+
+ Class<?> entityClass = ReflectionTools.loadClass(owningEntityName);
+
+ Getter getter = ReflectionTools.getGetter(obj.getClass(), propertyName);
+ Class collectionClass = getter.getReturnType();
+
+ // todo: investigate generics
+ Object value;
+ if (List.class.isAssignableFrom(collectionClass)) {
+ value = new ListProxy(new OneToManyInitializor<ArrayList>(versionsReader, entityClass,
+ owningReferencePropertyName, primaryKey, revision, ArrayList.class));
+ } else if (Set.class.isAssignableFrom(collectionClass) || Collection.class.isAssignableFrom(collectionClass)) {
+ value = new SetProxy(new OneToManyInitializor<HashSet>(versionsReader, entityClass,
+ owningReferencePropertyName, primaryKey, revision, HashSet.class));
+ } else {
+ throw new VersionsException("Unsupported versioned collection type: " + collectionClass.getName());
+ }
+
+ Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
+ setter.set(obj, value, null);
+ }
+}
\ No newline at end of file
Modified: trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -19,7 +19,7 @@
*
* Red Hat Author(s): Adam Warski
*/
-package org.jboss.envers.mapper.id.relation;
+package org.jboss.envers.mapper.relation;
import org.jboss.envers.mapper.PropertyMapper;
import org.jboss.envers.reader.VersionsReaderImplementor;
Deleted: trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java 2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -1,82 +0,0 @@
-/*
- * Envers. http://www.jboss.org/envers
- *
- * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
- *
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT A WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License, v.2.1 along with this distribution; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * Red Hat Author(s): Adam Warski
- */
-package org.jboss.envers.mapper.id.relation;
-
-import org.jboss.envers.mapper.PropertyMapper;
-import org.jboss.envers.mapper.id.IdMapper;
-import org.jboss.envers.tools.Tools;
-import org.jboss.envers.tools.reflection.ReflectionTools;
-import org.jboss.envers.reader.VersionsReaderImplementor;
-import org.jboss.envers.reader.lazy.ToOneDelegateSessionImplementor;
-import org.hibernate.property.Setter;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public class ToOneIdMapper implements PropertyMapper {
- private IdMapper delegate;
- private String propertyName;
- private String referencedEntityName;
-
- public ToOneIdMapper(IdMapper delegate, String propertyName, String referencedEntityName) {
- this.delegate = delegate;
- this.propertyName = propertyName;
- this.referencedEntityName = referencedEntityName;
- }
-
- public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
- HashMap<String, Object> newData = new HashMap<String, Object>();
- data.put(propertyName, newData);
-
- delegate.mapToMapFromEntity(newData, newObj);
-
- return !Tools.objectsEqual(newObj, oldObj);
- }
-
- public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
- VersionsReaderImplementor versionsReader, Number revision) {
- if (obj == null) {
- return;
- }
-
- Object entityId = delegate.mapToIdFromMap((Map) data.get(propertyName));
- doMap(obj, versionsReader, revision, entityId);
- }
-
- private void doMap(Object obj, VersionsReaderImplementor versionsReader, Number revision, Object entityId) {
- Object value;
- if (entityId == null) {
- value = null;
- } else {
- Class<?> entityClass = ReflectionTools.loadClass(referencedEntityName);
-
- value = versionsReader.getSessionImplementor().getFactory().getEntityPersister(referencedEntityName).
- createProxy(null, new ToOneDelegateSessionImplementor(versionsReader, entityClass, entityId, revision));
- }
-
- Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
- setter.set(obj, value, null);
- }
-}
Copied: trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java (from rev 110, trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java)
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java (rev 0)
+++ trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,82 @@
+/*
+ * Envers. http://www.jboss.org/envers
+ *
+ * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Adam Warski
+ */
+package org.jboss.envers.mapper.relation;
+
+import org.jboss.envers.mapper.PropertyMapper;
+import org.jboss.envers.mapper.id.IdMapper;
+import org.jboss.envers.tools.Tools;
+import org.jboss.envers.tools.reflection.ReflectionTools;
+import org.jboss.envers.reader.VersionsReaderImplementor;
+import org.jboss.envers.reader.lazy.ToOneDelegateSessionImplementor;
+import org.hibernate.property.Setter;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class ToOneIdMapper implements PropertyMapper {
+ private final IdMapper delegate;
+ private final String propertyName;
+ private final String referencedEntityName;
+
+ public ToOneIdMapper(IdMapper delegate, String propertyName, String referencedEntityName) {
+ this.delegate = delegate;
+ this.propertyName = propertyName;
+ this.referencedEntityName = referencedEntityName;
+ }
+
+ public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
+ HashMap<String, Object> newData = new HashMap<String, Object>();
+ data.put(propertyName, newData);
+
+ delegate.mapToMapFromEntity(newData, newObj);
+
+ return !Tools.objectsEqual(newObj, oldObj);
+ }
+
+ public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
+ VersionsReaderImplementor versionsReader, Number revision) {
+ if (obj == null) {
+ return;
+ }
+
+ Object entityId = delegate.mapToIdFromMap((Map) data.get(propertyName));
+ doMap(obj, versionsReader, revision, entityId);
+ }
+
+ private void doMap(Object obj, VersionsReaderImplementor versionsReader, Number revision, Object entityId) {
+ Object value;
+ if (entityId == null) {
+ value = null;
+ } else {
+ Class<?> entityClass = ReflectionTools.loadClass(referencedEntityName);
+
+ value = versionsReader.getSessionImplementor().getFactory().getEntityPersister(referencedEntityName).
+ createProxy(null, new ToOneDelegateSessionImplementor(versionsReader, entityClass, entityId, revision));
+ }
+
+ Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
+ setter.set(obj, value, null);
+ }
+}
Modified: trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -22,7 +22,7 @@
package org.jboss.envers.query.criteria;
import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.configuration.VersionsConfiguration;
/**
Modified: trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -24,7 +24,7 @@
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.configuration.VersionsConfiguration;
/**
Modified: trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -24,7 +24,7 @@
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.configuration.VersionsConfiguration;
/**
Modified: trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -23,7 +23,7 @@
import org.hibernate.criterion.Criterion;
import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.configuration.VersionsConfiguration;
/**
Modified: trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java 2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java 2008-08-16 17:39:05 UTC (rev 111)
@@ -23,7 +23,7 @@
import org.hibernate.criterion.Criterion;
import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
import org.jboss.envers.configuration.VersionsConfiguration;
/**
More information about the jboss-envers-commits
mailing list