Skip to content

Instantly share code, notes, and snippets.

@slugmandrew
Last active August 29, 2015 14:09
Show Gist options
  • Save slugmandrew/16302e8740d530a5ac89 to your computer and use it in GitHub Desktop.
Save slugmandrew/16302e8740d530a5ac89 to your computer and use it in GitHub Desktop.
Objectify setup for BaseDao<T>
package com.utilitiessavings.usavappv7.server.dao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
import com.google.common.collect.Lists;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.cmd.Query;
import com.googlecode.objectify.cmd.QueryKeys;
import com.utilitiessavings.usavappv7.server.dao.objectify.Ofy;
import com.utilitiessavings.usavappv7.server.dao.objectify.OfyFactory;
public abstract class BaseDao<T>
{
protected final Class<T> clazz;
@Inject
OfyFactory ofyFactory;
private Ofy lazyOfy;
protected Ofy ofy()
{
if(lazyOfy == null)
{
lazyOfy = ofyFactory.begin();
}
return lazyOfy;
}
protected BaseDao(final Class<T> clazz)
{
this.clazz = clazz;
}
// get
public T get(Key<T> key)
{
return ofy().get(key);
}
public T get(String id)
{
return get(new Long(id));
}
public T get(Long id)
{
return ofy().get(clazz, id);
}
// etc etc
}
package com.utilitiessavings.usavappv7.server.dao.objectify;
import static com.utilitiessavings.usavappv7.server.dao.objectify.OfyService.factory;
import com.googlecode.objectify.ObjectifyFactory;
public class OfyFactory extends ObjectifyFactory
{
public OfyFactory()
{
}
@Override
public Ofy begin()
{
return new Ofy(factory());
// return new Ofy(this);
}
}
package com.utilitiessavings.usavappv7.server.dao.objectify;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyFactory;
import com.googlecode.objectify.impl.ObjectifyImpl;
public class Ofy extends ObjectifyImpl<Objectify>
{
public Ofy(ObjectifyFactory base)
{
super(base);
}
public <T> T get(Key<T> key)
{
return load().key(key).now();
}
public <T> T get(Class<T> clazz, long id)
{
return load().type(clazz).id(id).now();
}
}
package com.utilitiessavings.usavappv7.server.dao.objectify;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyFactory;
import com.googlecode.objectify.ObjectifyService;
import com.utilitiessavings.usavappv7.server.domain.AccContact;
import com.utilitiessavings.usavappv7.server.domain.Account;
import com.utilitiessavings.usavappv7.server.domain.ActionRecord;
import com.utilitiessavings.usavappv7.server.domain.ActionRecordForParent;
import com.utilitiessavings.usavappv7.server.domain.ActionRecordForSupplier;
import com.utilitiessavings.usavappv7.server.domain.BlobFile;
import com.utilitiessavings.usavappv7.server.domain.Comment;
import com.utilitiessavings.usavappv7.server.domain.Contact;
import com.utilitiessavings.usavappv7.server.domain.Contract;
import com.utilitiessavings.usavappv7.server.domain.ElecContract;
import com.utilitiessavings.usavappv7.server.domain.ElecSupply;
import com.utilitiessavings.usavappv7.server.domain.ElecTariff;
import com.utilitiessavings.usavappv7.server.domain.ElecTariffBook;
import com.utilitiessavings.usavappv7.server.domain.GasSupply;
import com.utilitiessavings.usavappv7.server.domain.GasTariff;
import com.utilitiessavings.usavappv7.server.domain.GasTariffBook;
import com.utilitiessavings.usavappv7.server.domain.GoogleUser;
import com.utilitiessavings.usavappv7.server.domain.MtcGroup;
import com.utilitiessavings.usavappv7.server.domain.Offer;
import com.utilitiessavings.usavappv7.server.domain.PostcodeGroup;
import com.utilitiessavings.usavappv7.server.domain.Quote;
import com.utilitiessavings.usavappv7.server.domain.QuotePage;
import com.utilitiessavings.usavappv7.server.domain.Site;
import com.utilitiessavings.usavappv7.server.domain.SuppContact;
import com.utilitiessavings.usavappv7.server.domain.Supplier;
import com.utilitiessavings.usavappv7.server.domain.Supply;
import com.utilitiessavings.usavappv7.server.domain.Tariff;
import com.utilitiessavings.usavappv7.server.domain.TariffBook;
import com.utilitiessavings.usavappv7.shared.other.PerMwhCommission;
import com.utilitiessavings.usavappv7.shared.other.SinglePaymentCommission;
import com.utilitiessavings.usavappv7.shared.other.StandingChargeCommission;
import com.utilitiessavings.usavappv7.shared.other.UnitRateCommission;
public class OfyService
{
static
{
factory().register(GoogleUser.class);
factory().register(Supplier.class);
factory().register(Account.class);
factory().register(Site.class);
// etc etc
}
public static Objectify ofy()
{
return ObjectifyService.ofy();
}
public static ObjectifyFactory factory()
{
return ObjectifyService.factory();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment