remove lastLogin attribute to improve svn and bzr performance

This commit is contained in:
Sebastian Sdorra
2011-01-13 20:19:06 +01:00
parent deae748e72
commit f9dcf08f31
5 changed files with 114 additions and 44 deletions

View File

@@ -131,17 +131,66 @@ public class User
*
*
* @param user
*
* @return
*/
public void copyProperties(User user)
public boolean copyProperties(User user)
{
return copyProperties(user, true);
}
/**
* Method description
*
*
* @param user
* @param copyPassword
*
* @return
*/
public boolean copyProperties(User user, boolean copyPassword)
{
boolean result = false;
if (user.isAdmin() != admin)
{
result = true;
user.setAdmin(admin);
}
if (Util.isNotEquals(user.getDisplayName(), displayName))
{
result = true;
user.setDisplayName(displayName);
}
if (Util.isNotEquals(user.getMail(), mail))
{
result = true;
user.setMail(mail);
}
if (Util.isNotEquals(user.getName(), name))
{
result = true;
user.setName(name);
}
if (copyPassword && Util.isNotEquals(user.getPassword(), password))
{
result = true;
user.setPassword(password);
}
if (Util.isNotEquals(user.getType(), type))
{
result = true;
user.setType(type);
}
return result;
}
/**
* Method description
*
@@ -263,9 +312,9 @@ public class User
*
* @return
*/
public long getLastLogin()
public Long getLastModified()
{
return lastLogin;
return lastModified;
}
/**
@@ -378,11 +427,11 @@ public class User
* Method description
*
*
* @param lastLogin
* @param lastModified
*/
public void setLastLogin(long lastLogin)
public void setLastModified(long lastModified)
{
this.lastLogin = lastLogin;
this.lastModified = lastModified;
}
/**
@@ -444,7 +493,7 @@ public class User
/** Field description */
@XmlJavaTypeAdapter(XmlTimestampDateAdapter.class)
private Long lastLogin;
private Long lastModified;
/** Field description */
private String mail;

View File

@@ -142,6 +142,33 @@ public class Util
return parseDate(dateString, null);
}
/**
* Method description
*
*
* @param byteValue
*
* @return
*/
public static String toString(byte[] byteValue)
{
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < byteValue.length; i++)
{
int x = byteValue[i] & 0xff;
if (x < 16)
{
buffer.append('0');
}
buffer.append(Integer.toString(x, 16));
}
return buffer.toString();
}
//~--- get methods ----------------------------------------------------------
/**
@@ -183,6 +210,22 @@ public class Util
return (array == null) || (array.length == 0);
}
/**
* Method description
*
*
* @param object
* @param other
*
* @return
*/
public static boolean isEquals(Object object, Object other)
{
return (object == null)
? other == null
: object.equals(other);
}
/**
* Method description
*
@@ -222,32 +265,17 @@ public class Util
return (array != null) && (array.length > 0);
}
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @param byteValue
* @param object
* @param other
*
* @return
*/
public static String toString(byte[] byteValue)
public static boolean isNotEquals(Object object, Object other)
{
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < byteValue.length; i++)
{
int x = byteValue[i] & 0xff;
if (x < 16)
{
buffer.append('0');
}
buffer.append(Integer.toString(x, 16));
}
return buffer.toString();
return !isEquals(object, other);
}
}

View File

@@ -273,6 +273,7 @@ public class XmlUserManager extends AbstractUserManager
if (userDB.contains(name))
{
AssertUtil.assertIsValid(user);
user.setLastModified(System.currentTimeMillis());
synchronized (XmlUserManager.class)
{

View File

@@ -124,21 +124,13 @@ public class BasicSecurityContext implements WebSecurityContext
try
{
user.setLastLogin(System.currentTimeMillis());
User dbUser = userManager.get(username);
if (dbUser != null)
if ((dbUser != null) && dbUser.copyProperties(user, false))
{
// update properties
dbUser.setDisplayName(user.getDisplayName());
dbUser.setLastLogin(user.getLastLogin());
dbUser.setMail(user.getMail());
dbUser.setType(user.getType());
userManager.modify(dbUser);
}
else
else if (dbUser == null)
{
userManager.create(user);
}

View File

@@ -59,7 +59,7 @@ Sonia.user.Grid = Ext.extend(Sonia.rest.Grid, {
var userStore = new Sonia.rest.JsonStore({
url: restUrl + 'users.json',
fields: [ 'name', 'displayName', 'mail', 'admin', 'creationDate', 'lastLogin', 'type'],
fields: [ 'name', 'displayName', 'mail', 'admin', 'creationDate', 'lastModified', 'type'],
sortInfo: {
field: 'name'
}
@@ -77,7 +77,7 @@ Sonia.user.Grid = Ext.extend(Sonia.rest.Grid, {
{id: 'mail', header: 'Mail', dataIndex: 'mail', renderer: this.renderMailto, width: 200},
{id: 'admin', header: 'Admin', dataIndex: 'admin', renderer: this.renderCheckbox, width: 50},
{id: 'creationDate', header: 'Creation date', dataIndex: 'creationDate'},
{id: 'lastLogin', header: 'Last login', dataIndex: 'lastLogin'},
{id: 'lastLogin', header: 'Last modified', dataIndex: 'lastModified'},
{id: 'type', header: 'Type', dataIndex: 'type', width: 80}
]
});