Update of
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person
In directory
james.mmbase.org:/tmp/cvs-serv32158/community/src/java/com/finalist/cmsc/services/community/person
Modified Files:
PersonHibernateService.java PersonService.java
Log Message:
CMSC-996 code improve.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person
See also: http://www.mmbase.org/jira/browse/CMSC-996
Index: PersonHibernateService.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- PersonHibernateService.java 30 Jul 2008 09:52:38 -0000 1.15
+++ PersonHibernateService.java 31 Jul 2008 02:29:28 -0000 1.16
@@ -40,12 +40,15 @@
private AuthenticationService authenticationService;
private PreferenceService preferenceService;
+
@Required
public void setPreferenceService(PreferenceService preferenceService) {
this.preferenceService = preferenceService;
}
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional(readOnly = true)
public Person getPersonByUserId(String userId) {
if (StringUtils.isBlank(userId)) {
@@ -54,7 +57,9 @@
return findPersonByUserId(userId);
}
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional
@SuppressWarnings("unchecked")
public List<Person> getPersons(Person example) {
@@ -67,7 +72,9 @@
}
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional
public List<Person> getLikePersons(Person example) {
if (example == null) {
@@ -106,38 +113,35 @@
return person;
}
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional
public void updatePerson(Person person) {
getSession().saveOrUpdate(person);
getSession().flush();
}
+
@Transactional
- public List<Person> getAllPeople(PagingStatusHolder holder) {
+ public List<Person> getAllPeople() {
return getAssociatedPersons(null);
}
+
@Transactional
public List<Person> getAllPersons() {
Criteria criteria = getSession().createCriteria(Person.class);
return criteria.list();
}
+
@Transactional(readOnly = true)
- public int countAllPersons(){
+ public int countAllPersons() {
Criteria criteria = getSession().createCriteria(Person.class);
return criteria.list().size();
}
- private void addOrder(PagingStatusHolder holder, String propertyName,
- Criteria criteria) {
- String dir = holder.getDir();
- if ("asc".equals(dir)) {
- criteria.addOrder(Property.forName(propertyName).asc());
- }
- if ("desc".equals(dir)) {
- criteria.addOrder(Property.forName(propertyName).desc());
- }
- }
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional
public boolean deletePersonByAuthenticationId(Long authenticationId) {
if (authenticationId != null) {
@@ -166,7 +170,9 @@
this.authenticationService = authenticationService;
}
- /** [EMAIL PROTECTED] */
+ /**
+ * [EMAIL PROTECTED]
+ */
@Transactional(readOnly = true)
public Person getPersonByAuthenticationId(Long authenticationId) {
Person person = null;
@@ -178,9 +184,9 @@
}
@Transactional(readOnly = true)
- public Person getPersonByEmail(String email){
+ public Person getPersonByEmail(String email) {
Person person = null;
- if(email != null){
+ if (email != null) {
Criteria criteria =
getSession().createCriteria(Person.class).add(Restrictions.eq("email", email));
person = findPersonByCriteria(criteria);
}
@@ -188,10 +194,10 @@
}
@Transactional
- public void batchClean(){
+ public void batchClean() {
List<Person> persons = getAllPersons();
for (Person tempPerson : persons) {
- if(null!=tempPerson){
+ if (null != tempPerson) {
long authId = tempPerson.getAuthenticationId();
deleteRelationRecord(authId);
}
@@ -224,7 +230,7 @@
@Transactional(readOnly = true)
public List<PersonExportImportVO> getPersonExportImportVO() {
List<PersonExportImportVO> XPersons = new
ArrayList<PersonExportImportVO>();
- List<Person> persons =getAllPersons();
+ List<Person> persons = getAllPersons();
if (null == persons) {
return null;
}
@@ -267,7 +273,7 @@
StringBuffer strb = new StringBuffer();
basicGetAssociatedPersons(conditions, strb);
- strb.append(" "+holder.getSortToken());
+ strb.append(holder.getSortToken());
Query q = getSession().createQuery(strb.toString());
@@ -275,37 +281,42 @@
return q.list();
}
- private void basicGetAssociatedPersons(Map conditions, StringBuffer strb){
- strb.append("select distinct person from Person person , Authentication
authentication "
- + "left join authentication.authorities authority "
- + "where person.authenticationId = authentication.id");
- if (conditions!=null&&conditions.containsKey("fullname")) {
+
+ private void basicGetAssociatedPersons(Map<String, String> conditions,
StringBuffer strb) {
+
+ strb.append("select distinct person from Person person , Authentication
authentication ").
+ append("left join authentication.authorities authority ").
+ append("where person.authenticationId = authentication.id");
+
+ if (conditions.size() < 1) {
+ return;
+ }
+
+ if (conditions.containsKey("fullname")) {
String[] names = conditions.get("fullname").toString().split(" ");
- if (names.length == 2)
+ if (names.length == 2) {
strb.append(" and (person.firstName='" + names[0]
+ "'and person.lastName='" + names[1] + "')"
+ "or person.firstName='" + names[0] + " " + names[1]
+ "'" + "or person.lastName='" + names[0] + " "
+ names[1] + "'");
- else if (names.length == 1)
+ }
+ else if (names.length == 1) {
strb.append(" and person.firstName='" + names[0]
+ "' or person.lastName='" + names[0] + "'");
}
- if (conditions!=null&&conditions.containsKey("username")) {
- String username = conditions.get("username").toString();
- strb.append(" and upper(authentication.userId) like '%"
- + username.toUpperCase() + "%'");
- }
- if (conditions!=null&&conditions.containsKey("email")) {
- String email = conditions.get("email").toString();
- strb.append(" and upper(person.email) like '%"
- + email.toUpperCase() + "%'");
}
- if (conditions!=null&&conditions.containsKey("group")) {
+
+ strb.append(condition("and upper(authentication.userId) like '[EMAIL
PROTECTED]", "username", conditions));
+ strb.append(condition("and upper(person.email) like '[EMAIL
PROTECTED]'", "email", conditions));
+
+
+ if (conditions.containsKey("group")) {
if (!conditions.containsKey("strict")) {
- String[] groups = conditions.get("group").toString().split(" ");
- if (groups.length < 1)
+ String[] groups = conditions.get("group").split(" ");
+ if (groups.length < 1) {
return;
+ }
strb.append(" and (");
strb.append("upper(authority.name)like '%"
+ groups[0].toUpperCase() + "%'");
@@ -314,17 +325,40 @@
+ groups[i].toUpperCase() + "%'");
}
strb.append(")");
- }else{
+ }
+ else {
String groups = conditions.get("group").toString();
- strb.append(" and authority.name='"+groups+"'");
+ strb.append(" and authority.name='" + groups + "'");
}
}
+
}
+
@Transactional(readOnly = true)
- public int getAssociatedPersonsNum(Map conditions,PagingStatusHolder
holder) {
+ public int getAssociatedPersonsNum(Map<String, String> conditions) {
StringBuffer strb = new StringBuffer();
- basicGetAssociatedPersons(conditions,strb);
+ basicGetAssociatedPersons(conditions, strb);
Query q = getSession().createQuery(strb.toString());
return q.list().size();
}
+
+ private static String condition(String query, String name, Map<String,
String> conditions) {
+ String condition = "";
+
+ if (conditions.containsKey(name)) {
+ if (query.contains("%")) {
+ query = StringUtils.replace(query, "%", "%%");
+ }
+ query = StringUtils.replace(query, "@", "%s");
+
+ condition = String.format(query, conditions.get(name));
+ }
+
+ if (condition.length() > 1 && !condition.startsWith(" ")) {
+ condition += " ";
+ }
+
+ return condition;
+ }
+
}
Index: PersonService.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- PersonService.java 30 Jul 2008 09:52:38 -0000 1.11
+++ PersonService.java 31 Jul 2008 02:29:28 -0000 1.12
@@ -63,7 +63,7 @@
List<Person> getAllPersons();
- public List<Person> getAllPeople(PagingStatusHolder holder);
+ public List<Person> getAllPeople();
public int countAllPersons();
@@ -79,5 +79,5 @@
public List<Person> getAssociatedPersons(Map conditions);
- public int getAssociatedPersonsNum(Map map,PagingStatusHolder holder);
+ public int getAssociatedPersonsNum(Map<String,String> map);
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs