Skip to content
Merged

0.3.9 #2109

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
<module>turing-db</module>
<module>turing-nutch</module>
<module>turing-cms</module>
<module>turing-wem</module>
<module>turing-aem</module>
<module>turing-web-crawler</module>
<module>turing-sprinklr</module>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -397,34 +397,46 @@ private void indexObject(TurAemObject aemObject, TurCmsModel turCmsModel,
if (!delivered || aemObject.isDelivered()) {
final Locale locale = TurAemCommonsUtils.getLocaleFromAemObject(turAemSourceContext, aemObject);
if (objectNeedBeIndexed(aemObject, turAemSourceContext)) {
if (!dryRun) {
createIndexingStatus(aemObject, locale, turAemSourceContext);
}
sendToTuringToBeIndexed(aemObject, turCmsModel, turSNAttributeSpecList, locale,
turAemSourceContext);
sendIndex(aemObject, turCmsModel, turSNAttributeSpecList, turAemSourceContext, locale);
} else {
if (objectNeedBeReIndexed(aemObject, turAemSourceContext)) {
if (!dryRun) {
turAemIndexingDAO.findByAemIdAndGroup(aemObject.getPath(), turAemSourceContext.getGroup())
.ifPresent(turAemIndexingsList ->
log.info("ReIndexed {} object ({}) from {} to {} and deltaId = {}",
aemObject.getPath(), turAemSourceContext.getGroup(),
turAemIndexingsList.getFirst().getDate(),
getDeltaDate(aemObject, turAemSourceContext), deltaId));
}
sendToTuringToBeIndexed(aemObject, turCmsModel, turSNAttributeSpecList, locale,
turAemSourceContext);
}
if (!dryRun) {
updateIndexingStatus(aemObject, locale, turAemSourceContext);
}
sendReindex(aemObject, turCmsModel, turSNAttributeSpecList, turAemSourceContext, locale);
}
} else {
log.info("Unpublished {} object ({}) deltaId = {}",
aemObject.getPath(), turAemSourceContext.getGroup(), deltaId);
}
}

private void sendReindex(TurAemObject aemObject, TurCmsModel turCmsModel,
List<TurSNAttributeSpec> turSNAttributeSpecList,
TurAemSourceContext turAemSourceContext, Locale locale) {
if (objectNeedBeReIndexed(aemObject, turAemSourceContext)) {
if (!dryRun) {
turAemIndexingDAO.findByAemIdAndGroup(aemObject.getPath(), turAemSourceContext.getGroup())
.ifPresent(turAemIndexingsList ->
log.info("ReIndexed {} object ({}) from {} to {} and deltaId = {}",
aemObject.getPath(), turAemSourceContext.getGroup(),
turAemIndexingsList.getFirst().getDate(),
getDeltaDate(aemObject, turAemSourceContext), deltaId));
}
sendToTuringToBeIndexed(aemObject, turCmsModel, turSNAttributeSpecList, locale,
turAemSourceContext);
}
if (!dryRun) {
updateIndexingStatus(aemObject, locale, turAemSourceContext);
}
}

private void sendIndex(TurAemObject aemObject, TurCmsModel turCmsModel,
List<TurSNAttributeSpec> turSNAttributeSpecList, TurAemSourceContext turAemSourceContext,
Locale locale) {
if (!dryRun) {
createIndexingStatus(aemObject, locale, turAemSourceContext);
}
sendToTuringToBeIndexed(aemObject, turCmsModel, turSNAttributeSpecList, locale,
turAemSourceContext);
}

private void createIndexingStatus(TurAemObject aemObject, Locale locale, TurAemSourceContext turAemSourceContext) {
turAemIndexingDAO.save(createTurAemIndexing(aemObject, locale, turAemSourceContext));
log.info("Created status: {} object ({}) and deltaId = {}", aemObject.getPath(), turAemSourceContext.getGroup(), deltaId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,13 @@
@Getter
@Component
public class TurAemIndexerTool {
public static final String JCR_TITLE = "jcr:title";
public static final String JCR_CONTENT = "jcr:content";
public static final String JCR_PRIMARY_TYPE = "jcr:primaryType";
public static final String CONTENT_FRAGMENT = "content-fragment";
public static final String STATIC_FILE = "static-file";
public static final String SITE = "site";
public static final String DATA_MASTER = "data/master";
public static final String METADATA = "metadata";
public static final String JCR = "jcr:";
public static final String ID = "id";
public static final String STATIC_FILE_SUB_TYPE = "STATIC_FILE";
public static final String ONCE = "once";
public static final String ID_ATTR = "id";
Expand All @@ -60,7 +57,6 @@ public class TurAemIndexerTool {
public static final String CQ = "cq:";
private static AtomicInteger processed = new AtomicInteger(0);
private static final AtomicInteger currentPage = new AtomicInteger(0);
private static long start;
private final String deltaId = UUID.randomUUID().toString();
private final Set<String> visitedLinks = new HashSet<>();
private final Queue<String> remainingLinks = new LinkedList<>();
Expand Down Expand Up @@ -310,7 +306,6 @@ private void itemsProcessedStatus() {
}
if (processed.get() >= jobSize) {
processed = new AtomicInteger(0);
start = System.currentTimeMillis();
} else {
processed.incrementAndGet();
}
Expand Down
94 changes: 56 additions & 38 deletions turing-app/src/main/java/com/viglet/turing/api/auth/TurUserAPI.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2016-2022 the original author or authors.
* Copyright (C) 2016-2024 the original author or authors.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
Expand Down Expand Up @@ -39,13 +39,23 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
* @author Alexandre Oliveira
*
* @since 0.3.2
*/
@RestController
@RequestMapping("/api/v2/user")
@Tag(name = "User", description = "User API")
public class TurUserAPI {

public static final String ADMIN = "admin";
public static final String ADMINISTRATOR = "Administrator";
public static final String PREFERRED_USERNAME = "preferred_username";
public static final String GIVEN_NAME = "given_name";
public static final String FAMILY_NAME = "family_name";
private final PasswordEncoder passwordEncoder;
private final TurUserRepository turUserRepository;
private final TurGroupRepository turGroupRepository;
Expand All @@ -70,63 +80,71 @@ public List<TurUser> turUserList() {
public TurCurrentUser turUserCurrent() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
boolean isAdmin = false;
String currentUserName = authentication.getName();
TurCurrentUser turCurrentUser = new TurCurrentUser();
if (turConfigProperties.isKeycloak()) {
OAuth2User user = ((OAuth2User) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
turCurrentUser.setUsername(user.getAttribute("preferred_username"));
turCurrentUser.setFirstName(user.getAttribute("given_name"));
turCurrentUser.setLastName(user.getAttribute("family_name"));
turCurrentUser.setAdmin(true);
return keycloakUser();
} else {
TurUser turUser = turUserRepository.findByUsername(currentUserName);
turUser.setPassword(null);
if (turUser.getTurGroups() != null) {
for (TurGroup turGroup : turUser.getTurGroups()) {
if (turGroup.getName().equals("Administrator")) {
isAdmin = true;
break;
}
}
return regularUser(authentication.getName());
}
}
return null;
}

private TurCurrentUser regularUser(String currentUserName) {
boolean isAdmin = false;
TurUser turUser = turUserRepository.findByUsername(currentUserName);
turUser.setPassword(null);
if (turUser.getTurGroups() != null) {
for (TurGroup turGroup : turUser.getTurGroups()) {
if (turGroup.getName().equals(ADMINISTRATOR)) {
isAdmin = true;
break;
}
turCurrentUser.setUsername(turUser.getUsername());
turCurrentUser.setFirstName(turUser.getFirstName());
turCurrentUser.setLastName(turUser.getLastName());
turCurrentUser.setAdmin(isAdmin);
}
return turCurrentUser;
}
TurCurrentUser turCurrentUser = new TurCurrentUser();
turCurrentUser.setUsername(turUser.getUsername());
turCurrentUser.setFirstName(turUser.getFirstName());
turCurrentUser.setLastName(turUser.getLastName());
turCurrentUser.setAdmin(isAdmin);
return turCurrentUser;
}

return null;
private static TurCurrentUser keycloakUser() {
OAuth2User user = ((OAuth2User) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
TurCurrentUser turCurrentUser = new TurCurrentUser();
turCurrentUser.setUsername(user.getAttribute(PREFERRED_USERNAME));
turCurrentUser.setFirstName(user.getAttribute(GIVEN_NAME));
turCurrentUser.setLastName(user.getAttribute(FAMILY_NAME));
turCurrentUser.setAdmin(true);
return turCurrentUser;
}

@GetMapping("/{username}")
public TurUser turUserEdit(@PathVariable String username) {
TurUser turUser = turUserRepository.findByUsername(username);
if (turUser != null) {
turUser.setPassword(null);
return Optional.ofNullable(turUser).map(user -> {
user.setPassword(null);
List<TurUser> turUsers = new ArrayList<>();
turUsers.add(turUser);
turUser.setTurGroups(turGroupRepository.findByTurUsersIn(turUsers));
}
return turUser;
turUsers.add(user);
user.setTurGroups(turGroupRepository.findByTurUsersIn(turUsers));
return user;
}).orElseGet(TurUser::new);
}

@PutMapping("/{username}")
public TurUser turUserUpdate(@PathVariable String username, @RequestBody TurUser turUser) {
TurUser turUserEdit = turUserRepository.findByUsername(username);
if (turUserEdit != null) {
turUserEdit.setFirstName(turUser.getFirstName());
turUserEdit.setLastName(turUser.getLastName());
turUserEdit.setEmail(turUser.getEmail());
return Optional.ofNullable(turUserEdit).map(userEdit -> {
userEdit.setFirstName(turUser.getFirstName());
userEdit.setLastName(turUser.getLastName());
userEdit.setEmail(turUser.getEmail());
if (turUser.getPassword() != null && !turUser.getPassword().trim().isEmpty()) {
turUserEdit.setPassword(passwordEncoder.encode(turUser.getPassword()));
userEdit.setPassword(passwordEncoder.encode(turUser.getPassword()));
}
turUserEdit.setTurGroups(turUser.getTurGroups());
userEdit.setTurGroups(turUser.getTurGroups());
turUserRepository.save(turUserEdit);
}
return turUserEdit;
return userEdit;
}).orElseGet(TurUser::new);
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,9 @@ public List<TurSNSiteFieldExt> turSNSiteFieldUpdate(@PathVariable String snSiteI
.ifPresent(fieldsFromRequest -> fieldExtension
.setFacetPosition(fieldsFromRequest.getFacetPosition())));
turSNSiteFieldExtRepository.saveAll(fieldExtensions);
return fieldExtensions.stream().sorted(Comparator.comparing(TurSNSiteFieldExt::getFacetPosition)).
collect(Collectors.toList());
return fieldExtensions.stream().sorted(Comparator.comparing(TurSNSiteFieldExt::getFacetPosition))
.toList();

})
.orElseGet(Collections::emptyList);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2016-2022 the original author or authors.
* Copyright (C) 2016-2022 the original author or authors.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
Expand Down Expand Up @@ -57,7 +57,6 @@ public TurSNMergeProvidersProcess(TurSolrInstanceProcess turSolrInstanceProcess,
this.turSNSiteMergeProvidersRepository = turSNSiteMergeProvidersRepository;
}

@SuppressWarnings("unchecked")
public Map<String, Object> mergeDocuments(TurSNSite turSNSite,
Map<String, Object> queueDocumentAttrs, Locale locale) {
List<TurSNSiteMergeProviders> turSNSiteMergeProvidersList = turSNSiteMergeProvidersRepository
Expand All @@ -70,7 +69,7 @@ public Map<String, Object> mergeDocuments(TurSNSite turSNSite,
if (providerAttribute instanceof String stringValue) {
queueDocumentProviders.add(stringValue);
} else if (providerAttribute instanceof ArrayList<?> arrayListValue) {
queueDocumentProviders.addAll((Collection<? extends String>) arrayListValue);
queueDocumentProviders.addAll((Collection<String>) arrayListValue);
}

if (queueDocumentProviders.contains(turSNSiteMergeProviders.getProviderFrom())) {
Expand Down Expand Up @@ -121,8 +120,8 @@ private Map<String, Object> mergeTo(Map<String, Object> queueDocumentAttrs,
queueDocumentAttrs, turSNSiteMergeProviders);
} else if (hasSolrDocuments(resultsFrom)) {
TurSEResult turSEResultFrom = TurSolrUtils.createTurSEResultFromDocument(resultsFrom.getFirst());
Map<String, Object> mergedDocumentAttributes = doMergeContent(turSEResultFrom.getFields(), queueDocumentAttrs,
turSNSiteMergeProviders);
Map<String, Object> mergedDocumentAttributes = doMergeContent(turSEResultFrom.getFields(),
queueDocumentAttrs, turSNSiteMergeProviders);
deIndexSolrDocuments(turSNSiteMergeProviders, resultsFrom);
return mergedDocumentAttributes;
}
Expand Down Expand Up @@ -198,8 +197,7 @@ private void addOverwrittenAttributesToSolrDocument(Map<String, Object> queueDoc
});
}

@SuppressWarnings("unchecked")
private void addProviderToSEDocument(Map<String, Object> documentAttributes, String providerName) {
private void addProviderToSEDocument(Map<String, Object> documentAttributes, String providerName) {
Object providerAttribute = documentAttributes.get(TurSNConstants.PROVIDER_ATTRIBUTE);
List<String> providers = new ArrayList<>();
if (providerAttribute instanceof ArrayList) {
Expand Down
Loading
Loading