package cn.newgxu.bbs.domain.group; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import cn.newgxu.bbs.domain.group.impl.BasicPermission; import cn.newgxu.bbs.domain.user.User; import cn.newgxu.jpamodel.ObjectNotFoundException; /** * * @author polly * @since 4.0.0 * @version $Revision 1.1$ */ @Entity @Table(name = "basic_group") public class BasicGroup extends UserGroup { private static final Log log = LogFactory.getLog(BasicGroup.class); private static final long serialVersionUID = -7039162792010861264L; public BasicGroup() { permission = new BasicPermission(); } @Id @Column(name = "id") // @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq") // @SequenceGenerator(name="id_seq", sequenceName="seq_basic_group") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id = -1; @Column(name = "group_name") private String groupName; @Column(name = "max_power") private int maxPower; @Column(name = "leavel_up_exp") private int leavelUpExp; private int encouragement; private int agio; @Column(name = "display_color") private String displayColor; @Override public int getAgio() { return agio; } @Override public String getDisplayColor() { return displayColor; } @Override public String getGroupName() { return groupName; } @Override public int getMaxPower() { return maxPower; } public int getEncouragement() { return encouragement; } public void setEncouragement(int encouragement) { this.encouragement = encouragement; } @Override public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public int getLeavelUpExp() { return leavelUpExp; } public void setLeavelUpExp(int leavelUpExp) { this.leavelUpExp = leavelUpExp; } public void setAgio(int agio) { this.agio = agio; } public void setDisplayColor(String displayColor) { this.displayColor = displayColor; } public void setGroupName(String groupName) { this.groupName = groupName; } public void setMaxPower(int maxPower) { this.maxPower = maxPower; } // ------------------------------------------------ public static BasicGroup get(int groupId) throws ObjectNotFoundException { return (BasicGroup) getById(BasicGroup.class, groupId); } public static BasicGroup getCertainExist(int groupId) { try { return get(groupId); } catch (ObjectNotFoundException e) { log.error(e); log.error("严重错误:basicGroup 没有找到。 id=" + groupId); throw new RuntimeException(); } } @SuppressWarnings("unchecked") public UserGroup getNextGroup() { List<UserGroup> groups = Q( "from BasicGroup where leavelUpExp > ?1 order by leavelUpExp asc ", P(1, this.leavelUpExp)).getResultList(); if (groups.size() >= 1) { try { return groups.get(0); } catch (Exception e) { return null; } } return null; } @SuppressWarnings("unchecked") @Override public UserGroup getGroupByExp(int exp) { List<UserGroup> groups = Q( "from BasicGroup where leavelUpExp <= ?1 order by leavelUpExp desc", P(1, exp)).getResultList(); if (groups.size() >= 1) { try { return groups.get(0); } catch (Exception e) { return null; } } return null; } @Override public void leavelUp(User user) { BasicGroup group = (BasicGroup) getNextGroup(); if (group == null) { throw new RuntimeException(); } if (!isAuthLeavelUp(user)) { return; // throw new RuntimeException(); } user.setGroupId(group.getId()); user.addMoney(group.getEncouragement()); user.save(); } @Override public boolean isAuthLeavelUp(User user) { if (user.getExp() >= getNextGroup().getLeavelUpExp()) return true; else return false; } @Override public int getTypeId() { return GroupManager.BASIC_GROUP; } @SuppressWarnings("unchecked") public static List<UserGroup> getGroups() { return (List<UserGroup>) Q("from BasicGroup order by id asc") .getResultList(); } @SuppressWarnings("unchecked") public static List<BasicGroup> getBasicGroups() { return (List<BasicGroup>) Q("from BasicGroup b ").getResultList(); } @Override public boolean isEditTitleFree() { return false; } }