Class SyncUtil


  • public class SyncUtil
    extends java.lang.Object
    Provides utility methods used by the structure synchronization implementation.
    Since:
    6.2.0
    Version:
    $Revision: 25303 $ $Date: 2022-10-22 22:48:02 -0300 (Sat, 22 Oct 2022) $
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String STRUCTURE_CURRENT_VERSION
      The structure element version used currently.
      static java.lang.String STRUCTURE_EMPTY_VERSION
      The assumed structure version for structure with no version.
    • Constructor Summary

      Constructors 
      Constructor Description
      SyncUtil()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean arePropertiesEquivalent​(java.lang.Object obj1, java.lang.Object obj2)
      Returns whether the properties of two objects are equivalent.
      static void eagerLoad​(org.hibernate.Session session, java.util.Collection<?> objs)
      Eager loads the given hibernate entity objects.
      static ChannelResume getCurrentChannel()
      Returns the channel that corresponds to the file currently being read or written.
      static boolean isDefaultValue​(java.lang.reflect.Field field, java.lang.Object value)
      Indicates whether a value is the default value for a field.
      static boolean isEquivalent​(java.lang.Object obj1, java.lang.Object obj2)
      Returns whether two objects are equivalent.
      static boolean isEquivalentSortedCollection​(java.util.Collection<?> col1, java.util.Collection<?> col2)
      Returns whether two sorted collections are equivalent.
      static java.lang.String normalizeFilename​(java.lang.String filename)
      Normalizes a filename by replacing special characters by underscore.
      static <T extends IFileElement>
      T
      read​(java.lang.Class<T> clazz, IFile file, ChannelResume currentChannel)
      Reads a structure file.
      static void shallowUpdate​(org.hibernate.Session session, java.lang.Object obj)
      Performs a shallow update on a hibernate entity object.
      static void writeIfModified​(IFileElement obj, IFile file, ChannelResume currentChannel)
      Writes a structure file, only if the semantics in the object is different.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • STRUCTURE_CURRENT_VERSION

        public static final java.lang.String STRUCTURE_CURRENT_VERSION
        The structure element version used currently.
        Since:
        15.0.0
        See Also:
        Constant Field Values
      • STRUCTURE_EMPTY_VERSION

        public static final java.lang.String STRUCTURE_EMPTY_VERSION
        The assumed structure version for structure with no version.
        Since:
        15.0.0
        See Also:
        Constant Field Values
    • Constructor Detail

      • SyncUtil

        public SyncUtil()
    • Method Detail

      • getCurrentChannel

        public static ChannelResume getCurrentChannel()
        Returns the channel that corresponds to the file currently being read or written.
        Returns:
        the channel.
        Since:
        6.2.0
        See Also:
        #read(Class, File, ChannelResume), #write(Object, File, ChannelResume), #writeIfModified(Object, File, ChannelResume)
      • writeIfModified

        public static void writeIfModified​(IFileElement obj,
                                           IFile file,
                                           ChannelResume currentChannel)
        Writes a structure file, only if the semantics in the object is different. If the file already exists it is overwritten.

        The write operation will occur locally or in the portal cluster depending on the file object type. If it is a IFile the write will be cluster-wide, otherwise it will occur only locally.

        Parameters:
        obj - the object to be written.
        file - the file.
        currentChannel - the channel the file belongs to.
        Since:
        8.0.0
      • isDefaultValue

        public static boolean isDefaultValue​(java.lang.reflect.Field field,
                                             java.lang.Object value)
        Indicates whether a value is the default value for a field.
        Parameters:
        field - the field.
        value - the value.
        Returns:
        true if the value is the default value, false otherwise.
        Since:
        6.2.0
        See Also:
        IDefaultAware
      • isEquivalentSortedCollection

        public static boolean isEquivalentSortedCollection​(java.util.Collection<?> col1,
                                                           java.util.Collection<?> col2)
        Returns whether two sorted collections are equivalent. They are considered equivalent if are of the same size and all values returned by their iterators are equivalent, in the same order.
        Parameters:
        col1 - a collection.
        col2 - the other collection.
        Returns:
        true if they are equivalent, false otherwise.
        Since:
        6.2.0
      • isEquivalent

        public static boolean isEquivalent​(java.lang.Object obj1,
                                           java.lang.Object obj2)
        Returns whether two objects are equivalent.

        By default only fields that would be output to the object's XML representation are compared. Relations to other entities are not compared (performs only a shallow comparison).

        Custom equivalence rules are used if the object implements ICustomEquivalence.

        Parameters:
        obj1 - a object.
        obj2 - other object.
        Returns:
        true if the objects are equivalent, false otherwise.
        Since:
        6.2.0
      • arePropertiesEquivalent

        public static boolean arePropertiesEquivalent​(java.lang.Object obj1,
                                                      java.lang.Object obj2)
        Returns whether the properties of two objects are equivalent.

        By default only fields that would be output to the object's XML representation are compared. Relations to other entities are not compared (performs only a shallow comparison).

        Custom equivalence rules are not used. To use them, use isEquivalent(Object, Object) instead of this method.

        Parameters:
        obj1 - a object.
        obj2 - other object.
        Returns:
        true if the objects properties are equivalent, false otherwise.
        Since:
        6.2.0
        See Also:
        isEquivalent(Object, Object), isEquivalentSortedCollection(Collection, Collection)
      • shallowUpdate

        public static void shallowUpdate​(org.hibernate.Session session,
                                         java.lang.Object obj)
        Performs a shallow update on a hibernate entity object.
        Parameters:
        session - hibernate session for persistence access.
        obj - object representing updated data.
        Since:
        6.2.0
      • eagerLoad

        public static void eagerLoad​(org.hibernate.Session session,
                                     java.util.Collection<?> objs)
        Eager loads the given hibernate entity objects. Initializes all of the object's fields that are relations to other entities. Does not cascade the eager loading inside other entities.
        Parameters:
        session - hibernate session for persistence access.
        objs - the objects to load. All of them must be of the same class.
        Since:
        6.2.0
      • normalizeFilename

        public static java.lang.String normalizeFilename​(java.lang.String filename)
        Normalizes a filename by replacing special characters by underscore.
        Parameters:
        filename - the filename to be normalized.
        Returns:
        the normalization result.
        Since:
        6.2.0