79 lines
4.6 KiB
Java
79 lines
4.6 KiB
Java
package eu.eudat.managers;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import eu.eudat.dao.entities.ProjectDao;
|
|
import eu.eudat.dao.entities.UserInfoDao;
|
|
import eu.eudat.models.criteria.ProjectCriteria;
|
|
import eu.eudat.models.external.ExternalListingItem;
|
|
import eu.eudat.models.external.ExternalSourcesItemModel;
|
|
import eu.eudat.models.external.ProjectsExternalSourcesModel;
|
|
import eu.eudat.models.helpers.DataTableData;
|
|
import eu.eudat.models.project.Project;
|
|
import eu.eudat.models.project.ProjectCriteriaRequest;
|
|
import eu.eudat.models.project.ProjectTableRequest;
|
|
import eu.eudat.models.security.Principal;
|
|
import eu.eudat.proxy.config.exceptions.HugeResultSet;
|
|
import eu.eudat.proxy.config.exceptions.NoURLFound;
|
|
import eu.eudat.proxy.fetching.RemoteFetcher;
|
|
import eu.eudat.queryable.QueryableList;
|
|
import eu.eudat.utilities.builders.DomainModelConverter;
|
|
|
|
public class ProjectManager {
|
|
|
|
public DataTableData<eu.eudat.models.project.Project> getPaged(ProjectDao projectRepository, ProjectTableRequest projectTableRequest) throws IllegalAccessException, InstantiationException{
|
|
QueryableList<eu.eudat.entities.Project> items = projectRepository.getWithCriteria(projectTableRequest.getCriteria());
|
|
QueryableList<eu.eudat.entities.Project> pagedItems = PaginationManager.applyPaging(items,projectTableRequest);
|
|
List<eu.eudat.models.project.Project> projects = new DomainModelConverter<eu.eudat.entities.Project, Project>().fromDataModel(pagedItems.toList(), eu.eudat.models.project.Project.class);
|
|
DataTableData<eu.eudat.models.project.Project> dataTable = new DataTableData<eu.eudat.models.project.Project>();
|
|
dataTable.setData(projects);
|
|
dataTable.setTotalCount(items.count());
|
|
return dataTable;
|
|
}
|
|
|
|
public eu.eudat.models.project.Project getSingle(ProjectDao projectRepository, String id) throws InstantiationException, IllegalAccessException{
|
|
eu.eudat.models.project.Project project = new eu.eudat.models.project.Project();
|
|
project.fromDataModel(projectRepository.find(UUID.fromString(id)));
|
|
return project;
|
|
}
|
|
|
|
public eu.eudat.entities.Project inactivate(ProjectDao projectRepository,String id) throws InstantiationException, IllegalAccessException{
|
|
eu.eudat.entities.Project project = projectRepository.find(UUID.fromString(id));
|
|
project.setStatus(Project.Status.DELETED.getValue());
|
|
project = projectRepository.createOrUpdate(project);
|
|
return project;
|
|
}
|
|
|
|
public List<eu.eudat.models.project.Project> getCriteriaWithExternal(ProjectDao projectRepository, ProjectCriteriaRequest projectCriteria,RemoteFetcher remoteFetcher) throws IllegalAccessException, InstantiationException, HugeResultSet, NoURLFound {
|
|
QueryableList<eu.eudat.entities.Project> items = projectRepository.getWithCriteria(projectCriteria.getCriteria());
|
|
List<eu.eudat.models.project.Project> projects = new DomainModelConverter<eu.eudat.entities.Project, Project>().fromDataModel(items.toList(), eu.eudat.models.project.Project.class);
|
|
List<Map<String,String>> remoteRepos = remoteFetcher.getProjects(projectCriteria.getCriteria().getLike());
|
|
ProjectsExternalSourcesModel projectsExternalSourcesModel = new ProjectsExternalSourcesModel().fromExternalItem(remoteRepos);
|
|
for(ExternalSourcesItemModel externalListingItem:projectsExternalSourcesModel){
|
|
eu.eudat.models.project.Project project = new eu.eudat.models.project.Project();
|
|
project.setReference(externalListingItem.getRemoteId());
|
|
project.setLabel(externalListingItem.getName());
|
|
project.setDescription(externalListingItem.getDescription());
|
|
project.setUri(externalListingItem.getUri());
|
|
project.setAbbreviation(externalListingItem.getAbbreviation());
|
|
project.setStatus((short)0);
|
|
projects.add(project);
|
|
}
|
|
return projects;
|
|
}
|
|
|
|
public List<eu.eudat.models.project.Project> getCriteria(ProjectDao projectRepository, ProjectCriteriaRequest projectCriteria,RemoteFetcher remoteFetcher) throws IllegalAccessException, InstantiationException, HugeResultSet, NoURLFound {
|
|
QueryableList<eu.eudat.entities.Project> items = projectRepository.getWithCriteria(projectCriteria.getCriteria());
|
|
List<eu.eudat.models.project.Project> projects = new DomainModelConverter<eu.eudat.entities.Project, Project>().fromDataModel(items.toList(), eu.eudat.models.project.Project.class);
|
|
return projects;
|
|
}
|
|
|
|
public static void createOrUpdate(ProjectDao projectRepository, UserInfoDao userInfoRepository, eu.eudat.models.project.Project project, Principal principal){
|
|
eu.eudat.entities.Project projectEntity = project.toDataModel();
|
|
projectEntity.setCreationUser(userInfoRepository.find(principal.getId()));
|
|
projectRepository.createOrUpdate(projectEntity);
|
|
}
|
|
}
|