From ec9691ecd39b0260c3dafe4b43e50d0be8c3eebc Mon Sep 17 00:00:00 2001 From: Robin Eklund <robi-ekl@dsv.su.se> Date: Thu, 4 Aug 2011 13:02:59 +0200 Subject: [PATCH] 1: Permanently Removed deprecated "getUserByUsername" methods. 2: Lookups and Json response handlers now use Autowiring instead of xml-boilerplate 3: Some minor refactoring in the response handlers, lots more to come --- .../dsv/scipro/data/dao/interfaces/Dao.java | 8 - .../scipro/data/dao/interfaces/UserDao.java | 2 - .../scipro/data/dao/jpa/UserDaoJPAImp.java | 6 - .../scipro/json/DefaultUserLookupBase.java | 1 + .../java/se/su/dsv/scipro/json/ILookup.java | 2 +- .../ImportUpdateStatsResponseHandler.java | 34 +-- .../dsv/scipro/json/ImportWorkerLookup.java | 37 +-- .../json/ImportWorkerResponseHandler.java | 21 +- .../dsv/scipro/json/JsonResponseHandler.java | 289 ++++++++---------- .../json/JsonUserFullResponseHandler.java | 21 +- .../scipro/json/JsonUserResponseHandler.java | 13 +- .../UserAndProjectImportWorker.java | 10 +- src/main/resources/applicationContext.xml | 15 +- 13 files changed, 158 insertions(+), 301 deletions(-) diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/Dao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/Dao.java index deabbdf84b..d810b8b77f 100644 --- a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/Dao.java +++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/Dao.java @@ -3,14 +3,6 @@ package se.su.dsv.scipro.data.dao.interfaces; import java.io.Serializable; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceException; -import javax.persistence.TypedQuery; - -import org.hibernate.ejb.QueryHints; -import org.springframework.orm.jpa.JpaCallback; -import org.springframework.transaction.annotation.Transactional; - import se.su.dsv.scipro.data.dataobjects.DomainObject; /** * @author Richard Wilkinson - richard.wilkinson@jweekend.com diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/UserDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/UserDao.java index 8502e3dce9..1884ca2536 100644 --- a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/UserDao.java +++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/UserDao.java @@ -9,8 +9,6 @@ public interface UserDao extends LazyDeleteDao<User> { User getUserByIdentifier(Long identifier); - User getUserByUsername(String userName); - User getUserByUsername(String userName, String realm); User getUserByEmail(String emailAddress); diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/UserDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/UserDaoJPAImp.java index 8f41ea56c5..33913084b3 100644 --- a/src/main/java/se/su/dsv/scipro/data/dao/jpa/UserDaoJPAImp.java +++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/UserDaoJPAImp.java @@ -62,12 +62,6 @@ public class UserDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<User> implements }); } - @Transactional - @Deprecated - public User getUserByUsername(final String username) { - return this.getUserByUsername(username, "DSV.SU.SE"); - } - @Transactional(readOnly = true) public User getUserByUsername(final String username, final String realm) { return getJpaTemplate().execute(new JpaCallback<User>() { diff --git a/src/main/java/se/su/dsv/scipro/json/DefaultUserLookupBase.java b/src/main/java/se/su/dsv/scipro/json/DefaultUserLookupBase.java index 5c8bd521a7..4279004070 100644 --- a/src/main/java/se/su/dsv/scipro/json/DefaultUserLookupBase.java +++ b/src/main/java/se/su/dsv/scipro/json/DefaultUserLookupBase.java @@ -10,6 +10,7 @@ import se.su.dsv.scipro.data.dao.interfaces.UserDao; /** * Package-private Abstract base for the public UserLookups. + * This is not an ideal pattern under most circumstances, but class is package private and thus not part of exported API. */ abstract class DefaultUserLookupBase{ @Autowired diff --git a/src/main/java/se/su/dsv/scipro/json/ILookup.java b/src/main/java/se/su/dsv/scipro/json/ILookup.java index b139ef295e..e89d0008cd 100644 --- a/src/main/java/se/su/dsv/scipro/json/ILookup.java +++ b/src/main/java/se/su/dsv/scipro/json/ILookup.java @@ -3,7 +3,7 @@ package se.su.dsv.scipro.json; /** * Generic interface for Remote lookups. * The recommended way of using this interface is to create specializations - * (see IUserLookupFromIdentifier) that defines the actual parameterized types used, and implement those interfaces in concrete classes. + * (see IUserLookupFromIdentifier for an example) that defines the actual parameterized types used, and implement those interfaces in concrete classes. * @param <T> The return type specifier, implementations are urged to return a null value when a lookup fails. * @param <E> The lookup parameter, use compound types to support querying on multiple parameters. */ diff --git a/src/main/java/se/su/dsv/scipro/json/ImportUpdateStatsResponseHandler.java b/src/main/java/se/su/dsv/scipro/json/ImportUpdateStatsResponseHandler.java index faea5287b3..421aca6dab 100644 --- a/src/main/java/se/su/dsv/scipro/json/ImportUpdateStatsResponseHandler.java +++ b/src/main/java/se/su/dsv/scipro/json/ImportUpdateStatsResponseHandler.java @@ -3,6 +3,7 @@ package se.su.dsv.scipro.json; import java.lang.reflect.Type; import org.apache.log4j.Level; +import org.springframework.stereotype.Component; import se.su.dsv.scipro.jsonobjects.JsonUpdateStatsContainer; import se.su.dsv.scipro.workerthreads.UserAndProjectImportWorker; @@ -12,20 +13,10 @@ import com.google.gson.reflect.TypeToken; /** * Handler for json responses regarding users (creating and updating) - * - * @author Dan Kjellman <dan-kjel@dsv.su.se> * */ +@Component public class ImportUpdateStatsResponseHandler extends JsonResponseHandler { - - private boolean logResult = false; - - - - public ImportUpdateStatsResponseHandler(){ - super(); - } - /** * Handles a json string * @@ -49,26 +40,5 @@ public class ImportUpdateStatsResponseHandler extends JsonResponseHandler { UserAndProjectImportWorker.updatedUsers = statsContainer.updatedUsers.intValue(); UserAndProjectImportWorker.updatedTheses = statsContainer.updatedTheses.intValue(); } - /* - if(logResult){ - logger.log(Level.INFO, "\nResult from userimport/update:\nChecked: " + completeContainer.theses.size() + " users\n" + - "Changed users: " + changedUsers + "\n" + - "Created users: " + createdUsers + "\n" + - "Number of errors when creating users: " + userCreationErrors + "\n" + - "Num First name changes: " + getNumFirstNameChanges() + "\n" + - "Num last name changes: " + getNumLastNameChanges() + "\n" + - "Num Email changes: " + getNumEmailChanges() + "\n" + - "Num Usernames added: " + getNumUsernamesAdded() + "\n" + - "Num Supervisors created: " + getNumFirstNameChanges() + "\n"); - } - */ - } - - public void setLogResult(boolean logResult) { - this.logResult = logResult; - } - - public boolean isLogResult() { - return logResult; } } diff --git a/src/main/java/se/su/dsv/scipro/json/ImportWorkerLookup.java b/src/main/java/se/su/dsv/scipro/json/ImportWorkerLookup.java index 58bbff6c21..13bafdd178 100644 --- a/src/main/java/se/su/dsv/scipro/json/ImportWorkerLookup.java +++ b/src/main/java/se/su/dsv/scipro/json/ImportWorkerLookup.java @@ -6,11 +6,10 @@ import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import se.su.dsv.scipro.ApplicationSettings; - - /** * This class does a lookup on a username against the remote remoteLookupUrl specified in * the applicationContext, under ApplicationSettings. @@ -18,16 +17,14 @@ import se.su.dsv.scipro.ApplicationSettings; * * @author Dan Kjellman <dan-kjel@dsv.su.se> */ +@Component public class ImportWorkerLookup { - public static final String USERS = "users"; public static final String THESES = "theses"; - /* - * References populated by spring (from applicationContext) - */ - private ImportWorkerResponseHandler thesesResponseHandler; - private ImportUpdateStatsResponseHandler statsResonseHandler; - + @Autowired + private ImportWorkerResponseHandler importWorkerResponseHandler; + @Autowired + private ImportUpdateStatsResponseHandler importUpdateStatsResponseHandler; @Autowired private ApplicationSettings applicationSettings; @@ -55,7 +52,7 @@ public class ImportWorkerLookup { }else{ //logger.log(Level.INFO,"Starting lookup for completeGet=true & type="+type+" & updatedAfter=" + updatedAfter); } - RequestSender request = new RequestSender(thesesResponseHandler, applicationSettings.getRemoteLookupUrl(), params, RequestSender.REQUEST_TYPE_POST); + RequestSender request = new RequestSender(importWorkerResponseHandler, applicationSettings.getRemoteLookupUrl(), params, RequestSender.REQUEST_TYPE_POST); try{ request.processRequest(); } catch (IOException e) { @@ -69,7 +66,7 @@ public class ImportWorkerLookup { params.put("updateStats", "true"); params.put("updatedAfter",""+updatedAfter.getTime()); - RequestSender request = new RequestSender(statsResonseHandler, applicationSettings.getRemoteLookupUrl(), params, RequestSender.REQUEST_TYPE_POST); + RequestSender request = new RequestSender(importUpdateStatsResponseHandler, applicationSettings.getRemoteLookupUrl(), params, RequestSender.REQUEST_TYPE_POST); try{ request.processRequest(); } catch (IOException e) { @@ -77,22 +74,4 @@ public class ImportWorkerLookup { throw e; } } - - /* - * Getters and setters (for spring) - */ - public ImportWorkerResponseHandler getUserResponseHandler() { - return thesesResponseHandler; - } - public void setUserResponseHandler(ImportWorkerResponseHandler thesesResponseHandler) { - this.thesesResponseHandler = thesesResponseHandler; - } - - public ImportUpdateStatsResponseHandler getStatsResonseHandler() { - return statsResonseHandler; - } - public void setStatsResonseHandler( - ImportUpdateStatsResponseHandler statsResonseHandler) { - this.statsResonseHandler = statsResonseHandler; - } } diff --git a/src/main/java/se/su/dsv/scipro/json/ImportWorkerResponseHandler.java b/src/main/java/se/su/dsv/scipro/json/ImportWorkerResponseHandler.java index d5fdb25c88..77196e7932 100644 --- a/src/main/java/se/su/dsv/scipro/json/ImportWorkerResponseHandler.java +++ b/src/main/java/se/su/dsv/scipro/json/ImportWorkerResponseHandler.java @@ -3,6 +3,7 @@ package se.su.dsv.scipro.json; import java.lang.reflect.Type; import org.apache.log4j.Level; +import org.springframework.stereotype.Component; import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.User; @@ -21,16 +22,8 @@ import com.google.gson.reflect.TypeToken; * @author Dan Kjellman <dan-kjel@dsv.su.se> * */ +@Component public class ImportWorkerResponseHandler extends JsonResponseHandler { - - private boolean logResult = false; - - - - public ImportWorkerResponseHandler(){ - super(); - } - /** * Handles a json string * @@ -129,7 +122,7 @@ public class ImportWorkerResponseHandler extends JsonResponseHandler { } } - if(logResult){ + if(isLogResult()){ logger.log(Level.INFO, "\nResult from userimport/update:\nChecked: " + completeContainer.users.size() + " users\n" + "Changed users: " + changedUsers + "\n" + "Created users: " + createdUsers + "\n" + @@ -147,12 +140,4 @@ public class ImportWorkerResponseHandler extends JsonResponseHandler { "Number of errors when creating theses: " + thesesCreationsErrors + "\n" ); } } - - public void setLogResult(boolean logResult) { - this.logResult = logResult; - } - - public boolean isLogResult() { - return logResult; - } } diff --git a/src/main/java/se/su/dsv/scipro/json/JsonResponseHandler.java b/src/main/java/se/su/dsv/scipro/json/JsonResponseHandler.java index 03028ec8e7..ab4c6825e5 100644 --- a/src/main/java/se/su/dsv/scipro/json/JsonResponseHandler.java +++ b/src/main/java/se/su/dsv/scipro/json/JsonResponseHandler.java @@ -7,7 +7,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.springframework.dao.DataAccessException; import se.su.dsv.scipro.ApplicationSettings; import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao; @@ -30,9 +30,11 @@ import se.su.dsv.scipro.jsonobjects.JsonThesisParticipant; import se.su.dsv.scipro.jsonobjects.JsonUser; import se.su.dsv.scipro.jsonobjects.JsonUserRole; import se.su.dsv.scipro.jsonobjects.JsonUsername; - -@Component -public abstract class JsonResponseHandler implements IResponseHandler { +/** + * Package-private sase class for JsonResponseHandlers. + * Contains a number of utility methods to lessen boilerplate code inside implementations. + */ +abstract class JsonResponseHandler implements IResponseHandler { @Autowired protected UserDao userDao; @Autowired @@ -50,7 +52,7 @@ public abstract class JsonResponseHandler implements IResponseHandler { @Autowired protected ApplicationSettings applicationSettings; - protected Logger logger = Logger.getLogger(this.getClass()); + protected Logger logger = Logger.getLogger(JsonResponseHandler.class); private int numUsersCreated = 0; private int numEmailChanges = 0; @@ -60,161 +62,133 @@ public abstract class JsonResponseHandler implements IResponseHandler { private int numSupervisorsCreated = 0; private int numThesesCreated = 0; private int numThesesChanged = 0; - + private boolean logResult = false; /** - * Creates a thesis user from a json user - * - * @param jsonUser the json user to use for creation - * @return User the create thesisuser + * Creates and persists a User from a JsonUser + * @param jsonUser the JsonUser to use for creation + * @return The created User or null if it cannot be persisted. */ protected User createThesisUser(JsonUser jsonUser, boolean doFullCheck){ - User thesisUser = null; - - try { - thesisUser = new User(); - thesisUser.setFirstName(jsonUser.firstName); - thesisUser.setLastName(jsonUser.lastName); - thesisUser.setIdentifier(jsonUser.id); - thesisUser.setEmailAddress(jsonUser.email); - - //System.out.println("Trying to save " + thesisUser.getIdentifier()); - thesisUser = userDao.save(thesisUser); - - /* - * Check against daisy if the user is a supervisor - if so, create a supervisor role - */ - for(JsonUserRole jur : jsonUser.roles){ - if(jur.role.equals("AUTHOR")){ - roleDao.makeStudent(thesisUser); - } - if(jur.role.equals("SUPERVISOR")){ - roleDao.makeEmployee(thesisUser); - } - if(jur.role.equals("ADMIN")){ - // roleDao.makeAdmin(thesisUser); - } - } - - for(JsonUsername jsonUsername : jsonUser.usernames){ - Username thesisUserName = new Username(); - thesisUserName.setUserName(jsonUsername.username.toLowerCase().trim()); - thesisUserName.setRealm(jsonUsername.realm.toUpperCase().trim()); - thesisUserName.setUser(thesisUser); - thesisUserName = userNameDao.save(thesisUserName); - } - - if(doFullCheck){ - for(JsonThesis jThesis : jsonUser.theses){ - checkAndCreateProject(jThesis); - } - - } - - numUsersCreated++; + User user = new User(); + user.setFirstName(jsonUser.firstName); + user.setLastName(jsonUser.lastName); + user.setIdentifier(jsonUser.id); + user.setEmailAddress(jsonUser.email); + try{ + user = userDao.save(user); + }catch(final DataAccessException dae){ + logger.error("Cannot save User with jsonuserid: " + jsonUser.id); + return null; } - catch (Exception e){ - logger.error("Cannot save jsonuser with jsonuserid: " + jsonUser.id + " - Rolling back...\n" + e.getMessage()); - throw new RuntimeException(e); + /* + * Check against remote system data if the user is a supervisor - if so, create a supervisor role + */ + for(JsonUserRole jur : jsonUser.roles){ + if(jur.role.equals("AUTHOR")){ + roleDao.makeStudent(user); + } + if(jur.role.equals("SUPERVISOR")){ + roleDao.makeEmployee(user); + } + if(jur.role.equals("ADMIN")){ + // roleDao.makeAdmin(thesisUser); + } } - return thesisUser; + /* + * Create and set the user's usernames + */ + for(JsonUsername jsonUsername : jsonUser.usernames){ + Username userName = new Username(); + userName.setUserName(jsonUsername.username.toLowerCase().trim()); + userName.setRealm(jsonUsername.realm.toUpperCase().trim()); + userName.setUser(user); + userName = userNameDao.save(userName); + if(userName == null) + logger.error("Cannot save Username '"+jsonUsername.username+"' for User '"+user.getIdentifier()+"'"); + } + /* + * Create any projects of which the user is a member of + */ + if(doFullCheck){ + for(JsonThesis jThesis : jsonUser.theses){ + checkAndCreateProject(jThesis); + } + } + numUsersCreated++; + return user; } - - protected Project checkAndCreateProject(JsonThesis jThesis) { - - Project project = null; - - //System.out.println("Creating project:" + jThesis.thesisID); - project = projectDao.getProjectByIdentifier(jThesis.thesisID); - if(project == null){ - project = new Project(); - project.setIdentifier(jThesis.thesisID); - project.setTitle(jThesis.title); - if(jThesis.status.equals("STARTED") || jThesis.status.equals("LATE")){ - project.setProjectStatus(ProjectStatus.ACTIVE); - }else if(jThesis.status.equals("FINISHED")){ - project.setProjectStatus(ProjectStatus.COMPLETED); - }else{ - project.setProjectStatus(ProjectStatus.INACTIVE); - } - ProjectClass pc = getProjectClass(jThesis.type); - project.setProjectClass(pc); - if(jThesis.daisyStartDate > 0){ - Date daisyStartDate = new Date(jThesis.daisyStartDate); - project.setDaisyStartDate(daisyStartDate); - - } - project = projectDao.save(project); - - - for(JsonThesisParticipant jtp : jThesis.participants){ - User u = userDao.getUserByIdentifier(jtp.id); - - if(u == null){ - final Long id = Long.valueOf(jtp.id); - try { - u = userLookupFromIdentifier.lookup(id); - } catch (Exception e) { - logger.error("Cannot save jsonuser with jsonuserid: " + jtp.id + " - Rolling back...\n" + e.getMessage()); - throw new RuntimeException(e); - } - u = userDao.getUserByIdentifier(jtp.id); - } - - - if(u != null){ - if(jtp.role.equals("SUPERVISOR")){ - Employee e = roleDao.makeEmployee(u); - project.setHeadSupervisor(e); - }else if(jtp.role.equals("PARTICIPANT")){ - Student s = roleDao.makeStudent(u); - project.getProjectParticipants().add(s); - } - else{ - ProjectFollower pf = new ProjectFollower(); - - if(jtp.role.equals("ASSISTANT_SUPERVISOR")){ - pf.setProjectRole(ProjectTeamMemberRoles.CO_SUPERVISOR); - pf.setFollower((Employee)roleDao.makeEmployee(u)); - }else if(jtp.role.equals("OPPONENT")){ - //TODO: OPPONENT - }else if (jtp.role.equals("EXAMINER")){ - pf.setProjectRole(ProjectTeamMemberRoles.REVIEWER); - pf.setFollower(roleDao.makeEmployee(u)); - } - if(pf.getFollower() != null && pf.getProjectRole() != null){ - pf.setProject(project); - pf = projectFollowerDao.save(pf); - project.getProjectFollowers().add(pf); - - } - } - } - } - project = projectDao.save(project); - /* - try{ - txManager.commit(status); - }catch(TransactionException e){ - logger.log(Level.ERROR, "Cannot commit transaction with projectid:"+project.getId() + " - Rolling back...\n" + e.getMessage()); - txManager.rollback(status); - throw e; - } - */ + Project project = null; + //System.out.println("Creating project:" + jThesis.thesisID); + project = projectDao.getProjectByIdentifier(jThesis.thesisID); + if(project == null){ + project = new Project(); + project.setIdentifier(jThesis.thesisID); + project.setTitle(jThesis.title); + if(jThesis.status.equals("STARTED") || jThesis.status.equals("LATE")){ + project.setProjectStatus(ProjectStatus.ACTIVE); + }else if(jThesis.status.equals("FINISHED")){ + project.setProjectStatus(ProjectStatus.COMPLETED); + }else{ + project.setProjectStatus(ProjectStatus.INACTIVE); } - project = null; - project = projectDao.getProjectByIdentifier(jThesis.thesisID); - return project; + ProjectClass pc = getProjectClass(jThesis.type); + project.setProjectClass(pc); + if(jThesis.daisyStartDate > 0){ + Date daisyStartDate = new Date(jThesis.daisyStartDate); + project.setDaisyStartDate(daisyStartDate); + + } + project = projectDao.save(project); + //Synch participants + for(JsonThesisParticipant jtp : jThesis.participants){ + User u = userDao.getUserByIdentifier(jtp.id); + //Attempt remote lookup if no user is found + if(u == null){ + final Long id = Long.valueOf(jtp.id); + if( (u = userLookupFromIdentifier.lookup(id)) == null){ + throw new RuntimeException("Cannot save jsonuser with jsonuserid: " + jtp.id); + } + } + //Move on + if(jtp.role.equals("SUPERVISOR")){ + Employee e = roleDao.makeEmployee(u); + project.setHeadSupervisor(e); + }else if(jtp.role.equals("PARTICIPANT")){ + Student s = roleDao.makeStudent(u); + project.getProjectParticipants().add(s); + } + else{ + ProjectFollower pf = new ProjectFollower(); + + if(jtp.role.equals("ASSISTANT_SUPERVISOR")){ + pf.setProjectRole(ProjectTeamMemberRoles.CO_SUPERVISOR); + pf.setFollower((Employee)roleDao.makeEmployee(u)); + }else if(jtp.role.equals("OPPONENT")){ + //TODO: OPPONENT + }else if (jtp.role.equals("EXAMINER")){ + pf.setProjectRole(ProjectTeamMemberRoles.REVIEWER); + pf.setFollower(roleDao.makeEmployee(u)); + } + if(pf.getFollower() != null && pf.getProjectRole() != null){ + pf.setProject(project); + pf = projectFollowerDao.save(pf); + project.getProjectFollowers().add(pf); + + } + } + } + project = projectDao.save(project); + } + project = projectDao.getProjectByIdentifier(jThesis.thesisID); + return project; } - - /** - * Look for changes in a jsonuser against a thesisuser. BEWARE: you need to be sure that - * a corresponding thesisuser exists, or an exception will be thrown - * - * @param daisyUser + * Look for changes in a jsonuser against a User. + * @note you need to be sure that a corresponding User exists, or a (potentially wrapped) Runtime exception will be thrown + * @param jsonUser * @return */ protected boolean lookForChangesInUserAndSave(JsonUser jsonUser){ @@ -481,8 +455,6 @@ public abstract class JsonResponseHandler implements IResponseHandler { } return changed; } - - /* * Force subclasses to handle the response */ @@ -518,14 +490,21 @@ public abstract class JsonResponseHandler implements IResponseHandler { public int getNumThesesCreated() { return numThesesCreated; } - public void setNumThesesCreated(int numThesesCreated) { - this.numThesesCreated = numThesesCreated; - } public int getNumThesesChanged() { return numThesesChanged; } - public void setNumThesesChanged(int numThesesChanged) { - this.numThesesChanged = numThesesChanged; + /** + * Sets parameter to increase logging output. + * @param logResult + */ + public void setLogResult(boolean logResult) { + this.logResult = logResult; + } + /** + * Getter for increased logging output. + */ + public boolean isLogResult() { + return logResult; } } diff --git a/src/main/java/se/su/dsv/scipro/json/JsonUserFullResponseHandler.java b/src/main/java/se/su/dsv/scipro/json/JsonUserFullResponseHandler.java index de80a99b99..3e926c52cf 100644 --- a/src/main/java/se/su/dsv/scipro/json/JsonUserFullResponseHandler.java +++ b/src/main/java/se/su/dsv/scipro/json/JsonUserFullResponseHandler.java @@ -3,6 +3,7 @@ package se.su.dsv.scipro.json; import java.lang.reflect.Type; import org.apache.log4j.Level; +import org.springframework.stereotype.Component; import se.su.dsv.scipro.data.dataobjects.User; import se.su.dsv.scipro.data.dataobjects.Username; @@ -19,15 +20,8 @@ import com.google.gson.reflect.TypeToken; * @author Dan Kjellman <dan-kjel@dsv.su.se> * */ -//@Component +@Component public class JsonUserFullResponseHandler extends JsonResponseHandler { - - private boolean logResult = false; - - public JsonUserFullResponseHandler(){ - super(); - } - /** * Handles a json string * @@ -124,8 +118,7 @@ public class JsonUserFullResponseHandler extends JsonResponseHandler { } } } - - if(logResult){ + if(isLogResult()){ logger.log(Level.INFO, "\nResult from userimport/update:\nChecked: " + userContainer.users.size() + " users\n" + "Changed users: " + changedUsers + "\n" + "Created users: " + createdUsers + "\n" + @@ -137,12 +130,4 @@ public class JsonUserFullResponseHandler extends JsonResponseHandler { "Num Supervisors created: " + getNumFirstNameChanges() + "\n"); } } - - public void setLogResult(boolean logResult) { - this.logResult = logResult; - } - - public boolean isLogResult() { - return logResult; - } } diff --git a/src/main/java/se/su/dsv/scipro/json/JsonUserResponseHandler.java b/src/main/java/se/su/dsv/scipro/json/JsonUserResponseHandler.java index c6e8b3e78d..81ccfb34d6 100644 --- a/src/main/java/se/su/dsv/scipro/json/JsonUserResponseHandler.java +++ b/src/main/java/se/su/dsv/scipro/json/JsonUserResponseHandler.java @@ -19,9 +19,6 @@ import com.google.gson.reflect.TypeToken; */ @Component public class JsonUserResponseHandler extends JsonResponseHandler { - - private boolean logResult = false; - /** * Handles a json string * @@ -66,7 +63,7 @@ public class JsonUserResponseHandler extends JsonResponseHandler { } } - if(logResult){ + if(isLogResult()){ logger.info("Result from userimport/update:\nChecked: " + userContainer.users.size() + " users\n" + "Changed users: " + changedUsers + "\n" + "Created users: " + createdUsers + "\n" + @@ -78,12 +75,4 @@ public class JsonUserResponseHandler extends JsonResponseHandler { "Num Supervisors created: " + getNumFirstNameChanges() + "\n"); } } - - public void setLogResult(boolean logResult) { - this.logResult = logResult; - } - - public boolean isLogResult() { - return logResult; - } } diff --git a/src/main/java/se/su/dsv/scipro/workerthreads/UserAndProjectImportWorker.java b/src/main/java/se/su/dsv/scipro/workerthreads/UserAndProjectImportWorker.java index b7d37410bd..1e5a720567 100644 --- a/src/main/java/se/su/dsv/scipro/workerthreads/UserAndProjectImportWorker.java +++ b/src/main/java/se/su/dsv/scipro/workerthreads/UserAndProjectImportWorker.java @@ -11,10 +11,8 @@ import org.springframework.stereotype.Component; import se.su.dsv.scipro.json.ImportWorkerLookup; @Component public class UserAndProjectImportWorker extends AbstractWorker{ - @Autowired - private ImportWorkerLookup importLookup; - + private ImportWorkerLookup importWorkerLookup; public static int updatedUsers; public static int updatedTheses; //The amount of theses or uses asked for @@ -34,7 +32,7 @@ public class UserAndProjectImportWorker extends AbstractWorker{ //Sets static params updatedUsers/updatedTheses try{ beginTransaction(); - importLookup.lookupUpdateStats(this.getLastRun()); + importWorkerLookup.lookupUpdateStats(this.getLastRun()); commitTransaction(); } catch(Exception e){ rollbackTransaction(); @@ -60,7 +58,7 @@ public class UserAndProjectImportWorker extends AbstractWorker{ try{ beginTransaction(); if(endIndex > 0){ - importLookup.lookup(startIndex, endIndex,(this.getLastRun()),ImportWorkerLookup.USERS); + importWorkerLookup.lookup(startIndex, endIndex,(this.getLastRun()),ImportWorkerLookup.USERS); } commitTransaction(); @@ -90,7 +88,7 @@ public class UserAndProjectImportWorker extends AbstractWorker{ try{ beginTransaction(); if(endIndex > 0) - importLookup.lookup(startIndex, endIndex,(this.getLastRun()), + importWorkerLookup.lookup(startIndex, endIndex,(this.getLastRun()), ImportWorkerLookup.THESES); commitTransaction(); diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index bebfc7b86d..7e10701258 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -22,11 +22,10 @@ annotations --> <tx:annotation-driven transaction-manager="transactionManager" /> - <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> - + <!-- Load data initializer for default table-data --> <bean class="se.su.dsv.scipro.DataInitialiser" init-method="dataInit" /> <!-- Defines global settings for the application --> <bean id="applicationSettings" class="se.su.dsv.scipro.ApplicationSettings"> @@ -39,16 +38,4 @@ <!-- External auth support (via J2EE standard mechanism REMOTE_USER), if true: other authentication mechanics will be bypassed.--> <property name="acceptExternalAuthentication" value="true"/> </bean> - <!-- Defines the class used for lookup in username against a remote server --> - <bean id="importWorkerLookup" class="se.su.dsv.scipro.json.ImportWorkerLookup"> - <property name="userResponseHandler" ref="importWorkerResponseHandler" /> - <property name="statsResonseHandler" ref="importStatsResponseHandler" /> - </bean> - <!-- The abstract handler for json responses --> - <bean id="jsonResponseHandler" abstract="true" class="se.su.dsv.scipro.json.JsonResponseHandler" /> - <!-- Handler for json responses regarding users --> - <bean id="jsonUserResponseHandler" parent="jsonResponseHandler" class="se.su.dsv.scipro.json.JsonUserResponseHandler" /> - <bean id="jsonUserFullResponseHandler" parent="jsonResponseHandler" class="se.su.dsv.scipro.json.JsonUserFullResponseHandler" /> - <bean id="importWorkerResponseHandler" parent="jsonResponseHandler" class="se.su.dsv.scipro.json.ImportWorkerResponseHandler" /> - <bean id="importStatsResponseHandler" parent="jsonResponseHandler" class="se.su.dsv.scipro.json.ImportUpdateStatsResponseHandler" /> </beans>