|
From: <tre...@us...> - 2008-01-01 21:34:57
|
Revision: 660
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=660&view=rev
Author: trevorolio
Date: 2008-01-01 13:35:01 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
WARNING: DB SCHEMA CHANGE
Added an emailValid field to account records, their XML docs, and the Java APIs.
Fixed up the existing email validation framework to update this value.
Added an email validation test to the integration test suite.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/defaultAccountPhoto.gif
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2008-01-01 21:34:54 UTC (rev 659)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2008-01-01 21:35:01 UTC (rev 660)
@@ -171,7 +171,7 @@
BodyConfigurationRecord bodyConfRecord = new BodyConfigurationRecord(username, "Body", bodyDataRecords[0].getBodyDataID(), null);
hibernateSession.save(bodyConfRecord);
- record = new AccountRecord(username, accountlevel, email, bodyConfRecord.getBodyConfigurationID(), null, null);
+ record = new AccountRecord(username, accountlevel, email, false, bodyConfRecord.getBodyConfigurationID(), null, null);
hibernateSession.save(record);
PendingEmailValidationRecord validationRec = new PendingEmailValidationRecord(username, email);
@@ -199,16 +199,4 @@
task.setSessionFactory(sessionFactory);
return (AccountRecord) task.execute();
}
-
- public static void delete(final AccountRecord accRec, SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session hibernateSession) {
- hibernateSession.delete(accRec);
- return null;
- }
- };
- task.setSessionFactory(sessionFactory);
- task.execute();
-
- }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java 2008-01-01 21:34:54 UTC (rev 659)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java 2008-01-01 21:35:01 UTC (rev 660)
@@ -36,6 +36,8 @@
private String passwordHash = null;
private String email = null;
+
+ private boolean emailValid = false;
private long creationDate = AccountDocument.NO_TIME_VALUE;
@@ -52,7 +54,7 @@
public AccountRecord() {
}
- public AccountRecord(String username, String accountlevel, String email, long defaultBodyConfigurationID, String voiceURI, String textURI) {
+ public AccountRecord(String username, String accountlevel, String email, boolean emailValid, long defaultBodyConfigurationID, String voiceURI, String textURI) {
this.username = cleanUsername(username);
if (this.username == null) {
throw new IllegalArgumentException("Bad username (only letters and numbers): " + username);
@@ -66,7 +68,8 @@
if (this.email == null) {
throw new IllegalArgumentException("Bad email: " + email);
}
-
+ this.emailValid = emailValid;
+
this.defaultBodyConfigurationID = defaultBodyConfigurationID;
this.voiceURI = voiceURI;
@@ -311,4 +314,12 @@
public void setTextURI(String textURI) {
this.textURI = textURI;
}
+
+ public boolean isEmailValid() {
+ return emailValid;
+ }
+
+ public void setEmailValid(boolean emailValid) {
+ this.emailValid = emailValid;
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2008-01-01 21:34:54 UTC (rev 659)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2008-01-01 21:35:01 UTC (rev 660)
@@ -50,10 +50,20 @@
return (PendingEmailValidationRecord) task.execute();
}
- public static boolean delete(final PendingEmailValidationRecord validationRecord, SessionFactory sessionFactory) throws PersistException {
+ public static boolean setValidAndDelete(final PendingEmailValidationRecord validationRecord, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
- public Object run(Session hibernateSession) {
- hibernateSession.delete(validationRecord);
+ public Object run(Session session) {
+ Query accountQuery = session.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
+ accountQuery.setString("username", validationRecord.getUsername());
+ AccountRecord accountRec = (AccountRecord)accountQuery.uniqueResult();
+ if(accountRec == null){
+ return Boolean.FALSE;
+ }
+ accountRec.setEmail(validationRecord.getEmail());
+ accountRec.setEmailValid(true);
+ session.update(accountRec);
+
+ session.delete(validationRecord);
return Boolean.TRUE;
}
};
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-01-01 21:34:54 UTC (rev 659)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-01-01 21:35:01 UTC (rev 660)
@@ -86,9 +86,9 @@
AccountDocument result = null;
if (authed) {
- result = new AccountDocument(account.getUsername(), account.getAccountlevel(), account.getFirstName(), account.getLastName(), account.getHomepage(), null, account.getEmail(), account.getCreationDate(), null, account.getFrozenUntil(), account.getDefaultBodyConfigurationID(), account.getVoiceURI(), account.getTextURI());
+ result = new AccountDocument(account.getUsername(), account.getAccountlevel(), account.getFirstName(), account.getLastName(), account.getHomepage(), null, account.getEmail(), account.isEmailValid(), account.getCreationDate(), null, account.getFrozenUntil(), account.getDefaultBodyConfigurationID(), account.getVoiceURI(), account.getTextURI());
} else {
- result = new AccountDocument(account.getUsername(), account.getAccountlevel(), account.getFirstName(), account.getLastName(), account.getHomepage(), null, null, account.getCreationDate(), null, account.getFrozenUntil(), account.getDefaultBodyConfigurationID(), null, null);
+ result = new AccountDocument(account.getUsername(), account.getAccountlevel(), account.getFirstName(), account.getLastName(), account.getHomepage(), null, null, account.isEmailValid(), account.getCreationDate(), null, account.getFrozenUntil(), account.getDefaultBodyConfigurationID(), null, null);
}
return result;
}
@@ -436,8 +436,8 @@
return;
}
- if (!PendingEmailValidationTasks.delete(validationRecord, getSessionFactory())) {
- Log.error("Could not delete validation record for email: " + validationRecord.getEmail());
+ if (!PendingEmailValidationTasks.setValidAndDelete(validationRecord, getSessionFactory())) {
+ Log.error("Could not update database with email validation: " + validationRecord.getEmail());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml 2008-01-01 21:34:54 UTC (rev 659)
+++ maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml 2008-01-01 21:35:01 UTC (rev 660)
@@ -85,6 +85,7 @@
table="AccountRecords">
<id name="username"></id>
<property name="email" not-null="true" unique="true" />
+ <property name="emailValid" />
<property name="accountlevel" not-null="true" />
<property name="passwordHash" />
<property name="firstName" />
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/defaultAccountPhoto.gif
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|