Skip to content

Instantly share code, notes, and snippets.

View jdewind's full-sized avatar

Justin DeWind jdewind

  • LifeWorks
  • Grand Rapids
View GitHub Profile
@jdewind
jdewind / gist:4184216
Created December 1, 2012 19:13
Fun inline list comprehension in Haskell
[x | x <- (zip [1..] ['A'..'Z']), even (fst x)]
@jdewind
jdewind / gist:3317310
Created August 10, 2012 19:44
Guice Interceptor Bindings
@Override
protected void configure() {
RefreshEntityInterceptor refreshEntityInterceptor = new RefreshEntityInterceptor();
requestInjection(refreshEntityInterceptor);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(RefreshEntity.class), refreshEntityInterceptor);
}
public class RefreshEntityInterceptor implements MethodInterceptor {
@Inject
private Provider<EntityManager> entityManagerProvider;
@Inject
protected Logger logger;
@SuppressWarnings("unchecked")
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RefreshEntity {
}
@jdewind
jdewind / gist:3317018
Created August 10, 2012 19:15
AOP Solution
@RefreshEntity
public List<SchoolBus> findAll() {
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<SchoolBus> criteriaQuery = criteriaBuilder.createQuery(SchoolBus.class);
Root<SchoolBus> table = criteriaQuery.from(SchoolBus.class);
TypedQuery<SchoolBus> query = getEntityManager().createQuery(criteriaQuery.select(table).orderBy(criteriaBuilder.asc(table.get("busNumber"))));
return query.getResultList();
}
@RefreshEntity
@jdewind
jdewind / gist:3316568
Created August 10, 2012 18:36
Refresh with Helper Method
public List<SchoolBus> findAll() {
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<SchoolBus> criteriaQuery = criteriaBuilder.createQuery(SchoolBus.class);
Root<SchoolBus> table = criteriaQuery.from(SchoolBus.class);
TypedQuery<SchoolBus> query = getEntityManager().createQuery(criteriaQuery.select(table).orderBy(criteriaBuilder.asc(table.get("busNumber"))));
refreshSchoolBuses(query.getResultList());
return query.getResultList();
}
public SchoolBus findById(Long id) {
@jdewind
jdewind / gist:3316217
Created August 10, 2012 18:03
Refresh Entity
public List<SchoolBus> findAll() {
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<SchoolBus> criteriaQuery = criteriaBuilder.createQuery(SchoolBus.class);
Root<SchoolBus> table = criteriaQuery.from(SchoolBus.class);
TypedQuery<SchoolBus> query = getEntityManager().createQuery(criteriaQuery.select(table).orderBy(criteriaBuilder.asc(table.get("busNumber"))));
/*
/ Refresh all the school buses
*/
for (SchoolBus schoolBus : query.getResultList()) {
schoolBus.getStudents().clear();
@jdewind
jdewind / gist:3314722
Created August 10, 2012 14:43
AOP Transaction
@Transactional
public void save(Object entity) {
getEntityManager().persist(entity);
}
@jdewind
jdewind / gist:3314627
Created August 10, 2012 14:29
Manual Transaction
public void save(Object entity) {
final EntityTransaction transaction = getEntityManager().getTransaction();
transaction.begin();
try {
getEntityManager().persist(entity);
transaction.commit();
} catch (Throwable e) {
transaction.rollback();
throw new RuntimeException(e);
}
(def config-file (ref nil))
(def data (ref []))
(defn -main [& args]
(let [{:keys [config] inputs}] (cli args ["--config" "Config file"])
(dosync (ref-set config-file config))
(println @config-file)
(dosync (ref-set data [1 2 3]))
(println @data)))