Guest User

Untitled

a guest
Jan 22nd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. package utils;
  2.  
  3. import java.util.Properties;
  4. import org.hibernate.*;
  5. import org.hibernate.cfg.*;
  6. import org.webdsl.*;
  7. import org.hibernate.event.internal.DefaultFlushEntityEventListener;
  8. import org.hibernate.event.internal.DefaultSaveOrUpdateEventListener;
  9. import org.hibernate.event.service.spi.EventListenerRegistry;
  10. import org.hibernate.event.service.internal.EventListenerRegistryImpl;
  11. import org.hibernate.event.spi.EventType;
  12. import org.hibernate.event.spi.FlushEntityEvent;
  13. import org.hibernate.event.spi.SaveOrUpdateEvent;
  14. import org.hibernate.metamodel.Metadata;
  15. import org.hibernate.metamodel.MetadataSources;
  16. import org.hibernate.metamodel.source.internal.MetadataImpl;
  17. import org.hibernate.service.BasicServiceRegistry;
  18. import org.hibernate.service.ServiceRegistryBuilder;
  19. import org.hibernate.service.spi.SessionFactoryServiceRegistry;
  20. import java.util.*;
  21. import webdsl.generated.domain.*;
  22.  
  23. @SuppressWarnings("unused") public class HibernateUtilConfigured
  24. {
  25. private static final SessionFactory sessionFactory;
  26.  
  27. private static MetadataSources metadatasources;
  28.  
  29. private static BasicServiceRegistry registry;
  30.  
  31. static
  32. {
  33. try
  34. {
  35. registry = new ServiceRegistryBuilder().addService(EventListenerRegistry.class, new EventListenerRegistryImpl()).buildServiceRegistry();
  36. metadatasources = new MetadataSources(registry);
  37. metadatasources.addPackage("utils");
  38. metadatasources.addAnnotatedClass(utils.ApplicationContextProperty.class);
  39. metadatasources.addAnnotatedClass(utils.File.class);
  40. metadatasources.addPackage("org.webdsl.search");
  41. metadatasources.addAnnotatedClass(org.webdsl.search.SearchNamespace.class);
  42. metadatasources.addPackage("org.webdsl.generated");
  43. metadatasources.addAnnotatedClass(webdsl.generated.domain.Bla.class);
  44. metadatasources.addAnnotatedClass(webdsl.generated.domain.Commit.class);
  45. metadatasources.addAnnotatedClass(webdsl.generated.domain.dummy_webdsl_entity.class);
  46. metadatasources.addAnnotatedClass(webdsl.generated.domain.Entry.class);
  47. metadatasources.addAnnotatedClass(webdsl.generated.domain.GithubRepo.class);
  48. metadatasources.addAnnotatedClass(webdsl.generated.domain.Project.class);
  49. metadatasources.addAnnotatedClass(webdsl.generated.domain.QueuedEmail.class);
  50. metadatasources.addAnnotatedClass(webdsl.generated.domain.Repo.class);
  51. metadatasources.addAnnotatedClass(webdsl.generated.domain.RequestLogEntry.class);
  52. metadatasources.addAnnotatedClass(webdsl.generated.domain.RequestLogEntryParam.class);
  53. metadatasources.addAnnotatedClass(webdsl.generated.domain.Settings.class);
  54. metadatasources.addAnnotatedClass(webdsl.generated.domain.SvnRepo.class);
  55. metadatasources.addAnnotatedClass(webdsl.generated.domain.ValidationException.class);
  56. metadatasources.addAnnotatedClass(webdsl.generated.domain.ValidationExceptionMultiple.class);
  57. EventListenerRegistry eventListenerRegistry = registry.getService(EventListenerRegistry.class);
  58. eventListenerRegistry.setListeners(EventType.SAVE_UPDATE, new SetVersionSaveOrUpdateEventListener());
  59. eventListenerRegistry.setListeners(EventType.FLUSH_ENTITY, new SetValidationEventListener());
  60. sessionFactory = metadatasources.buildMetadata().buildSessionFactory();
  61. }
  62. catch(Throwable ex)
  63. {
  64. throw new ExceptionInInitializerError(ex);
  65. }
  66. }
  67.  
  68. public static SessionFactory getSessionFactory()
  69. {
  70. return sessionFactory;
  71. }
  72.  
  73. public static MetadataSources getMetaDataSources()
  74. {
  75. return metadatasources;
  76. }
  77.  
  78. @SuppressWarnings("serial") private static class SetVersionSaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener
  79. {
  80. public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException
  81. {
  82. setVersion(event.getObject());
  83. super.onSaveOrUpdate(event);
  84. }
  85.  
  86. public void setVersion(Object o)
  87. {
  88. if(org.hibernate.Hibernate.isInitialized(o) && o instanceof WebDSLEntity)
  89. {
  90. WebDSLEntity we = (WebDSLEntity)o;
  91. if(we.getVersion() <= 0)
  92. {
  93. we.setVersion(1);
  94. }
  95. }
  96. }
  97. }
  98.  
  99. @SuppressWarnings("serial") private static class SetValidationEventListener extends DefaultFlushEntityEventListener
  100. {
  101. public void onFlushEntity(FlushEntityEvent event) throws HibernateException
  102. {
  103. validate(event.getEntity());
  104. super.onFlushEntity(event);
  105. }
  106.  
  107. public void validate(Object o)
  108. {
  109. if(o instanceof WebDSLEntity)
  110. {
  111. WebDSLEntity we = (WebDSLEntity)o;
  112. AbstractPageServlet aps = ThreadLocalPage.get();
  113. if(aps != null)
  114. {
  115. aps.addEntityToValidateAfterAction(we);
  116. }
  117. }
  118. }
  119. }
  120. }
Add Comment
Please, Sign In to add comment