package com.alvazan.test.db; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import com.alvazan.orm.api.base.CursorToMany; import com.alvazan.orm.api.base.CursorToManyImpl; import com.alvazan.orm.api.base.NoSqlEntityManager; import com.alvazan.orm.api.base.Query; import com.alvazan.orm.api.base.anno.NoSqlEntity; import com.alvazan.orm.api.base.anno.NoSqlId; import com.alvazan.orm.api.base.anno.NoSqlIndexed; import com.alvazan.orm.api.base.anno.NoSqlManyToMany; import com.alvazan.orm.api.base.anno.NoSqlOneToMany; import com.alvazan.orm.api.base.anno.NoSqlQueries; import com.alvazan.orm.api.base.anno.NoSqlQuery; import com.alvazan.orm.api.z8spi.KeyValue; import com.alvazan.orm.api.z8spi.iter.Cursor; @NoSqlEntity @NoSqlQueries({ @NoSqlQuery(name="findBetween", query="select b from Account as b where b.users >= :begin and (b.name = :name or b.name = :name) and b.users < :end"), @NoSqlQuery(name="findAll", query="select * from Account as d ORDER BY name DESC"), @NoSqlQuery(name="findAnd", query="select * FROM Account as a WHERE a.name=:name and a.isActive=:active"), @NoSqlQuery(name="findOr", query="select * FROM Account as a WHERE a.name=:name or a.isActive=:active"), @NoSqlQuery(name ="findByField2", query = "select u from TABLE as u where :someField = u.someField") }) public class Account extends AccountMiddle{ @NoSqlId private String id; @NoSqlIndexed private String name; @NoSqlIndexed private Float users; //@Transient @NoSqlOneToMany private List<Activity> activities = new ArrayList<Activity>(); @NoSqlManyToMany private CursorToMany<Activity> activitiesCursor = new CursorToManyImpl<Activity>(); @NoSqlOneToMany private Set<EmailAccountXref> emails = new HashSet<EmailAccountXref>(); public Account() {} public Account(String id ) { this.id = id; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Float getUsers() { return users; } public void setUsers(Float users) { this.users = users; } public static List<Account> findBetween(NoSqlEntityManager mgr, float begin, float to) { Query<Account> query = mgr.createNamedQuery(Account.class, "findBetween"); query.setParameter("begin", begin); query.setParameter("end", to); return query.getResultList(0, null); } public static List<Account> findAll(NoSqlEntityManager mgr) { Query<Account> query = mgr.createNamedQuery(Account.class, "findAll"); return query.getResultList(0, null); } public static List<Account> findAllBackward(NoSqlEntityManager mgr) { Query<Account> query = mgr.createNamedQuery(Account.class, "findAll"); Cursor<KeyValue<Account>> results = query.getResults(); results.afterLast(); List<Account> accounts = new ArrayList<Account>(); while(results.previous()) { accounts.add(results.getCurrent().getValue()); } return accounts; } public static List<Account> findAnd(NoSqlEntityManager mgr, String name, Boolean active) { Query<Account> query = mgr.createNamedQuery(Account.class, "findAnd"); query.setParameter("name", name); query.setParameter("active", active); return query.getResultList(0, null); } public static List<Account> findAndBackward(NoSqlEntityManager mgr, String name, Boolean active) { Query<Account> query = mgr.createNamedQuery(Account.class, "findAnd"); query.setParameter("name", name); query.setParameter("active", active); Cursor<KeyValue<Account>> results = query.getResults(); results.afterLast(); List<Account> accounts = new ArrayList<Account>(); while(results.previous()) { accounts.add(results.getCurrent().getValue()); } return accounts; } public static List<Account> findOr(NoSqlEntityManager mgr, String name, boolean active) { Query<Account> query = mgr.createNamedQuery(Account.class, "findOr"); query.setParameter("name", name); query.setParameter("active", active); return query.getResultList(0, null); } public static List<Account> findOrBackward(NoSqlEntityManager mgr, String name, Boolean active) { Query<Account> query = mgr.createNamedQuery(Account.class, "findOr"); query.setParameter("name", name); query.setParameter("active", active); Cursor<KeyValue<Account>> results = query.getResults(); results.afterLast(); List<Account> accounts = new ArrayList<Account>(); while(results.previous()) { accounts.add(results.getCurrent().getValue()); } return accounts; } public List<Activity> getActivities() { return activities; } public CursorToMany<Activity> getActivitiesCursor() { return activitiesCursor; } public void addActivity(Activity act1) { activities.add(act1); activitiesCursor.addElement(act1); } public void addEmail(EmailAccountXref ref) { this.emails.add(ref); } public Set<EmailAccountXref> getEmails() { return emails; } }