Advertisement
Guest User

Untitled

a guest
Mar 14th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. package co.peewah.ems.utils;
  2.  
  3. import com.google.appengine.api.utils.SystemProperty;
  4.  
  5. import java.beans.PropertyVetoException;
  6. import java.io.IOException;
  7. import java.sql.SQLException;
  8. import java.util.AbstractMap.SimpleEntry;
  9. import java.util.Date;
  10. import java.util.GregorianCalendar;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. import java.util.Properties;
  15. import java.util.UUID;
  16. import java.util.logging.Level;
  17. import java.util.logging.Logger;
  18. import javax.persistence.EntityManager;
  19. import javax.persistence.EntityManagerFactory;
  20. import javax.persistence.Persistence;
  21. import javax.persistence.Query;
  22. import javax.persistence.TypedQuery;
  23. import javax.persistence.criteria.CriteriaQuery;
  24. import javax.persistence.criteria.Root;
  25.  
  26. import org.hibernate.cfg.AvailableSettings;
  27.  
  28.  
  29. /**
  30. *
  31. * @author Muacito
  32. */
  33. public class PersistenceService
  34. {
  35. private static final EntityManagerFactory EMF = createEntityManagerFactory();
  36.  
  37. private static EntityManager entityManager = EMF.createEntityManager();
  38.  
  39. private static EntityManagerFactory createEntityManagerFactory()
  40. {
  41. //String mode = "";
  42. /*
  43. if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development)
  44. {
  45. mode = "dev.";
  46. }
  47. */
  48.  
  49. Map<String, Object> properties = new HashMap<>();
  50.  
  51. //Properties properties = new Properties();
  52.  
  53. //properties.put("javax.persistence.jdbc.driver", System.getProperty("persistence." + mode + "db.driver"));
  54. //properties.put("javax.persistence.jdbc.url", System.getProperty("persistence." + mode + "db.url"));
  55. //properties.put("javax.persistence.jdbc.user", System.getProperty("persistence." + mode + "db.user"));
  56. //properties.put("javax.persistence.jdbc.password", System.getProperty("persistence." + mode + "db.password"));
  57. try
  58. {
  59. properties.put(AvailableSettings.DATASOURCE, DataSource.getInstance());
  60. } catch (IOException | SQLException | PropertyVetoException e)
  61. {
  62. e.printStackTrace();
  63. }
  64.  
  65.  
  66. System.out.println("----------------------------");
  67. System.out.println("----------------------------");
  68. System.out.println(properties);
  69. System.out.println("----------------------------");
  70. System.out.println("----------------------------");
  71.  
  72. return Persistence.createEntityManagerFactory("Demo", properties);
  73. }
  74.  
  75. private static EntityManager getEntityManager()
  76. {
  77. if (!PersistenceService.entityManager.isOpen())
  78. {
  79. PersistenceService.entityManager = PersistenceService.EMF.createEntityManager();
  80. }
  81.  
  82. return PersistenceService.entityManager;
  83. }
  84.  
  85. public static <T> void create(T entity)
  86. {
  87. try
  88. {
  89. if (entity.getClass().getMethod("getId").invoke(entity) == null)
  90. {
  91. entity.getClass().getMethod("setId", String.class).invoke(entity,
  92. UUID.randomUUID().toString().replace("-", ""));
  93. }
  94.  
  95. if (entity.getClass().getMethod("getCreated").invoke(entity) == null)
  96. {
  97. entity.getClass().getMethod("setCreated", Date.class).invoke(entity,
  98. GregorianCalendar.getInstance().getTime());
  99. }
  100.  
  101. getEntityManager().getTransaction().begin();
  102.  
  103. getEntityManager().persist(entity);
  104.  
  105. getEntityManager().flush();
  106.  
  107. getEntityManager().getTransaction().commit();
  108.  
  109. } catch (Exception ex)
  110. {
  111. Logger.getLogger(PersistenceService.class.getName()).log(Level.SEVERE, null, ex);
  112. getEntityManager().getTransaction().rollback();
  113. }
  114. }
  115.  
  116. public static <T> void edit(T entity)
  117. {
  118. try
  119. {
  120. if (entity.getClass().getMethod("getUpdated").invoke(entity) == null)
  121. {
  122. entity.getClass().getMethod("setUpdated", Date.class).invoke(entity,
  123. GregorianCalendar.getInstance().getTime());
  124. }
  125.  
  126. getEntityManager().getTransaction().begin();
  127.  
  128. getEntityManager().merge(entity);
  129.  
  130. getEntityManager().flush();
  131.  
  132. getEntityManager().getTransaction().commit();
  133. } catch (Exception ex)
  134. {
  135. Logger.getLogger(PersistenceService.class.getName()).log(Level.SEVERE, null, ex);
  136. getEntityManager().getTransaction().rollback();
  137. }
  138. }
  139.  
  140. public static <T> void remove(T entity)
  141. {
  142. try
  143. {
  144. getEntityManager().getTransaction().begin();
  145.  
  146. getEntityManager().remove(entity);
  147.  
  148. getEntityManager().flush();
  149.  
  150. getEntityManager().getTransaction().commit();
  151.  
  152. } catch (Exception ex)
  153. {
  154. Logger.getLogger(PersistenceService.class.getName()).log(Level.SEVERE, null, ex);
  155. getEntityManager().getTransaction().rollback();
  156. }
  157. }
  158.  
  159. public static <T> List<T> filter(Class<T> entityClass, String query, SimpleEntry<String, Object>... parameters)
  160. {
  161. TypedQuery<T> typedQuery = getEntityManager().createQuery(query, entityClass);
  162.  
  163. for (SimpleEntry<String, Object> param : parameters)
  164. {
  165. typedQuery.setParameter(param.getKey(), param.getValue());
  166. }
  167.  
  168. return typedQuery.getResultList();
  169. }
  170.  
  171. public static <T> T find(Class<T> entityClass, Object id)
  172. {
  173. T entity = getEntityManager().find(entityClass, id);
  174.  
  175. return entity;
  176. }
  177.  
  178. public static <T> List<T> findBy(Class<T> entityClass, String criteria, Object value)
  179. {
  180. String c = criteria.replaceFirst(criteria.charAt(0) + "", (criteria.charAt(0) + "").toLowerCase());
  181.  
  182. TypedQuery<T> query = getEntityManager().createNamedQuery(entityClass.getSimpleName() + ".findBy" + criteria,
  183. entityClass);
  184. query.setParameter(c, value);
  185.  
  186. return query.getResultList();
  187. }
  188.  
  189. public static <T> List<T> findAll(Class<T> entityClass)
  190. {
  191. CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
  192. cq.select(cq.from(entityClass));
  193.  
  194. return getEntityManager().createQuery(cq).getResultList();
  195. }
  196.  
  197. public static <T> List<T> findRange(Class<T> entityClass, int[] range)
  198. {
  199. CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
  200. cq.select(cq.from(entityClass));
  201. Query q = getEntityManager().createQuery(cq);
  202. q.setMaxResults(range[1] - range[0] + 1);
  203. q.setFirstResult(range[0]);
  204.  
  205. return q.getResultList();
  206. }
  207.  
  208. public static <T> int count(Class<T> entityClass)
  209. {
  210. CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
  211. Root<T> rt = cq.from(entityClass);
  212. cq.select(getEntityManager().getCriteriaBuilder().count(rt));
  213. Query q = getEntityManager().createQuery(cq);
  214.  
  215. return ((Long) q.getSingleResult()).intValue();
  216. }
  217. }
  218.  
  219. package co.peewah.ems.utils;
  220.  
  221. import java.beans.PropertyVetoException;
  222. import java.io.IOException;
  223. import java.sql.Connection;
  224. import java.sql.SQLException;
  225.  
  226. import org.apache.commons.dbcp.BasicDataSource;
  227.  
  228. import com.google.appengine.api.utils.SystemProperty;
  229.  
  230. /**
  231. *
  232. * @author csacanam
  233. *
  234. */
  235. public class DataSource
  236. {
  237.  
  238. private static DataSource datasource;
  239. private BasicDataSource ds;
  240.  
  241. private DataSource() throws IOException, SQLException, PropertyVetoException
  242. {
  243. ds = new BasicDataSource();
  244.  
  245.  
  246. String mode = "";
  247.  
  248. if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development)
  249. {
  250. mode = "dev.";
  251. }
  252.  
  253. String user = System.getProperty("persistence." + mode + "db.user");
  254. String password = System.getProperty("persistence." + mode + "db.password");
  255. String address = System.getProperty("persistence." + mode + "db.url");
  256. String driver = System.getProperty("persistence." + mode + "db.driver");
  257.  
  258. // Create and configure DBCP DataSource
  259. ds.setDriverClassName(driver);
  260. ds.setUrl(address);
  261. ds.setUsername(user);
  262. ds.setPassword(password);
  263.  
  264. ds.setMinIdle(5);
  265. ds.setMaxIdle(20);
  266.  
  267. ds.setMaxOpenPreparedStatements(180);
  268. }
  269.  
  270. public static DataSource getInstance() throws IOException, SQLException, PropertyVetoException
  271. {
  272. if(datasource == null)
  273. {
  274. datasource = new DataSource();
  275. }
  276.  
  277. return datasource;
  278. }
  279.  
  280. public Connection getConnection() throws SQLException
  281. {
  282. return this.ds.getConnection();
  283. }
  284.  
  285.  
  286.  
  287.  
  288. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement