178 lines
9.4 KiB
Java
178 lines
9.4 KiB
Java
package eu.eudat.logic.managers;
|
|
|
|
import eu.eudat.commons.scope.user.UserScope;
|
|
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
|
|
import eu.eudat.commons.types.xml.XmlBuilder;
|
|
import eu.eudat.data.DescriptionTemplateEntity;
|
|
import eu.eudat.data.UserCredentialEntity;
|
|
import eu.eudat.data.UserEntity;
|
|
import eu.eudat.logic.services.ApiContext;
|
|
import eu.eudat.query.UserCredentialQuery;
|
|
import gr.cite.commons.web.authz.service.AuthorizationService;
|
|
import gr.cite.tools.data.query.QueryFactory;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.stereotype.Component;
|
|
import org.w3c.dom.Document;
|
|
import org.w3c.dom.Element;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
@Component
|
|
public class UserManager {
|
|
private static final Logger logger = LoggerFactory.getLogger(UserManager.class);
|
|
|
|
private final ApiContext apiContext;
|
|
private final Environment environment;
|
|
private final UserScope userScope;
|
|
private final QueryFactory queryFactory;
|
|
private final AuthorizationService authorizationService;
|
|
|
|
@Autowired
|
|
public UserManager(ApiContext apiContext, Environment environment, UserScope userScope, QueryFactory queryFactory, AuthorizationService authorizationService) {
|
|
this.apiContext = apiContext;
|
|
this.environment = environment;
|
|
this.userScope = userScope;
|
|
this.queryFactory = queryFactory;
|
|
this.authorizationService = authorizationService;
|
|
}
|
|
|
|
public eu.eudat.models.data.user.composite.DatasetProfile generateDatasetProfileModel(DescriptionTemplateEntity profile) {
|
|
Document viewStyleDoc = XmlBuilder.fromXml(profile.getDefinition());
|
|
Element root = (Element) viewStyleDoc.getDocumentElement();
|
|
DefinitionEntity viewstyle = new DefinitionEntity().fromXml(root);
|
|
|
|
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = new eu.eudat.models.data.user.composite.DatasetProfile();
|
|
datasetprofile.buildProfile(viewstyle);
|
|
|
|
return datasetprofile;
|
|
}
|
|
|
|
// public DataTableData<UserListingModel> getPaged(UserInfoTableRequestItem userInfoTableRequestItem) throws Exception {
|
|
// QueryableList<UserEntity> users = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().getWithCriteria(userInfoTableRequestItem.getCriteria()).withHint(HintedModelFactory.getHint(UserListingModel.class));
|
|
// QueryableList<UserEntity> pagedUsers = PaginationManager.applyPaging(users, userInfoTableRequestItem);
|
|
//
|
|
// List<UserListingModel> modelUsers = pagedUsers.select(item -> new UserListingModel().fromDataModel(item));
|
|
// return apiContext.getOperationsContext().getBuilderFactory().getBuilder(DataTableDataBuilder.class).totalCount(users.count()).data(modelUsers).build();
|
|
// }
|
|
|
|
// public List<UserCredential> getCredentials(UUID userId) throws InvalidApplicationException {
|
|
// List<UserCredential> results = new ArrayList<>();
|
|
// UserEntity user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userId);
|
|
// List<UserCredentialEntity> credentials = this.queryFactory.query(UserCredentialQuery.class).userIds(user.getId()).collect();
|
|
// credentials.forEach(credential -> {
|
|
// UserCredential userCredential = new UserCredential();
|
|
// results.add(userCredential);
|
|
// });
|
|
// return results;
|
|
// }
|
|
|
|
// public UserProfile getSingle(UUID userId) throws Exception {
|
|
// UserEntity user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userId);
|
|
// UserProfile profile = new UserProfile().fromDataModel(user);
|
|
// List<Integer> roles = new LinkedList<>();
|
|
// DataManagementPlanCriteria criteria = new DataManagementPlanCriteria();
|
|
// criteria.setAllVersions(false);
|
|
// QueryableList<DmpEntity> items = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria);
|
|
// List<DmpEntity> dmps = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getAuthenticated(items, userId, roles).take(5).toList();
|
|
// profile.setAssociatedDmps(dmps.stream().map(x -> new DataManagementPlan().fromDataModel(x)).collect(Collectors.toList()));
|
|
// return profile;
|
|
// }
|
|
|
|
// public void editRoles(UserListingModel user) throws InvalidApplicationException {
|
|
// UserEntity userInfo = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(user.getId());
|
|
// //userInfo.getUserRoles().stream().forEach(item -> apiContext.getOperationsContext().getDatabaseRepository().getUserRoleDao().delete(item)); //TODO
|
|
// for (String role : user.getAppRoles()) {
|
|
// UserRoleEntity userRole = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserRoleBuilder.class).role(role).userInfo(userInfo).build();
|
|
// apiContext.getOperationsContext().getDatabaseRepository().getUserRoleDao().createOrUpdate(userRole);
|
|
// }
|
|
// }
|
|
|
|
// public void updateSettings(Map<String, Object> settings) throws IOException, InvalidApplicationException {
|
|
// UserEntity userInfo = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(this.userScope.getUserId());
|
|
// apiContext.getOperationsContext().getDatabaseRepository().detachEntity(userInfo);
|
|
// HashMap<String, Object> result =
|
|
// new ObjectMapper().readValue(userInfo.getAdditionalInfo(), HashMap.class);
|
|
// userInfo.setName(settings.entrySet().stream().filter(entry -> entry.getKey().equals("name")).filter(Objects::nonNull).map(entry -> entry.getValue().toString()).findFirst().orElse(userInfo.getName()));
|
|
// settings.remove("name");
|
|
// result.putAll(settings);
|
|
// userInfo.setAdditionalInfo(new JSONObject(result).toString());
|
|
// apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao()
|
|
// .createOrUpdate(userInfo);
|
|
// }
|
|
//
|
|
// public DataTableData<UserListingModel> getCollaboratorsPaged(UserInfoTableRequestItem userInfoTableRequestItem) throws Exception {
|
|
// UserInfoDao userInfoDao = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao();
|
|
// QueryableList<UserEntity> users = userInfoDao.getWithCriteria(userInfoTableRequestItem.getCriteria());
|
|
//
|
|
// List<UserListingModel> colaborators = userInfoDao.getAuthenticated(users, this.userScope.getUserId())
|
|
// .withHint(HintedModelFactory.getHint(UserListingModel.class))
|
|
// .select(colaborator -> new UserListingModel().fromDataModel(colaborator));
|
|
//
|
|
// DataTableData<UserListingModel> dataTableData = new DataTableData<>();
|
|
// dataTableData.setData(colaborators);
|
|
// dataTableData.setTotalCount((long) colaborators.size());
|
|
// return dataTableData;
|
|
// }
|
|
//
|
|
// public ResponseEntity<byte[]> exportToCsv() throws IOException, InvalidApplicationException {
|
|
//
|
|
// this.authorizationService.authorizeForce(Permission.AdminRole);
|
|
//
|
|
// List<UserEntity> users = this.apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().asQueryable().toList();
|
|
// StringBuilder resultBuilder = new StringBuilder();
|
|
// resultBuilder.append("User Id").append(",").append("User Name").append(",").append("User Email").append("\n");
|
|
// users.stream().forEach(user -> resultBuilder.append(user.getId().toString()).append(",")
|
|
// .append(user.getName()).append(",")
|
|
////TODO .append(user.getEmail()).append("\n")
|
|
// );
|
|
// String result = resultBuilder.toString();
|
|
// String fileName = "Users_dump";//dmp.getLabel();
|
|
// fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", "");
|
|
// String uuid = UUID.randomUUID().toString();
|
|
// File file = new File(this.environment.getProperty("temp.temp") + uuid + ".csv");
|
|
// OutputStream output = new FileOutputStream(file);
|
|
// try {
|
|
//// mapper.writeValue(file, rdaExportModel);
|
|
// output.write(result.getBytes());
|
|
// output.flush();
|
|
// output.close();
|
|
// } catch (IOException e) {
|
|
// logger.error(e.getMessage(), e);
|
|
// }
|
|
//
|
|
// InputStream resource = new FileInputStream(file);
|
|
// HttpHeaders responseHeaders = new HttpHeaders();
|
|
// responseHeaders.setContentLength(file.length());
|
|
// responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
// responseHeaders.set("Content-Disposition", "attachment;filename=" + fileName + ".csv");
|
|
// responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition");
|
|
// responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type");
|
|
//
|
|
// byte[] content = org.apache.poi.util.IOUtils.toByteArray(resource);
|
|
// resource.close();
|
|
// Files.deleteIfExists(file.toPath());
|
|
// return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK);
|
|
// }
|
|
//
|
|
// public UserProfile getFromEmail(String email) throws InvalidApplicationException {
|
|
// UserEntity user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().asQueryable().where((builder, root) -> builder.equal(root.get("email"), email)).getSingle();
|
|
// return new UserProfile().fromDataModel(user);
|
|
// }
|
|
//
|
|
// public Long countActiveUsers(){ //TODO: Authn
|
|
// return 0L;
|
|
// //return apiContext.getOperationsContext().getDatabaseRepository().getUserTokenDao().asQueryable().where(((builder, root) -> builder.greaterThan(root.get("expiresAt"), new Date()))).count();
|
|
// }
|
|
//
|
|
// public Long countAllUsers() throws InvalidApplicationException {
|
|
// return apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().asQueryable().count();
|
|
// }
|
|
|
|
}
|