started on remake of unit imports after changes in external appi.
This commit is contained in:
parent
9b2f7c568d
commit
4ebcd2f9b5
src/main/java/se/su/dsv/scipro/io
@ -146,10 +146,35 @@ public abstract class AbstractDtoResponseHandler implements DtoResponseHandler {
|
||||
logger.debug("Attempting to treat response '"+jsonUnitCollection+"' as a single project failed.");
|
||||
}
|
||||
}
|
||||
logger.warn("Returning empty project collection wrapper for respose '"+jsonUnitCollection+"'");
|
||||
logger.warn("Returning empty unit collection wrapper for respose '"+jsonUnitCollection+"'");
|
||||
return new UnitDTOCollectionWrapper();
|
||||
}
|
||||
|
||||
protected final SupervisorDTOCollectionWrapper asSupervisorCollection(final String jsonSupervisorCollection){
|
||||
//Treat as raw array
|
||||
try{
|
||||
final Type collectionType = new TypeToken<Collection<SupervisorDTO>>(){}.getType();
|
||||
final Collection<SupervisorDTO> collection = parseTo(jsonSupervisorCollection,collectionType);
|
||||
final SupervisorDTOCollectionWrapper wrapper = new SupervisorDTOCollectionWrapper(collection);
|
||||
return wrapper;
|
||||
}catch(final JsonParseException jpe){
|
||||
logger.debug("Attempting to treat response '"+jsonSupervisorCollection+"' as a raw array failed.");
|
||||
}
|
||||
//If that fails, treat as regular project
|
||||
{
|
||||
final SupervisorDTO supervisorDTO = parseTo(jsonSupervisorCollection, SupervisorDTO.class);
|
||||
if(supervisorDTO != null){
|
||||
final SupervisorDTOCollectionWrapper wrapper = new SupervisorDTOCollectionWrapper();
|
||||
wrapper.getSupervisors().add(supervisorDTO);
|
||||
return wrapper;
|
||||
}else{
|
||||
logger.debug("Attempting to treat response '"+jsonSupervisorCollection+"' as a single project failed.");
|
||||
}
|
||||
}
|
||||
logger.warn("Returning empty supervisor collection wrapper for respose '"+jsonSupervisorCollection+"'");
|
||||
return new SupervisorDTOCollectionWrapper();
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to treat input as a UserDTO, returns null if unable to extract data.
|
||||
* @param jsonUserString
|
||||
|
@ -1,13 +1,10 @@
|
||||
package se.su.dsv.scipro.io.dto;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class SupervisorDTO {
|
||||
|
||||
public long id;
|
||||
public String firstName, lastName, email;
|
||||
public Set<UsernameDTO> usernames = new HashSet<UsernameDTO>();
|
||||
|
||||
public SupervisorDTO() {
|
||||
|
||||
|
@ -0,0 +1,30 @@
|
||||
package se.su.dsv.scipro.io.dto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
//Collection-wrapper for UnitDTO objects
|
||||
public class SupervisorDTOCollectionWrapper implements Iterable<SupervisorDTO>{
|
||||
private final List<SupervisorDTO> supervisors = new ArrayList<SupervisorDTO>();
|
||||
public SupervisorDTOCollectionWrapper(){
|
||||
}
|
||||
public SupervisorDTOCollectionWrapper(Collection<SupervisorDTO> source){
|
||||
this.supervisors.addAll(source);
|
||||
}
|
||||
public List<SupervisorDTO> getSupervisors() {
|
||||
return supervisors;
|
||||
}
|
||||
public int size(){
|
||||
return supervisors.size();
|
||||
}
|
||||
@Override
|
||||
public String toString(){
|
||||
return ("listOf "+supervisors.size()+" supervisors :" + supervisors.toString());
|
||||
}
|
||||
@Override
|
||||
public Iterator<SupervisorDTO> iterator() {
|
||||
return supervisors.iterator();
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ public class UnitDTO {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Set<UnitDTO> subunits = new HashSet<UnitDTO>();
|
||||
//public Set<UnitDTO> subunits = new HashSet<UnitDTO>();
|
||||
public Set<SupervisorDTO> supervisors = new HashSet<SupervisorDTO>();
|
||||
|
||||
public UnitDTO(){}
|
||||
|
@ -22,6 +22,7 @@ import se.su.dsv.scipro.io.dto.ProjectDTOCollectionWrapper;
|
||||
import se.su.dsv.scipro.io.dto.ResearchAreaDTO;
|
||||
import se.su.dsv.scipro.io.dto.ResearchAreaDTOCollectionWrapper;
|
||||
import se.su.dsv.scipro.io.dto.SupervisorDTO;
|
||||
import se.su.dsv.scipro.io.dto.SupervisorDTOCollectionWrapper;
|
||||
import se.su.dsv.scipro.io.dto.UnitDTO;
|
||||
import se.su.dsv.scipro.io.dto.UnitDTOCollectionWrapper;
|
||||
import se.su.dsv.scipro.io.dto.UserDTO;
|
||||
@ -133,10 +134,26 @@ public class ExternalImporterDaisyImpl implements ExternalImporter {
|
||||
Set<UnitDTO> unitSet = fetchRemoteUnits(new HashMap<String,String>(), HttpRequestSender.REQUEST_TYPE.GET, new UrlProcessor() {
|
||||
@Override
|
||||
String process(final String url){
|
||||
return (url+"/orgunit/4");//This will retrieve DSV as main unit and the unit keywords to add as subunits underneath DSV.
|
||||
return (url+"/orgunit/4/subunits");
|
||||
}
|
||||
});
|
||||
for (UnitDTO u : unitSet) {
|
||||
|
||||
// TOTAL REMAKE
|
||||
|
||||
for (final UnitDTO unit : unitSet){
|
||||
// Check if existing
|
||||
|
||||
Set<SupervisorDTO> supervisorSet = fetchSupervisorsOnUnit(new HashMap<String,String>(), HttpRequestSender.REQUEST_TYPE.GET, new UrlProcessor() {
|
||||
@Override
|
||||
String process(final String url){
|
||||
return (url+"/orgunit/"+unit.id+"/supervisors");
|
||||
}
|
||||
});
|
||||
|
||||
// add supervisors to the current unit
|
||||
|
||||
}
|
||||
/*for (UnitDTO u : unitSet) {
|
||||
if (!u.subunits.isEmpty()) {
|
||||
logger.info("Received " + u.subunits.size() + " subunits from remote");
|
||||
importerFacade.addUnexistingUnitsAsKeywords(u.subunits);
|
||||
@ -147,7 +164,7 @@ public class ExternalImporterDaisyImpl implements ExternalImporter {
|
||||
}
|
||||
} else
|
||||
logger.info("No subunits found");
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -159,12 +176,37 @@ public class ExternalImporterDaisyImpl implements ExternalImporter {
|
||||
return (url+"/orgunit/4/researchAreas");
|
||||
}
|
||||
});
|
||||
logger.info("Received " + areaSet.size() + " research areas from remote");
|
||||
logger.info("Received " + areaSet.size() + " research areas from remote and adding those who not exist to database");
|
||||
if(!areaSet.isEmpty()){
|
||||
importerFacade.addUnexistingResearchAreas(areaSet);
|
||||
}
|
||||
}
|
||||
|
||||
private Set<SupervisorDTO> fetchSupervisorsOnUnit(final Map<String, String> parameters, final HttpRequestSender.REQUEST_TYPE requestType, UrlProcessor urlProcessor) {
|
||||
final String requestUrl = (urlProcessor==null?getRequestUrl():urlProcessor.process(getRequestUrl()));
|
||||
final Set<SupervisorDTO> dtoCache = new HashSet<SupervisorDTO>();
|
||||
final HttpsRequestSender senderProxy = new HttpsRequestSender(new AbstractDtoResponseHandler() {
|
||||
|
||||
@Override
|
||||
public void handleResponse(String response) {
|
||||
logger.info("Response received (from: "+ requestUrl+"): " + response);
|
||||
final SupervisorDTOCollectionWrapper supervisorCollection = asSupervisorCollection(response);
|
||||
if(supervisorCollection.size() == 0){
|
||||
throw new ExternalImportException("No supervisors found in remote");
|
||||
} else {
|
||||
dtoCache.addAll(supervisorCollection.getSupervisors());
|
||||
}
|
||||
logger.info("Received " + supervisorCollection.size() + " supervisor"+(supervisorCollection.size()==1?"":"s")+" from remote");
|
||||
}
|
||||
}, requestUrl, getRequestUser(), getRequestPassword(), parameters, requestType);
|
||||
try{
|
||||
process(senderProxy);
|
||||
} catch (final ExternalImportException eie){
|
||||
logger.warn("No supervisors found");
|
||||
}
|
||||
return dtoCache;
|
||||
}
|
||||
|
||||
private Set<UnitDTO> fetchRemoteUnits(final Map<String,String> parameters,final HttpRequestSender.REQUEST_TYPE requestType,
|
||||
UrlProcessor urlProcessor) {
|
||||
final String requestUrl = (urlProcessor==null?getRequestUrl():urlProcessor.process(getRequestUrl()));
|
||||
@ -285,7 +327,7 @@ public class ExternalImporterDaisyImpl implements ExternalImporter {
|
||||
}else{
|
||||
dtoCache.addAll(areaCollection.getAreas());
|
||||
}
|
||||
logger.info("Recieved " + areaCollection.size() + " research areas"+(areaCollection.size()==1?"":"s")+" from remote");
|
||||
logger.info("Recieved " + areaCollection.size() + " research area"+(areaCollection.size()==1?"":"s")+" from remote");
|
||||
}
|
||||
}, requestUrl, getRequestUser(), getRequestPassword(), parameters, requestType);
|
||||
try{
|
||||
|
Loading…
x
Reference in New Issue
Block a user